亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

java web利用mvc結構實現簡單聊天室功能

2019-11-14 23:28:33
字體:
來源:轉載
供稿:網友
java web利用mvc結構實現簡單聊天室功能

 簡單聊天室采用各種內部對象不適用數據庫實現。

一個聊天室要實現的基本功能是:

1.用戶登錄進入聊天室,

   2.用戶發言

   3.用戶可以看見別人發言

剛才算是簡單的需求分析了,現在就應該是進行mvc結構的設計:

  1.視圖,有登陸頁面login.jsp,聊天頁面chat.jsp,其中chat.jsp利用框架實現,包括兩部分,用戶發言sendMessage.jsp和聊天信息的查看content.jsp;

  2.模型,包括聊天信息的顯示(類Message)和聊天信息的管理(類MessageService);

  3.控制器,登錄功能的控制器LoginServlet,添加消息的控制器AddMessageServlet。

  整個程序實現的大致流程是這樣的:每當一個用戶登錄聊天室,根據用戶的userid把用戶添加進application對象的ArrayList中,在application中保存的是當前所有在聊天的用戶;用戶登陸成功之后,通過控制器LoginServlet把application對象遍歷,輸出所有的消息,消息存儲在application(消息格式:用戶名+消息);用戶發言,通過控制器AddMessageServlet,先在session中取出用戶名,把當前消息放在application中,保存更新后的消息,跳轉到聊天頁面。

精簡源代碼:

1.登陸界面login.jsp

 1 <body> 2       <h1>歡迎進入聊天室</h1> 3       <form action="login"> 4           用戶名:<input type="text" name="userid"><br> 5            6           <input type="submit" value="進入"> <input type="reset" value="重寫"> 7            8       </form> 9   10   </body>
View Code

2.聊天界面整體框架chat.jsp

<frameset rows="*,20%">    <frame name="content" src="content.jsp">    <frame name="sendMessage" target="content" src="sendMessage.jsp">    <noframes>        <body>            <p>此網頁使用了框架,但你的瀏覽器不支持框架</p>        </body>    </noframes></frameset>
View Code

3.用戶發言sendMessage.jsp

1 <body>2     <form action="addmessage" target="content">3         發言:<input type="text" name="info"> <input type="submit"4             value="確定">5     </form>6 </body>
View Code

4.顯示聊天信息

 1 <body> 2 <%   3    //頁面每隔1秒自動刷新一遍       4   response.setHeader("refresh","1");   5 %> 6  7     <c:forEach items="${allMessage}" var="message"> 8         ${message.userid } 9         在${message.time }說:<font color="green">${message.info }</font>10         <br>11     </c:forEach>12 </body>
View Code

