日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > windows >内容正文

windows

java_OA管理系统(一):Servlet总结案例仿网络聊天室

發布時間:2025/3/21 windows 56 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java_OA管理系统(一):Servlet总结案例仿网络聊天室 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

因為我們學校的軟件聯盟要為我們校區開發一個OA系統,為此我將其所需要的一些技術進行匯總,以便web組組員開發所用.

第一篇是關于Servlet的一個匯總案例,算是開個簡單的小頭.

一.總述

代碼來源于,我在某著名網校(tzedu)學習時,老師講的匯總案例--仿網絡聊天室,

實現功能

1.登錄 2.發送聊天信息與QQ表情 3.臟話屏蔽

知識要點:

1.jsp工程文件目錄 2.servlet執行 3.web.xml文件基本配置 4.jsp動態創建網頁 5.jsp拼接路徑 6,請求,表單的亂碼處理 7.seesion 8,application


項目文件結構:


文件結構解釋:

1.index.jsp登陸界面

2.jframe.jsp網絡聊天室,的框架頁面

3.send.jsp發送消息界面

4.ShowMsg.java,創建消息展示界面


5.OnlineServlet.jsp:創建登陸者頁面

6.InitServlet.jsp.服務器啟動時執行,內存中創建list(本案例中用來存儲登陸人信息與聊天記錄)(<load-on-startup>0</load-on-startup>)

7.SendServlet(發送請求),LoginServlet(登錄)

8.images文件夾:存儲表情圖片.

二.init創建List

web.xml配置如下:

<servlet><servlet-name>init</servlet-name><servlet-class>com.tz.util.InitServlet</servlet-class><load-on-startup>0</load-on-startup>??<span style="white-space:pre"> </span><!-- load-on-startup元素標記容器是否在啟動的時候就加載這個servlet(實例化并調用其init()方法)。 --><span style="white-space:pre"> </span><!-- 當值為0或者大于0時,表示容器在應用啟動時就加載并初始化這個servlet --><span style="white-space:pre"> </span><!-- 詳細的可以去看這個網址:http://www.blogjava.net/xzclog/archive/2011/09/29/359789.html --> </servlet>

InitServlet.jsp

