在线用户列表的维护
Login.jsp
- <%@pagelanguage="java"contentType="text/html;charset=UTF-8"
- pageEncoding="UTF-8"%>
- <!DOCTYPEhtmlPUBLIC"-//W3C//DTDHTML4.01Transitional//EN""http://www.w3.org/TR/html4/loose.dtd">
- <html>
- <head>
- <metahttp-equiv="Content-Type"content="text/html;charset=UTF-8">
- <title>Inserttitlehere</title>
- </head>
- <body>
- <formname="LoginForm"action="doLogin.jsp"method="post">
- 用户名:<inputtype="text"name="user">
- <br/>
- <inputtype="submit"value="submit">
- </form>
- <p>
- 示例演示在线用户的维护:用户登录,放入session,并放入list,把list放入application保存
- 查看时可从list中取出所有在线用户,点注销会从session删除该用户记录并减少在线的用户
- 问题:当用户不点注销而是关闭浏览器或出现故障时退出,会使application用户无法删除,从而永远在线
- </p>
- </body>
- </html>
dologin.jsp
- <%@pagelanguage="java"contentType="text/html;charset=UTF-8"
- pageEncoding="UTF-8"%>
- <%@pageimport="com.webtest.eus.util.*,java.util.*"%>
- <!DOCTYPEhtmlPUBLIC"-//W3C//DTDHTML4.01Transitional//EN""http://www.w3.org/TR/html4/loose.dtd">
- <html>
- <head>
- <metahttp-equiv="Content-Type"content="text/html;charset=UTF-8">
- <title>Inserttitlehere</title>
- </head>
- <body>
- <h1>doLogin</h1>
- <hr/>
- <%
- //request.setCharacterEncoding("UTF-8");
- Stringuser=HttpUtil.getParam(request,"user");
- //Stringuser=request.getParameter("user");
- session.setAttribute("user",user);
- ListonlineList=(List)application.getAttribute("onlineList");
- if(onlineList==null){
- onlineList=newArrayList();
- application.setAttribute("onlineList",onlineList);
- }
- onlineList.add(user);
- response.sendRedirect("./result.jsp");
- %>
- </body>
- </html>
result.jsp
- <%@pagelanguage="java"contentType="text/html;charset=UTF-8"
- pageEncoding="UTF-8"%>
- <%@pageimport="java.util.*"%>
- <!DOCTYPEhtmlPUBLIC"-//W3C//DTDHTML4.01Transitional//EN""http://www.w3.org/TR/html4/loose.dtd">
- <html>
- <head>
- <metahttp-equiv="Content-Type"content="text/html;charset=UTF-8">
- <title>Inserttitlehere</title>
- </head>
- <body>
- <%!
- Stringuser="";
- %>
- 在线的用户有:
- <%
- ListonlineList=(List)application.getAttribute("onlineList");
- for(inti=0;i<onlineList.size();i++){
- user=(String)onlineList.get(i);
- %>
- <tableborder="1">
- <tr>
- <td><%=user%></td>
- </tr>
- <%
- }
- %>
- </table>
- <hr/>
- <ahref="./Login.jsp">登录</a>
- <br/>
- <ahref="./cancel.jsp">注销</a>
- </body>
- </html>
cancel.jsp
- <%@pagelanguage="java"contentType="text/html;charset=UTF-8"
- pageEncoding="UTF-8"import="java.util.*,com.webtest.eus.util.*"%>
- <!DOCTYPEhtmlPUBLIC"-//W3C//DTDHTML4.01Transitional//EN""http://www.w3.org/TR/html4/loose.dtd">
- <html>
- <head>
- <metahttp-equiv="Content-Type"content="text/html;charset=UTF-8">
- <title>Inserttitlehere</title>
- </head>
- <body>
- <%
- Stringuser=(String)session.getAttribute("user");
- session.invalidate();
- ListonlineList=(List)application.getAttribute("onlineList");
- onlineList.remove(user);
- response.sendRedirect("../index.jsp");
- %>
- </body>
- </html>
dologin.jsp处理登录请求:
首先将USER放入session中session.setAttribute("user",user);将list放入application中,如果没有此list则先初始化,然后将用户添加到list中;
result.jsp
用于显示在线用户
calcel.jsp:
在session中删除此账户信息,并在list中删除onlineList.remove(user);这样在application中的list就不包括此用户信息,再回到result.jsp时就看不到此用户在线了