因为我们学校的软件联盟要为我们校区开发一个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(本案例中用来存储登陆人信息与聊天记录)(
7.SendServlet(发送请求),LoginServlet(登录)
8.images文件夹:存储表情图片.
二.init创建List
web.xml配置如下:
init
com.tz.util.InitServlet
0
InitServlet.jsp
/**
* 初始化servlet
* 设置一个appliction属性
* 会随着Tomcat启动而加载,无需访问,但是需要配置才行
*
*/
@SuppressWarnings("serial")
public class InitServlet extends HttpServlet{
public void init() throws ServletException {
//获得上下文
ServletContext application = this.getServletContext();
//第一次访问的时候就创建一个 list存入上下文,用于获取存储用户的多条聊天记录
List list = new ArrayList();
application.setAttribute("msglist", list);
//用于获取用户信息
List userList = new ArrayList();
application.setAttribute("userlist", userList);
}
}
项目中的存储:
1.各页面及各jsp,xml文件以及QQ表情(images)文件夹
2.内存中的:两个list, msglist and userlist------>存储在application:在一个应用服务器范围内有效
3.等等
三.登录界面
表单代码如下
web.xml配置文件
LoginServlet
com.tz.util.LoginServlet
LoginServlet
/login
LoginServlet.jsp
/**
* 初始化servlet
* 设置一个appliction属性
* 会随着Tomcat启动而加载,无需访问,但是需要配置才行
*
*/
@SuppressWarnings("serial")
public class InitServlet extends HttpServlet{
public void init() throws ServletException {
//获得上下文
ServletContext application = this.getServletContext();
//第一次访问的时候就创建一个 list存入上下文,用于获取存储用户的多条聊天记录
List list = new ArrayList();
application.setAttribute("msglist", list);
//用于获取用户信息
List userList = new ArrayList();
application.setAttribute("userlist", userList);
//对于上下文不熟悉的,请自行百度ServletContext;
}
}
四.jframe部分
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
// jsp设置href
QQ聊天窗口
预览效果:
五.send部分
web.xml
SendServlet
com.tz.util.SendServlet
keyword
fuck,shit,cao
SendServlet
/send
send.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
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("");
// System.out.println(str);
// 将聊天记录存储在上下文中
ServletContext application = this.getServletContext();
//获取上下文,追加聊天记录
@SuppressWarnings("unchecked")
List msgList = (List) application.getAttribute("msglist");
//向msList中添加str
msgList.add(str.toString());
// resp.getWriter().println(<>);
//重定向
resp.sendRedirect("send.jsp");
// 转发和重定向的区别
// 1.转发可以携带数据,重定向不行
// 2.重定向时,客服端发送了两个请求,而转发只发送了一个请求(本质区别)
// 3.重定向时,客服端浏览器的地址栏有变化,而转发没有
// 4.重定向发生在客服端!转发发生在服务端,客服端是不知道
}
}
五.ShowMsg
ShowMsg的web.xml配置
ShowMsg
com.tz.util.ShowMsg
ShowMsg
/showMsg
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 msgList = (List) application.getAttribute("msglist");
@SuppressWarnings("unchecked")
List msgList = (List) application.getAttribute("msglist");
// 设置页面编码
resp.setCharacterEncoding("utf-8");
PrintWriter out = resp.getWriter();
out.println("");
out.println("");
out.println("");
out.println("");
out.println("");
// out.println("");
for (String str : msgList) {
out.println(str);
out.println("
");
}
out.println("");
out.println("