/*** 初始化servlet* 設置一個appliction屬性* 會隨著Tomcat啟動而加載,無需訪問,但是需要配置才行**/ @SuppressWarnings("serial") public class InitServlet extends HttpServlet{public void init() throws ServletException {//獲得上下文ServletContext application = this.getServletContext();//第一次訪問的時候就創建一個 list存入上下文,用于獲取存儲用戶的多條聊天記錄List<String> list = new ArrayList<String>();application.setAttribute("msglist", list);//用于獲取用戶信息List<String> userList = new ArrayList<String>();application.setAttribute("userlist", userList);} }

項目中的存儲:

1.各頁面及各jsp,xml文件以及QQ表情(images)文件夾 2.內存中的:兩個list,?msglist and?userlist------>存儲在application:在一個應用服務器范圍內有效 3.等等

三.登錄界面

表單代碼如下

<form action="login" method="post" ><input type="text" name = "username"><input type="submit" value="登陸"></form>

web.xml配置文件

<servlet><servlet-name>LoginServlet</servlet-name><servlet-class>com.tz.util.LoginServlet</servlet-class></servlet><servlet-mapping><servlet-name>LoginServlet</servlet-name><url-pattern>/login</url-pattern></servlet-mapping>

LoginServlet.jsp

/*** 初始化servlet* 設置一個appliction屬性* 會隨著Tomcat啟動而加載,無需訪問,但是需要配置才行**/ @SuppressWarnings("serial") public class InitServlet extends HttpServlet{public void init() throws ServletException {//獲得上下文ServletContext application = this.getServletContext();//第一次訪問的時候就創建一個 list存入上下文,用于獲取存儲用戶的多條聊天記錄List<String> list = new ArrayList<String>();application.setAttribute("msglist", list);//用于獲取用戶信息List<String> userList = new ArrayList<String>();application.setAttribute("userlist", userList);//對于上下文不熟悉的,請自行百度<span style="font-family: Arial, Helvetica, sans-serif;">ServletContext;</span>} }

四.jframe部分


<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <% String path = request.getContextPath(); String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; %><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html><head><base href="<%=basePath%>"> // jsp設置href <title>QQ聊天窗口</title><meta http-equiv="pragma" content="no-cache"><meta http-equiv="cache-control" content="no-cache"><meta http-equiv="expires" content="0"> <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"><meta http-equiv="description" content="This is my page"></head><frameset cols="*,200" border="1"><frameset rows="*,100" border="1"><frame src="showMsg"/><!-- 需要動態創建 --><frame src="send.jsp" scrolling="no" noresize="noresize"/></frameset><frame src="online" /><!-- 動態創建 --></frameset></html>

預覽效果:


五.send部分

web.xml

<servlet><servlet-name>SendServlet</servlet-name><servlet-class>com.tz.util.SendServlet</servlet-class><init-param><!-- 臟話屏蔽的配置文件部分,web配置文件的使用 之一--><param-name>keyword</param-name> <param-value>fuck,shit,cao</param-value></init-param></servlet><servlet-mapping><servlet-name>SendServlet</servlet-name><url-pattern>/send</url-pattern></servlet-mapping>

send.jsp

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html><head></head><body><form action="send" method="post"><input type="text" name="msg"><select name="face"><option value="1">smile</option><option value="2">cry</option><option value="3">flower</option></select><input type="submit" value="send"><!-- 這里是從iframe退出到index.jsp的方法,不然只會在iframe的send部分的頁面,跳轉到index.jsp -->????<a href="index.jsp" target="asd">exit</a><!-- target="asd"(隨便取非保留字)或者"_parent" iframe跳轉到index.html --></form></body> </html>

SendServlet.jsp

/*** 用于處理發送的消息* @author Administrator*/ @SuppressWarnings("serial") public class SendServlet extends HttpServlet{protected void doGet(HttpServletRequest req, HttpServletResponse resp)throws ServletException, IOException {doPost(req, resp);}protected void doPost(HttpServletRequest req, HttpServletResponse resp)throws ServletException, IOException {//設置編碼格式,不然會亂碼.req.setCharacterEncoding("utf-8");//獲取文本消息String msg = req.getParameter("msg");//獲取圖片消息String face = req.getParameter("face");ServletConfig config = this.getServletConfig();//讀取配置文件String value = config.getInitParameter("keyword");//拆分String[] values = value.split(",");//替換過程--->臟話屏蔽for (String str : values) {if(msg.contains(str)){msg = msg.replaceAll(str, "****");}}//path的拼接String username = (String) req.getSession().getAttribute("name");//StringBuffer、StringBuilder都可以,我們這里需要的是一個可變的string而已.StringBuilder str = new StringBuilder(username);str.append(":");str.append(msg);str.append("<img src ='images/");str.append(face);str.append(".gif");str.append("'>");// System.out.println(str); // 將聊天記錄存儲在上下文中ServletContext application = this.getServletContext();//獲取上下文,追加聊天記錄@SuppressWarnings("unchecked")List<String> msgList = (List<String>) application.getAttribute("msglist");//向msList中添加strmsgList.add(str.toString());// resp.getWriter().println(<>);//重定向resp.sendRedirect("send.jsp"); // 轉發和重定向的區別 // 1.轉發可以攜帶數據,重定向不行 // 2.重定向時,客服端發送了兩個請求,而轉發只發送了一個請求(本質區別) // 3.重定向時,客服端瀏覽器的地址欄有變化,而轉發沒有 // 4.重定向發生在客服端!轉發發生在服務端,客服端是不知道} }

五.ShowMsg

ShowMsg的web.xml配置

<servlet><servlet-name>ShowMsg</servlet-name><servlet-class>com.tz.util.ShowMsg</servlet-class></servlet><servlet-mapping><servlet-name>ShowMsg</servlet-name><url-pattern>/showMsg</url-pattern></servlet-mapping>
?

ShowMsg.jsp

/*** 用來顯示聊天記錄*/ public class ShowMsg extends HttpServlet{protected void doGet(HttpServletRequest req, HttpServletResponse resp)throws ServletException, IOException {doPost(req, resp);}protected void doPost(HttpServletRequest req, HttpServletResponse resp)throws ServletException, IOException {//獲取上下文ServletContext application = this.getServletContext(); // List<String> msgList = (List<String>) application.getAttribute("msglist");@SuppressWarnings("unchecked")List<String> msgList = (List<String>) application.getAttribute("msglist"); // 設置頁面編碼resp.setCharacterEncoding("utf-8");PrintWriter out = resp.getWriter();out.println("<html>");out.println("<head>");out.println("<meta http-equiv='refresh' content='1'/>");out.println("</head>");out.println("<body>"); // out.println("</head>");for (String str : msgList) {out.println(str);out.println("<br/>");}out.println("</body>");out.println("</html>");} }

六.OnlineServlet

OnlineServlet的web.xml

<servlet><servlet-name>OnlineServlet</servlet-name><servlet-class>com.tz.util.OnlineServlet</servlet-class></servlet><servlet-mapping><servlet-name>OnlineServlet</servlet-name><url-pattern>/online</url-pattern></servlet-mapping>

OnlineServlet.jsp

public class OnlineServlet extends HttpServlet{protected void doGet(HttpServletRequest req, HttpServletResponse resp)throws ServletException, IOException {doPost(req, resp);}protected void doPost(HttpServletRequest req, HttpServletResponse resp)throws ServletException, IOException {ServletContext application = this.getServletContext();List<String> userList = (List<String>) application.getAttribute("userlist");resp.setCharacterEncoding("utf-8");PrintWriter out = resp.getWriter();out.println("<html>");out.println("<head>");out.println("<meta http-equiv='refresh' content='1'/>");out.println("</head>");out.println("<body>"); // out.println("</head>");out.println("<ul>");for (String str : userList) {out.println("<li>");out.println(str);out.println("</li>");}out.println("</ul>");out.println("</body>");out.println("</html>");} }

七.補充.

1.為了簡化步驟,本項目中的doget方法都直接寫成了dopost, 2.對jsp中的響應,請求不了解的,本文不再多描述,可以瀏覽我的其他博客,或者自行百度

八.參考文章:

1.探秘Java中的String,StringBuffer與StringBuilder
2.詳解JAVA中的注釋 3.web.xml中load-on-startup的作用 4.JSP中文亂碼問題(get,post篇) 5.ServletContext作用功能詳解 6.JSP生命周期 7.JSP seesion

總結

以上是生活随笔為你收集整理的java_OA管理系统(一):Servlet总结案例仿网络聊天室的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。