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

java_OA管理系统(⼀):Servlet总结案例仿⽹络聊天室因为我们学校的软件联盟要为我们校区开发⼀个OA系统,为此我将其所需要的⼀些技术进⾏汇总,以便web组组员开发所⽤.
第⼀篇是关于Servlet的⼀个汇总案例,算是开个简单的⼩头.
⼀.总述
代码来源于,我在某著名⽹校(tzedu)学习时,⽼师讲的汇总案例--仿⽹络聊天室,
实现功能
1.登录
2.发送聊天信息与QQ表情
3.脏话屏蔽
知识要点:
1.jsp⼯程⽂件⽬录
2.servlet执⾏
l⽂件基本配置
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
<servlet>
<servlet-name>init</servlet-name>
<servlet-class&util.InitServlet</servlet-class>
<load-on-startup>0</load-on-startup>
<span > </span><!-- load-on-startup元素标记容器是否在启动的时候就加载这个servlet(实例化并调⽤其init()⽅法)。 -->
<span > </span><!-- 当值为0或者⼤于0时,表⽰容器在应⽤启动时就加载并初始化这个servlet -->
<span > </span><!-- 详细的可以去看这个⽹址:www.blogjava/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 = ServletContext();
//第⼀次访问的时候就创建⼀个 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>
<servlet>
<servlet-name>LoginServlet</servlet-name>
<servlet-class&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 = ServletContext();
//第⼀次访问的时候就创建⼀个 list存⼊上下⽂,⽤于获取存储⽤户的多条聊天记录
List<String> list = new ArrayList<String>();
application.setAttribute("msglist", list);
//⽤于获取⽤户信息
List<String> userList = new ArrayList<String>();
application.setAttribute("userlist", userList);
/
/对于上下⽂不熟悉的,请⾃⾏百度<span >ServletContext;</span> }
}
dddt
四.jframe部分
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = ContextPath();
String basePath = Scheme()+"://"+ServerName()+":"+ServerPort()+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部分
<servlet>
<servlet-name>SendServlet</servlet-name>
<servlet-class&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 = Parameter("msg");
//获取图⽚消息
String face = Parameter("face");
叶片锁ServletConfig config = ServletConfig();
//读取配置⽂件
String value = InitParameter("keyword");
//拆分
String[] values = value.split(",");
/
/替换过程--->脏话屏蔽
for (String str : values) {
ains(str)){
msg = placeAll(str, "****");
}
}
//path的拼接
String username = (String) Session().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 = ServletContext();
//获取上下⽂,追加聊天记录
@SuppressWarnings("unchecked")
List<String> msgList = (List<String>) Attribute("msglist");
/
/向msList中添加str
msgList.String());
//  Writer().println(<>);
//重定向
resp.sendRedirect("send.jsp");
//  转发和重定向的区别
//  1.转发可以携带数据,重定向不⾏
//  2.重定向时,客服端发送了两个请求,⽽转发只发送了⼀个请求(本质区别)
大灯高度可调
//  3.重定向时,客服端浏览器的地址栏有变化,⽽转发没有
//  4.重定向发⽣在客服端!转发发⽣在服务端,客服端是不知道
}
}

本文发布于:2024-09-21 03:27:57,感谢您对本站的认可!

本文链接:https://www.17tex.com/tex/2/174236.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:配置   转发   启动   客服   发送   创建
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议