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的框架的使用

 

 

 

posted @ 2020-03-23 13:58  程序王同学  阅读(292)  评论(0)    收藏  举报