5.登錄控制器LoginServlet

 1 public class LoginServlet extends HttpServlet { 2  3     public void doGet(HttpServletRequest request, HttpServletResponse response) 4             throws ServletException, IOException { 5         // 獲取用戶輸入 6         String userid = request.getParameter("userid"); 7         userid = new String(userid.getBytes("utf-8")); 8  9         // 獲取application對象10         ServletContext application = this.getServletContext();11         // 獲取application對象中user12         ArrayList<String> users = (ArrayList<String>) application13                 .getAttribute("users");14 15         // 判斷用戶名是否存在16         if (users != null && users.contains(userid)) {17             request.setAttribute("errorinfo", "用戶" + userid + "已經存在");18             RequestDispatcher rd;19             rd = request.getRequestDispatcher("login.jsp");20             rd.forward(request, response);21         } else {22             if (users == null)// 如果當前application中沒有user,初始化user對象23             {24                 users = new ArrayList<String>();25             }26             users.add(userid);27             application.setAttribute("users", users);28 29             // 為每一個用戶設置一個session30             HttpSession session = request.getSession(true);31             session.setAttribute("userid", userid);32 33             response.sendRedirect("chat.jsp");34 35         }36 37     }38 39     public void doPost(HttpServletRequest request, HttpServletResponse response)40             throws ServletException, IOException {41         doGet(request, response);42     }43 44 }
View Code

6.添加消息的控制器AddMessageServlet

 1 public class AddMessageServlet extends HttpServlet { 2  3     public void doGet(HttpServletRequest request, HttpServletResponse response) 4             throws ServletException, IOException { 5  6         // 從request中取出用戶的個人信息 7  8         HttpSession session = request.getSession(true); 9         String userid = (String) session.getAttribute("userid");10 11         // 從request對象中取出用戶新增的聊天信息12 13         String info = request.getParameter("info");14         info = new String(info.getBytes("utf-8"));15 16         // 取出所有的聊天信息17         ServletContext application = this.getServletContext();18         ArrayList<Message> allMessage = (ArrayList<Message>) application19                 .getAttribute("allMessage");20 21         // 創建消息對象22         Message message = new Message(userid, info);23 24         // 創建業務對象25         MessageService service = new MessageService(allMessage);26 27         // 調用業務邏輯28         service.addMessages(message);29 30         // 保存更新后的消息31         application.setAttribute("allMessage", service.getAllMessages());32 33         // 轉向聊天頁面34         response.sendRedirect("content.jsp");35 36     }37 38     public void doPost(HttpServletRequest request, HttpServletResponse response)39             throws ServletException, IOException {40         doGet(request, response);41     }42 43 }
View Code

7.聊天信息Message.java

 1 //聊天信息的表示 2 public class Message { 3  PRivate String userid; 4   5  private String info; 6   7  public Message(String userid,String info) 8  { 9         this.userid = userid;10         //this.sex=sex;11         this.info=info;12         this.time=(new SimpleDateFormat("hh:mm:ss")).format(new Date());//將時間格式化13      14  }15  public String getUserid() {16     return userid;17 }18 public void setUserid(String userid) {19     this.userid = userid;20 }21 22 public String getInfo() {23     return info;24 }25 public void setInfo(String info) {26     this.info = info;27 }28 public String getTime() {29     return time;30 }31 public void setTime(String time) {32     this.time = time;33 }34 private String time;35  36 }
View Code

8.聊天信息管理MessageService.java

 1 public class MessageService { 2     private ArrayList<Message> allMessages; 3     public MessageService(ArrayList<Message> allMessages) 4     { 5         this.allMessages=allMessages; 6     } 7     public ArrayList<Message> getAllMessages() 8     { 9         return allMessages;10     }11     12     public void addMessages(Message message)13     {14         //先判斷聊天信息列表是否為空,為空則新建聊天列表15         if(allMessages==null)16         {17             allMessages=new ArrayList<Message>();18         }19         else20         {21             allMessages.add(0,message);//將指定的元素插入此列表中的指定位置。向右移動當前位于該位置的元素(如果有)以及所有后續元素(將其索引加 1)。 22         }23     }24 25 }
View Code

收獲:通過這么一個小小的web程序,加深了對mvc模式的理解。

mvc的傳值方式(個人理解):視圖層通過表單提交的方式把信息放在request對象中,在控制器中通過request對象獲取視圖層的數據,獲取的數據經過模型層的業務邏輯處理,把相應的結果放在response對象中傳回瀏覽器顯示在視圖中。

  小知識點:

    application對象只有一個,每一個用戶都有自己的session,每個用戶的每個請求都對應著一個新的request對象(request只能在一次請求時共享信息)。

    標準標簽庫的使用:循環輸出<c:forEachvar="變量名"items="集合對象">循環體</c:forEach>

   最后,部署自己的應用到服務器下就可以使用了?!?/p>


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产91精品不卡视频| 亚洲少妇中文在线| 色老头一区二区三区在线观看| 国产精品久久久久久av下载红粉| 最近免费中文字幕视频2019| 国产精品久久久久久久久免费看| 91av在线看| 日韩欧美在线国产| 日韩精品极品视频| 国产精品高潮在线| 日本精品性网站在线观看| 久久久久久久一| 中文字幕在线看视频国产欧美在线看完整| 91九色在线视频| 77777亚洲午夜久久多人| 国产免费一区二区三区香蕉精| 欧美在线观看视频| 性色av一区二区咪爱| 成人黄色生活片| 国产极品精品在线观看| 亚洲精品免费在线视频| 国产精品xxxxx| 色午夜这里只有精品| 久久偷看各类女兵18女厕嘘嘘| 色香阁99久久精品久久久| 国产亚洲精品一区二555| 国产亚洲精品久久久久动| 91精品综合视频| 伊是香蕉大人久久| 美女扒开尿口让男人操亚洲视频网站| 影音先锋欧美在线资源| 国产精品久久久久久久久久小说| 国模视频一区二区三区| 日韩亚洲欧美中文高清在线| 国产一区私人高清影院| 日韩不卡在线观看| 精品久久中文字幕| 国产精品视频永久免费播放| 高清欧美一区二区三区| 久久九九全国免费精品观看| 国产91精品不卡视频| 久久精品一区中文字幕| 色婷婷综合久久久久| zzijzzij亚洲日本成熟少妇| 九九热99久久久国产盗摄| 亚洲久久久久久久久久久| 91精品国产综合久久香蕉922| 播播国产欧美激情| 亚洲影院污污.| 欧美性猛交xxxx乱大交蜜桃| 久久成年人免费电影| 一区二区三区在线播放欧美| 日韩最新av在线| 北条麻妃在线一区二区| 国产一区二区三区在线观看网站| xxxxx成人.com| 日韩视频在线观看免费| 国产成人精品日本亚洲| 8090成年在线看片午夜| 最新亚洲国产精品| 国产精品h在线观看| 日韩精品极品视频免费观看| 久久理论片午夜琪琪电影网| 亚洲自拍小视频免费观看| 久久香蕉国产线看观看av| 粉嫩av一区二区三区免费野| 亚洲国产日韩欧美在线图片| 亚州av一区二区| 精品国产电影一区| 91九色国产社区在线观看| 国产成人免费91av在线| 在线播放国产一区中文字幕剧情欧美| 日韩第一页在线| 久久久久久久久久久成人| 日韩欧美在线中文字幕| 午夜精品在线视频| 国产999精品视频| 亚洲乱码一区av黑人高潮| 亚洲国产高潮在线观看| 色yeye香蕉凹凸一区二区av| 91精品国产99久久久久久| 日韩一区二区福利| 欧美电影免费观看大全| 国产在线精品成人一区二区三区| 中文字幕日韩精品有码视频| 国产精品99蜜臀久久不卡二区| 综合久久五月天| 欧美日本高清视频| 欧美—级高清免费播放| 久久精品久久久久久国产 免费| 国产精品久久久久久超碰| 精品毛片网大全| 美女视频久久黄| 亚洲大胆人体视频| 欧美一级电影在线| 精品免费在线观看| 久久人人爽人人| 日本在线观看天堂男亚洲| 精品视频在线播放免| 国产一区二区三区在线免费观看| 最近2019中文字幕大全第二页| 欧美激情综合色综合啪啪五月| 日韩精品久久久久久福利| 国产精品稀缺呦系列在线| 91久久久国产精品| 色多多国产成人永久免费网站| 国产性猛交xxxx免费看久久| 久久国产精品久久久| 亚洲网址你懂得| 日韩最新在线视频| 91精品国产91久久久久久最新| 国产精品私拍pans大尺度在线| 国产午夜精品免费一区二区三区| 欧美专区福利在线| 欧美巨乳美女视频| 亚洲精品一区二区在线| 国产一区二区三区三区在线观看| 蜜臀久久99精品久久久无需会员| 大胆欧美人体视频| 欧美富婆性猛交| 国产精品免费一区二区三区都可以| 国产成人鲁鲁免费视频a| 精品av在线播放| 精品国产91久久久久久| 伊人精品在线观看| 在线视频欧美日韩| 国产精品一香蕉国产线看观看| 日韩中文字幕精品| 国产日韩欧美在线| 国产精品国内视频| 97视频在线看| 欧美多人爱爱视频网站| 日韩av一区在线| 欧美日本啪啪无遮挡网站| 97久久精品人人澡人人爽缅北| 国产一区二区三区在线视频| 九九精品在线视频| 国产精品白丝av嫩草影院| 国产精品亚洲美女av网站| 国产欧美va欧美va香蕉在| 欧洲成人免费aa| 91在线高清免费观看| 中文字幕不卡在线视频极品| 欧美黑人性视频| 日韩专区在线播放| 亲子乱一区二区三区电影| 福利一区福利二区微拍刺激| 亚洲精品日韩激情在线电影| 国产精品高清网站| 欧美亚洲视频在线看网址| 久久精品精品电影网| 亚洲加勒比久久88色综合| 久久综合免费视频影院| 亚洲欧美国内爽妇网| 国产精品高精视频免费| 国产精品高精视频免费| 成人性生交大片免费看小说| 久久九九全国免费精品观看| 一区二区日韩精品| 欧美日韩国产影院| 欧美二区在线播放| 亚洲精品国产综合区久久久久久久| 久久99亚洲热视| 欧美日韩亚洲网|