您的位置:首页 > 业界新闻

统计在线用户 踢人

2015-07-07 23:36 519 查看
2014年9月8日16:55:13
<%@pagelanguage="java"import="java.util.*"pageEncoding="UTF-8"%>
<%@tagliburi="http://java.sun.com/jsp/jstl/core"prefix="c"%>
<!DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.01Transitional//EN">
<html>
<head>
<title></title>
<metahttp-equiv="pragma"content="no-cache">
<metahttp-equiv="cache-control"content="no-cache">
<metahttp-equiv="expires"content="0">
<!--
<linkrel="stylesheet"type="text/css"href="styles.css">
-->
</head>
<body>
<c:iftest="${sessionScope.user==null}">
<formaction="${pageContext.request.contextPath}/servlet/LoginServlet"method="post">
username:<inputtype="text"name="username"/>(用户名不能重复,且不能为空)<br/>
<inputtype="submit"value="登录"/>
</form>
</c:if>
<c:iftest="${sessionScope.user!=null}">
欢迎您:${sessionScope.user.username}<ahref="#">注销</a>
</c:if>
<ahref="onlineuser.jsp">在线用户</a>
</body>
</html>
[/code]
packagecn.itcast.domain;
importjava.io.Serializable;
publicclassUserimplementsSerializable{
privateStringusername;
publicStringgetUsername(){
returnusername;
}
publicvoidsetUsername(Stringusername){
this.username=username;
}
}
[/code]
packagecn.itcast.web.controller;
importjava.io.IOException;
importjava.io.PrintWriter;
importjavax.servlet.ServletException;
importjavax.servlet.http.HttpServlet;
importjavax.servlet.http.HttpServletRequest;
importjavax.servlet.http.HttpServletResponse;
importjavax.servlet.http.HttpSession;
importcn.itcast.domain.User;
publicclassLoginServletextendsHttpServlet{
publicvoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse)
throwsServletException,IOException{
request.setCharacterEncoding("UTF-8");
response.setContentType("text/html;charset=UTF-8");
PrintWriterout=response.getWriter();
//取到用户名:
Stringusername=request.getParameter("username");
//验证用户是否合法(略)
Useruser=newUser();
user.setUsername(username);
//正确:放到HttpSession中
HttpSessionsession=request.getSession();
session.setAttribute("user",user);
out.write("登录成功");
}
publicvoiddoPost(HttpServletRequestrequest,HttpServletResponseresponse)
throwsServletException,IOException{
doGet(request,response);
}
}
[/code]
packagecn.itcast.domain;
importjava.util.Collections;
importjava.util.HashMap;
importjava.util.Map;
importjavax.servlet.ServletContext;
importjavax.servlet.http.HttpSession;
importjavax.servlet.http.HttpSessionAttributeListener;
importjavax.servlet.http.HttpSessionBindingEvent;
//此处核心代码
publicclassOnlineUserListenerimplementsHttpSessionAttributeListener{
//只要向HttpSession的域中放东东都会执行该方法
//我们要的是放的是User对象,标记还是user的东东
//找个地方存起来:容器要求唯一;页面上还能访问到该容器
publicsynchronizedvoidattributeAdded(HttpSessionBindingEventse){
//找到存储的是user标记,且绑定的对象时User类
HttpSessionsession=se.getSession();
ServletContextsc=session.getServletContext();
Objectobj=session.getAttribute("user");
if(obj!=null&&objinstanceofUser){
//向容器中存起来
Map<String,HttpSession>map=(Map<String,HttpSession>)sc.getAttribute("users");//存放东东的容器(Map<String,HttpSession>.key:用户名;value:HttpSession对象)
if(map==null){
map=newHashMap<String,HttpSession>();//Collections.synchronizedMap(map)
sc.setAttribute("users",map);
}
map.put(((User)obj).getUsername(),session);
}
}
publicsynchronizedvoidattributeRemoved(HttpSessionBindingEventse){
}
publicvoidattributeReplaced(HttpSessionBindingEventse){
}
}
[/code]
<%@pagelanguage="java"import="java.util.*"pageEncoding="UTF-8"%>
<%@tagliburi="http://java.sun.com/jsp/jstl/core"prefix="c"%>
<!DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.01Transitional//EN">
<html>
<head>
<title></title>
<metahttp-equiv="pragma"content="no-cache">
<metahttp-equiv="cache-control"content="no-cache">
<metahttp-equiv="expires"content="0">
<!--
<linkrel="stylesheet"type="text/css"href="styles.css">
-->
</head>
<body>
<h1>在线用户</h1>
<c:iftest="${emptyapplicationScope.users}">
对不起!没有在线用户
</c:if>
<c:iftest="${!emptyapplicationScope.users}">
<c:forEachitems="${applicationScope.users}"var="me">
<c:urlvalue="/servlet/KickServlet"var="url">
<c:paramname="username"value="${me.key}"></c:param>
</c:url>
${me.key}<ahref="${url}">踢出</a><br/>
</c:forEach>
</c:if>
</body>
</html>
[/code]
packagecn.itcast.web.controller;
importjava.io.IOException;
importjava.util.Map;
importjavax.servlet.ServletContext;
importjavax.servlet.ServletException;
importjavax.servlet.http.HttpServlet;
importjavax.servlet.http.HttpServletRequest;
importjavax.servlet.http.HttpServletResponse;
importjavax.servlet.http.HttpSession;
//踢人
publicclassKickServletextendsHttpServlet{
publicvoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse)
throwsServletException,IOException{
ServletContextsc=getServletContext();
Map<String,HttpSession>users=(Map<String,HttpSession>)sc.getAttribute("users");
if(users!=null){
Stringusername=request.getParameter("username");
username=newString(username.getBytes("ISO-8859-1"),"UTF-8");
HttpSessions=users.get(username);
if(s!=null){
s.invalidate();
users.remove(username);
}
}
response.sendRedirect(request.getContextPath()+"/onlineuser.jsp");
}
publicvoiddoPost(HttpServletRequestrequest,HttpServletResponseresponse)
throwsServletException,IOException{
doGet(request,response);
}
}
[/code]2014年9月8日16:55:13
<%@pagelanguage="java"import="java.util.*"pageEncoding="UTF-8"%>
<%@tagliburi="http://java.sun.com/jsp/jstl/core"prefix="c"%>
<!DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.01Transitional//EN">
<html>
<head>
<title></title>
<metahttp-equiv="pragma"content="no-cache">
<metahttp-equiv="cache-control"content="no-cache">
<metahttp-equiv="expires"content="0">
<!--
<linkrel="stylesheet"type="text/css"href="styles.css">
-->
</head>
<body>
<c:iftest="${sessionScope.user==null}">
<formaction="${pageContext.request.contextPath}/servlet/LoginServlet"method="post">
username:<inputtype="text"name="username"/>(用户名不能重复,且不能为空)<br/>
<inputtype="submit"value="登录"/>
</form>
</c:if>
<c:iftest="${sessionScope.user!=null}">
欢迎您:${sessionScope.user.username}<ahref="#">注销</a>
</c:if>
<ahref="onlineuser.jsp">在线用户</a>
</body>
</html>
[/code]
packagecn.itcast.domain;
importjava.io.Serializable;
publicclassUserimplementsSerializable{
privateStringusername;
publicStringgetUsername(){
returnusername;
}
publicvoidsetUsername(Stringusername){
this.username=username;
}
}
[/code]
packagecn.itcast.web.controller;
importjava.io.IOException;
importjava.io.PrintWriter;
importjavax.servlet.ServletException;
importjavax.servlet.http.HttpServlet;
importjavax.servlet.http.HttpServletRequest;
importjavax.servlet.http.HttpServletResponse;
importjavax.servlet.http.HttpSession;
importcn.itcast.domain.User;
publicclassLoginServletextendsHttpServlet{
publicvoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse)
throwsServletException,IOException{
request.setCharacterEncoding("UTF-8");
response.setContentType("text/html;charset=UTF-8");
PrintWriterout=response.getWriter();
//取到用户名:
Stringusername=request.getParameter("username");
//验证用户是否合法(略)
Useruser=newUser();
user.setUsername(username);
//正确:放到HttpSession中
HttpSessionsession=request.getSession();
session.setAttribute("user",user);
out.write("登录成功");
}
publicvoiddoPost(HttpServletRequestrequest,HttpServletResponseresponse)
throwsServletException,IOException{
doGet(request,response);
}
}
[/code]
packagecn.itcast.domain;
importjava.util.Collections;
importjava.util.HashMap;
importjava.util.Map;
importjavax.servlet.ServletContext;
importjavax.servlet.http.HttpSession;
importjavax.servlet.http.HttpSessionAttributeListener;
importjavax.servlet.http.HttpSessionBindingEvent;
//此处核心代码
publicclassOnlineUserListenerimplementsHttpSessionAttributeListener{
//只要向HttpSession的域中放东东都会执行该方法
//我们要的是放的是User对象,标记还是user的东东
//找个地方存起来:容器要求唯一;页面上还能访问到该容器
publicsynchronizedvoidattributeAdded(HttpSessionBindingEventse){
//找到存储的是user标记,且绑定的对象时User类
HttpSessionsession=se.getSession();
ServletContextsc=session.getServletContext();
Objectobj=session.getAttribute("user");
if(obj!=null&&objinstanceofUser){
//向容器中存起来
Map<String,HttpSession>map=(Map<String,HttpSession>)sc.getAttribute("users");//存放东东的容器(Map<String,HttpSession>.key:用户名;value:HttpSession对象)
if(map==null){
map=newHashMap<String,HttpSession>();//Collections.synchronizedMap(map)
sc.setAttribute("users",map);
}
map.put(((User)obj).getUsername(),session);
}
}
publicsynchronizedvoidattributeRemoved(HttpSessionBindingEventse){
}
publicvoidattributeReplaced(HttpSessionBindingEventse){
}
}
[/code]
<%@pagelanguage="java"import="java.util.*"pageEncoding="UTF-8"%>
<%@tagliburi="http://java.sun.com/jsp/jstl/core"prefix="c"%>
<!DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.01Transitional//EN">
<html>
<head>
<title></title>
<metahttp-equiv="pragma"content="no-cache">
<metahttp-equiv="cache-control"content="no-cache">
<metahttp-equiv="expires"content="0">
<!--
<linkrel="stylesheet"type="text/css"href="styles.css">
-->
</head>
<body>
<h1>在线用户</h1>
<c:iftest="${emptyapplicationScope.users}">
对不起!没有在线用户
</c:if>
<c:iftest="${!emptyapplicationScope.users}">
<c:forEachitems="${applicationScope.users}"var="me">
<c:urlvalue="/servlet/KickServlet"var="url">
<c:paramname="username"value="${me.key}"></c:param>
</c:url>
${me.key}<ahref="${url}">踢出</a><br/>
</c:forEach>
</c:if>
</body>
</html>
[/code]
packagecn.itcast.web.controller;
importjava.io.IOException;
importjava.util.Map;
importjavax.servlet.ServletContext;
importjavax.servlet.ServletException;
importjavax.servlet.http.HttpServlet;
importjavax.servlet.http.HttpServletRequest;
importjavax.servlet.http.HttpServletResponse;
importjavax.servlet.http.HttpSession;
//踢人
publicclassKickServletextendsHttpServlet{
publicvoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse)
throwsServletException,IOException{
ServletContextsc=getServletContext();
Map<String,HttpSession>users=(Map<String,HttpSession>)sc.getAttribute("users");
if(users!=null){
Stringusername=request.getParameter("username");
username=newString(username.getBytes("ISO-8859-1"),"UTF-8");
HttpSessions=users.get(username);
if(s!=null){
s.invalidate();
users.remove(username);
}
}
response.sendRedirect(request.getContextPath()+"/onlineuser.jsp");
}
publicvoiddoPost(HttpServletRequestrequest,HttpServletResponseresponse)
throwsServletException,IOException{
doGet(request,response);
}
}
[/code]
                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  互联网 servlet mvc JSP