web+Struts设计一个简单聊天室
使用Struts2框架开发一个简单聊天室(不连接数据库)
- 配置
语言:java
软件:eclipse ee
Struts2版本:2.5.22
- 项目结构
主要是分为显示页面的登录界面login.jsp、发送消息的default.jsp、action的配置,struts.xml和web.xml的配置

- 具体实现
用Struts2框架编写一个简单的聊天室,首先是进行Struts2的配置,主要是在web.xml中配置,同时不要忘了将Struts2相关的jar文件导入,具体的配置细节可以自行百度。
根据项目结构编写个项目代码
login.jsp
1 <%@ page language="java" contentType="text/html; charset=utf-8"%> 2 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 3 <html> 4 <head> 5 <title>登陆</title> 6 <link href="css/font-awesome.min.css" rel="stylesheet" type="text/css"> 7 <link href="css/bootstrap.min.css" rel="stylesheet" type="text/css"> 8 <link href="css/bootstrap-theme.min.css" rel="stylesheet" type="text/css"> 9 <link href="css/templatemo_style.css" rel="stylesheet" type="text/css"> 10 </head> 11 <body class="templatemo-bg-gray"> 12 <div class="container"> 13 <div class="col-md-12"> 14 <h1 class="margin-bottom-15">欢迎光临大王同学的聊天室</h1> 15 <form 16 class="form-horizontal templatemo-container templatemo-login-form-1 margin-bottom-30" role="form" action="abc" method="post"> 17 <div class="form-group"> 18 <div class="col-xs-12"> 19 <div class="control-wrapper"> 20 <label for="username" class="control-label fa-label"><i 21 class="fa fa-user fa-medium"></i></label> <input type="text" 22 class="form-control" id="username" name="username" 23 placeholder="用户名"> 24 </div> 25 </div> 26 </div> 27 <div class="form-group"> 28 <div class="col-md-12"> 29 <div class="control-wrapper"> 30 <label for="password" class="control-label fa-label"><i 31 class="fa fa-lock fa-medium"></i></label> <input type="password" 32 class="form-control" id="password" name="password" 33 placeholder="密码"> 34 </div> 35 </div> 36 </div> 37 <% 38 if(request.getAttribute("tip")!=null&&request.getAttribute("tip").toString()=="1") 39 { 40 %> 41 <div class='form-group'><div class='col-md-12'><div class='control-wrapper'><font color='red'>错误的用户名或密码!</font></div></div></div> 42 <%} %> 43 <div class="form-group"> 44 <div class="col-md-12"> 45 <div class="control-wrapper"> 46 <input type="submit" value="登录" class="btn btn-info"> 47 </div> 48 </div> 49 </div> 50 </form> 51 </div> 52 </div> 53 </body> 54 </html>
default.jsp
1 <%@ page language="java" contentType="text/html; charset=utf-8"%> 2 <%@ page import="java.util.*"%> 3 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 4 5 <head> 6 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 7 <title>聊天室</title> 8 <link href="css/index_CSS.css" rel="stylesheet" type="text/css"> 9 10 </head> 11 12 <body> 13 <%!String ulist = ""; 14 ArrayList<String> mlist = new ArrayList();%> 15 16 <% 17 if (application.getAttribute("ul") != null&&application.getAttribute("ul")!="") 18 ulist = application.getAttribute("ul").toString(); 19 if (application.getAttribute("ml") != null&&application.getAttribute("ml")!="") 20 mlist = (ArrayList<String>) application.getAttribute("ml"); 21 %> 22 23 <h1 style='text-align: center'>聊天室</h1> 24 <div style="float: left; width: 100%"> 25 <ul id="userList" style="width: 30%"> 26 <li style='font-weight: bold; font-size: 16px;'>在线用户(<font 27 color="red"><%=ulist.split(",").length%></font>)人 28 </li> 29 <% 30 for (int i = 0; i < ulist.split(",").length; i++) { 31 %> 32 <li><p><%=ulist.split(",")[i]%></p></li> 33 <% 34 } 35 %> 36 37 </ul> 38 <ul id="msgList" style="width: 70%"> 39 <% 40 if (session.isNew()) { 41 %> 42 <li><span>系统信息</span> 43 <p> 44 欢迎<%=session.getAttribute("users")%>进入聊天室 45 </p></li> 46 <% 47 } 48 %> 49 <% 50 if (mlist != null) { 51 for (String s:mlist) { 52 %> 53 <li><span><%=s.split("@")[0]%><font color="orange"><%=s.split("@")[1]%></font>说:</span><%=s.split("@")[2]%></li> 54 <% 55 } 56 } 57 //response.setIntHeader("Refresh",1); 58 %> 59 </ul> 60 </div> 61 <div style="float: left; width: 100%"> 62 <form name="fmMsg" id="fmMsg" action="df" method="post"> 63 <h2>Message</h2> 64 65 <label for="txtContent">Message</label> 表情 <select name="face" 66 class="wenbenkuang"> 67 <option value="无表情的">无表情的</option> 68 <option value="微笑着" selected>微笑着</option> 69 <option value="笑呵呵地">笑呵呵地</option> 70 <option value="热情的">热情的</option> 71 <option value="温柔的">温柔的</option> 72 <option value="红着脸">红着脸</option> 73 <option value="幸福的">幸福的</option> 74 <option value="嘟着嘴">嘟着嘴</option> 75 <option value="热泪盈眶的">热泪盈眶的</option> 76 <option value="依依不舍的">依依不舍的</option> 77 <option value="得意的">得意的</option> 78 <option value="神秘兮兮的">神秘兮兮的</option> 79 <option value="恶狠狠的">恶狠狠的</option> 80 <option value="大声的">大声的</option> 81 <option value="生气的">生气的</option> 82 <option value="幸灾乐祸的">幸灾乐祸的</option> 83 <option value="同情的">同情的</option> 84 <option value="遗憾的">遗憾的</option> 85 <option value="正义凛然的">正义凛然的</option> 86 <option value="严肃的">严肃的</option> 87 <option value="慢条斯理的">慢条斯理的</option> 88 <option value="无精打采的">无精打采的</option> 89 </select><br /><br /> 90 <textarea name="content" rows="4" id="txtContent"></textarea> 91 <input type="submit" value="发送消息" id="btnSubmit" /> 92 </form> 93 </div> 94 </body> 95 </html>
login和default界面主要是利用jap和HTML的知识点,同时连接了css和fonts共同构成了显示界面
LoginAction.java
1 package action; 2 3 import java.util.ArrayList; 4 5 import javax.servlet.ServletContext; 6 import javax.servlet.ServletRequest; 7 import javax.servlet.http.HttpServletRequest; 8 9 import org.apache.struts2.ServletActionContext; 10 11 import com.opensymphony.xwork2.ActionSupport; 12 //import com.opensymphony.xwork2.ModelDriven; 13 14 import Bean.Users; 15 //implements ModelDriven<Users> 16 @SuppressWarnings("serial") 17 public class LoginAction extends ActionSupport { 18 19 private String username; 20 private String password; 21 //private Users user = new Users(); 22 23 private ServletContext sc = ServletActionContext.getServletContext(); 24 private ArrayList<String> mlist=(ArrayList<String>)sc.getAttribute("ml")==null ? new ArrayList<>() : (ArrayList<String>) sc.getAttribute("ml"); 25 private String ulist = sc.getAttribute("ul")==null?"":(String) sc.getAttribute("ul"); 26 public String getUsername() { 27 return username; 28 } 29 30 public void setUsername(String username) { 31 this.username = username; 32 } 33 34 public String getPassword() { 35 return password; 36 } 37 38 public void setPassword(String password) { 39 this.password = password; 40 } 41 42 /* 43 * public Users getUser() { return user; } 44 * 45 * public void setUser(Users user) { this.user = user; } 46 */ 47 48 @Override 49 public String execute() throws Exception { 50 ServletContext sc = ServletActionContext.getServletContext(); 51 ServletRequest request = ServletActionContext.getRequest(); 52 if (ulist != null&&ulist!="") 53 ulist = ulist+"," + this.getUsername(); 54 else 55 ulist = ulist+this.getUsername(); 56 sc.setAttribute("ul", ulist); 57 sc.setAttribute("ml", mlist); 58 javax.servlet.http.HttpSession session = ((HttpServletRequest) request).getSession(); 59 session.setAttribute("users", this.getUsername()); 60 if (!this.getUsername().equals("") && !this.getPassword().equals("")) 61 return SUCCESS; 62 else 63 return ERROR; 64 } 65 66 /* 67 * @Override public Users getModel() { return user; } 68 */ 69 70 }
MessageAction.java
1 package action; 2 3 import java.util.ArrayList; 4 import javax.servlet.ServletContext; 5 import javax.servlet.http.HttpServletRequest; 6 import org.apache.struts2.ServletActionContext; 7 import com.opensymphony.xwork2.ActionSupport; 8 9 public class MessageAction extends ActionSupport{ 10 11 //private Users user=new Users(); 12 private ServletContext sc = ServletActionContext.getServletContext(); 13 HttpServletRequest request1=ServletActionContext.getRequest(); 14 private String ulist=(String) sc.getAttribute("ul"); 15 javax.servlet.http.HttpSession session = request1.getSession(); 16 String user=(String) session.getAttribute("users"); 17 @SuppressWarnings("unchecked") 18 private ArrayList<String> mlist=(ArrayList<String>)sc.getAttribute("ml")==null ? new ArrayList<>() : (ArrayList<String>) sc.getAttribute("ml"); 19 20 @Override 21 public String execute() throws Exception { 22 23 String face = request1.getParameter("face"); 24 String content = request1.getParameter("content"); 25 String s=user + "@" + face + "@" + content; 26 mlist.add(s);// 反射InvocationTargetException当被调用的方法的内部抛出了异常而没有被捕获时,将由此异常接收!!! 27 sc.setAttribute("ml", mlist); 28 sc.setAttribute("ul", ulist); 29 return SUCCESS; 30 } 31 32 /* 33 * @Override public void setServletResponse(HttpServletResponse response) { 34 * this.response=response; } 35 */ 36 37 /* 38 * @Override public void setServletRequest(HttpServletRequest request) { 39 * this.request = request; } 40 */ 41 42 /* 43 * @Override public void setServletContext(ServletContext context) { 44 * this.context = context; } 45 */ 46 47 /* 48 * @Override public Users getModel() { return user; } 49 * 50 * public Users getUser() { return user; } 51 * 52 * public void setUser(Users user) { this.user = user; } 53 */ 54 55 }
struts.xml
1 <?xml version="1.0" encoding="UTF-8"?> 2 <!DOCTYPE struts PUBLIC 3 "-//Apache Software Foundation//DTD Struts Configuration 2.5//EN" 4 "http://struts.apache.org/dtds/struts-2.5.dtd"> 5 6 <struts> 7 <constant name="struts.using.chatroom" value="utf-8" ></constant> 8 <package name="action" namespace="/" extends="struts-default"> 9 <action name="abc" class="action.LoginAction"> 10 <result name="success">/default.jsp</result> 11 <result name="error">/login.jsp</result> 12 </action> 13 <action name="df" class="action.MessageAction"> 14 <result name="success">/default.jsp</result> 15 </action> 16 </package> 17 </struts>
Users.java
1 package Bean; 2 public class Users { 3 private String username; 4 private String password; 5 6 7 public Users() { 8 super(); 9 } 10 public String getUsername() { 11 return username; 12 } 13 public void setUsername(String username) { 14 this.username = username; 15 } 16 public String getPassword() { 17 return password; 18 } 19 public void setPassword(String password) { 20 this.password = password; 21 } 22 }
- 运行效果
这样的一个聊天室相对来说比较简单,没有连接数据库,页面也只是拥有了一个初步的交互功能,当做练习来说也可以了,可以熟悉一下Struts2的框架的使用



浙公网安备 33010602011771号