java_OA管理系统(一):Servlet总结案例仿网络聊天室
因为我们学校的软件联盟要为我们校区开发一个OA系统,为此我将其所需要的一些技术进行汇总,以便web组组员开发所用.
第一篇是关于Servlet的一个汇总案例,算是开个简单的小头.
一.总述
代码来源于,我在某著名网校(tzedu)学习时,老师讲的汇总案例--仿网络聊天室,
实现功能
知识要点:
项目文件结构:
文件结构解释:
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);}
}
项目中的存储:
三.登录界面
表单代码如下
<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>");}
}
七.补充.
八.参考文章:
java_OA管理系统(一):Servlet总结案例仿网络聊天室相关推荐
- 视频教程-网络聊天室Java基础版(Socket_Swing编程)仿QQ聊天-Java
网络聊天室Java基础版(Socket_Swing编程)仿QQ聊天 IT行业资深从业者,7年资深Java高级开发,Java架构师.曾就职银行.电信等行业多家上市公司.担任项目负责人,软件架构师.有丰富 ...
- 网络编程-基于MFC的仿QQ聊天室-2020
基于MFC的仿QQ聊天室(2020) 有幸学习过网络编程的一些知识,出于对编程的热爱,把曾经的一次简单实践编程作业进行了自定义的完成. 编程所需: 编程工具为VS 2010,需要掌握MFC的基本操作以 ...
- Golang网络聊天室案例
1.聊天室设计分析 一. 概览 实现 个网络聊天室(群) 功能分析: 上线下线 聊天,其他人,自己都可以看到聊天消息 查询当前聊天室用户名字 who 可以修改自己名字 rename | Duke 超时 ...
- h5聊天室案例|仿微信聊天界面|多人群聊
html5仿微信聊天室weChatRoom案例|多人群聊互动|仿微信聊天界面 该项目是使用html5+css3+zepto+swiper+wcPop等技术开发的仿微信聊天室,捣鼓调试了很长时间,在手机 ...
- 仿微信的网络聊天室项目开发【完整源码讲解】
目录 总体开发思路 服务器端 服务器界面设计 建立TCP服务器端通信 建立服务器消息发送输出流 建立服务器消息接收输入流 建立服务器实时消息通信线程 设置服务器通信自由断开 客户端 客户端界面设计 建 ...
- 小浩的JAVA网络聊天室
案例:在线聊天室 需求:使用TCP的Socket实现一个聊天室 服务器端:一个线程专门发送消息,一个线程专门接收消息 客户端:一个线程专门发送消息,一个线程专门接收消息 实现:具有 注册 登录 功能的 ...
- 视频教程-多人网络聊天室-Unity3D
多人网络聊天室 广州市码锋网络有限责任公司创始人,从事游戏开发九年,熟练前后端的各种技术,我很乐意将企业中商用的技术分享给你,帮助你解决工作的各种问题. 官剑铭 ¥39.00 立即订阅 扫码下载「CS ...
- 【毕业设计之PHP系列】基于PHP的网络聊天室系统
基于PHP的网络聊天室系统 摘要:我们生活在一个通信变得非常重要的世界里,人们需要同他人快速容易的进行交流.E-mail.电话.邮件以及在线聊天是以书写文字的形式让人们进行思想交流的媒体.通信时一个重 ...
- 视频教程-Java基础中国象棋和网络聊天室Swing开发-Java
Java基础中国象棋和网络聊天室Swing开发 IT行业资深从业者,7年资深Java高级开发,Java架构师.曾就职银行.电信等行业多家上市公司.担任项目负责人,软件架构师.有丰富的高并发.分布式系统 ...
最新文章
- 企业级-Mysql双主互备高可用负载均衡架构(基于GTID主从复制模式)(原创)
- 怎样才算熟悉python-怎么样才算是精通 Python?
- CCNA实验(9) -- Frame Relay
- java程序输出88的0 1矩阵_《剑指Offer》Java实现--顺时针打印矩阵
- JVM内存模型和类加载运行机制
- python除法保留两位小数_java实现两个整数相除保留一位小数
- 【编译器】VSCode配置Go语言开发环境
- 筛选法建立初始堆_学术简报|基于库仑效率的退役锂离子动力电池储能梯次利用筛选...
- 利用Onionshare 共享匿名文件
- RESTORE DATAFILE TO A NEW LOCATION
- 【Gitlab】 remote: Ask a project Owner or Maintainer to create a default branch:
- 计算机性能检查方法,测试电脑性能的方法步骤详解
- 数字图像处理中的车牌识别
- 我国古代数学家张丘建在《算经》一书中提出的数学问题:鸡翁一值钱五,鸡母一值钱三,鸡雏三值钱一。 百钱买百鸡,问鸡翁、鸡母、鸡雏各几何?
- 柠檬班性能测试day3_性能测试基础知识(0521)
- css属性:hover
- java内存垃圾_Java内存区域与垃圾回收
- 李昌镐:苍老的青春(转载)
- flinkSql的union all然后group by写入mysql
- 大气采样器的结构介绍