java_OA管理系统(一):Servlet总结案例仿网络聊天室
生活随笔
收集整理的這篇文章主要介紹了
java_OA管理系统(一):Servlet总结案例仿网络聊天室
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
因為我們學校的軟件聯(lián)盟要為我們校區(qū)開發(fā)一個OA系統(tǒng),為此我將其所需要的一些技術(shù)進行匯總,以便web組組員開發(fā)所用.
第一篇是關(guān)于Servlet的一個匯總案例,算是開個簡單的小頭.
一.總述
代碼來源于,我在某著名網(wǎng)校(tzedu)學習時,老師講的匯總案例--仿網(wǎng)絡(luò)聊天室,
實現(xiàn)功能
1.登錄 2.發(fā)送聊天信息與QQ表情 3.臟話屏蔽知識要點:
1.jsp工程文件目錄 2.servlet執(zhí)行 3.web.xml文件基本配置 4.jsp動態(tài)創(chuàng)建網(wǎng)頁 5.jsp拼接路徑 6,請求,表單的亂碼處理 7.seesion 8,application
項目文件結(jié)構(gòu):
文件結(jié)構(gòu)解釋:
1.index.jsp登陸界面
2.jframe.jsp網(wǎng)絡(luò)聊天室,的框架頁面
3.send.jsp發(fā)送消息界面
4.ShowMsg.java,創(chuàng)建消息展示界面
5.OnlineServlet.jsp:創(chuàng)建登陸者頁面
6.InitServlet.jsp.服務(wù)器啟動時執(zhí)行,內(nèi)存中創(chuàng)建list(本案例中用來存儲登陸人信息與聊天記錄)(<load-on-startup>0</load-on-startup>)
7.SendServlet(發(fā)送請求),LoginServlet(登錄)
8.images文件夾:存儲表情圖片.
二.init創(chuàng)建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(實例化并調(diào)用其init()方法)。 --><span style="white-space:pre"> </span><!-- 當值為0或者大于0時,表示容器在應(yīng)用啟動時就加載并初始化這個servlet --><span style="white-space:pre"> </span><!-- 詳細的可以去看這個網(wǎng)址:http://www.blogjava.net/xzclog/archive/2011/09/29/359789.html --> </servlet>InitServlet.jsp
/*** 初始化servlet* 設(shè)置一個appliction屬性* 會隨著Tomcat啟動而加載,無需訪問,但是需要配置才行**/ @SuppressWarnings("serial") public class InitServlet extends HttpServlet{public void init() throws ServletException {//獲得上下文ServletContext application = this.getServletContext();//第一次訪問的時候就創(chuàng)建一個 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.內(nèi)存中的:兩個list,?msglist and?userlist------>存儲在application:在一個應(yīng)用服務(wù)器范圍內(nèi)有效 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* 設(shè)置一個appliction屬性* 會隨著Tomcat啟動而加載,無需訪問,但是需要配置才行**/ @SuppressWarnings("serial") public class InitServlet extends HttpServlet{public void init() throws ServletException {//獲得上下文ServletContext application = this.getServletContext();//第一次訪問的時候就創(chuàng)建一個 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設(shè)置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"/><!-- 需要動態(tài)創(chuàng)建 --><frame src="send.jsp" scrolling="no" noresize="noresize"/></frameset><frame src="online" /><!-- 動態(tài)創(chuàng)建 --></frameset></html>
預(yù)覽效果:
五.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部分的頁面,跳轉(zhuǎn)到index.jsp -->????<a href="index.jsp" target="asd">exit</a><!-- target="asd"(隨便取非保留字)或者"_parent" iframe跳轉(zhuǎn)到index.html --></form></body> </html>SendServlet.jsp
/*** 用于處理發(fā)送的消息* @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 {//設(shè)置編碼格式,不然會亂碼.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");
// 轉(zhuǎn)發(fā)和重定向的區(qū)別
// 1.轉(zhuǎn)發(fā)可以攜帶數(shù)據(jù),重定向不行
// 2.重定向時,客服端發(fā)送了兩個請求,而轉(zhuǎn)發(fā)只發(fā)送了一個請求(本質(zhì)區(qū)別)
// 3.重定向時,客服端瀏覽器的地址欄有變化,而轉(zhuǎn)發(fā)沒有
// 4.重定向發(fā)生在客服端!轉(zhuǎn)發(fā)發(fā)生在服務(wù)端,客服端是不知道}
}
五.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"); // 設(shè)置頁面編碼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中的響應(yīng),請求不了解的,本文不再多描述,可以瀏覽我的其他博客,或者自行百度八.參考文章:
1.探秘Java中的String,StringBuffer與StringBuilder2.詳解JAVA中的注釋 3.web.xml中l(wèi)oad-on-startup的作用 4.JSP中文亂碼問題(get,post篇) 5.ServletContext作用功能詳解 6.JSP生命周期 7.JSP seesion
總結(jié)
以上是生活随笔為你收集整理的java_OA管理系统(一):Servlet总结案例仿网络聊天室的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 探秘Java中String、String
- 下一篇: JAVA_OA管理系统(二):Sprin