统计在线用户 踢人

来源:互联网 发布:淘宝退货包装盒丢了 编辑:程序博客网 时间:2024/04/29 07:19


2014年9月8日 16:55:13





<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title></title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
 
</head>
<body>
<c:if test="${sessionScope.user==null}">
<form action="${pageContext.request.contextPath}/servlet/LoginServlet" method="post">
username:<input type="text" name="username"/>(用户名不能重复,且不能为空)<br/>
<input type="submit" value="登录"/>
</form>
</c:if>
<c:if test="${sessionScope.user!=null}">
欢迎您:${sessionScope.user.username}<a href="#">注销</a>
</c:if>
<a href="onlineuser.jsp">在线用户</a>
</body>
</html>



package cn.itcast.domain;
 
import java.io.Serializable;
 
public class User implements Serializable {
private String username;
 
public String getUsername() {
return username;
}
 
public void setUsername(String username) {
this.username = username;
}
}



package cn.itcast.web.controller;
 
import java.io.IOException;
import java.io.PrintWriter;
 
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
 
import cn.itcast.domain.User;
 
public class LoginServlet extends HttpServlet {
 
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
request.setCharacterEncoding("UTF-8");
response.setContentType("text/html;charset=UTF-8");
PrintWriter out = response.getWriter();
//取到用户名:
String username = request.getParameter("username");
//验证用户是否合法(略)
User user = new User();
user.setUsername(username);
//正确:放到HttpSession中
HttpSession session = request.getSession();
session.setAttribute("user", user);
out.write("登录成功");
}
 
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
 
doGet(request, response);
}
 
}





package cn.itcast.domain;
 
import java.util.Collections;
import java.util.HashMap;
import java.util.Map;
 
import javax.servlet.ServletContext;
import javax.servlet.http.HttpSession;
import javax.servlet.http.HttpSessionAttributeListener;
import javax.servlet.http.HttpSessionBindingEvent;
//此处核心代码
public class OnlineUserListener implements HttpSessionAttributeListener {
//只要向HttpSession的域中放东东都会执行该方法
//我们要的是放的是User对象,标记还是user的东东
//找个地方存起来:容器要求唯一;页面上还能访问到该容器
public synchronized void attributeAdded(HttpSessionBindingEvent se) {
//找到存储的是user标记,且绑定的对象时User类
HttpSession session = se.getSession();
ServletContext sc = session.getServletContext();
Object obj = session.getAttribute("user");
if(obj!=null&&obj instanceof User){
//向容器中存起来
Map<String,HttpSession> map = (Map<String, HttpSession>) sc.getAttribute("users");//存放东东的容器(Map<String,HttpSession>.key:用户名;value:HttpSession对象)
if(map==null){
map = new HashMap<String, HttpSession>();//Collections.synchronizedMap(map)
sc.setAttribute("users", map);
}
map.put(((User)obj).getUsername(), session);
}
}
 
public synchronized void attributeRemoved(HttpSessionBindingEvent se) {
}
 
public void attributeReplaced(HttpSessionBindingEvent se) {
 
}
 
}



<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title></title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
 
</head>
<body>
<h1>在线用户</h1>
<c:if test="${empty applicationScope.users}">
对不起!没有在线用户
</c:if>
<c:if test="${!empty applicationScope.users}">
<c:forEach items="${applicationScope.users}" var="me">
<c:url value="/servlet/KickServlet" var="url">
<c:param name="username" value="${me.key}"></c:param>
</c:url>
${me.key}  <a href="${url}">踢出</a><br/>
</c:forEach>
</c:if>
</body>
</html>




package cn.itcast.web.controller;
 
import java.io.IOException;
import java.util.Map;
 
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
//踢人
public class KickServlet extends HttpServlet {
 
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
ServletContext sc = getServletContext();
Map<String, HttpSession> users = (Map<String, HttpSession>) sc.getAttribute("users");
if(users!=null){
String username = request.getParameter("username");
username = new String(username.getBytes("ISO-8859-1"),"UTF-8");
HttpSession s = users.get(username);
if(s!=null){
s.invalidate();
users.remove(username);
}
}
response.sendRedirect(request.getContextPath()+"/onlineuser.jsp");
}
 
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
 
doGet(request, response);
}
 
}
2014年9月8日 16:55:13






<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title></title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
 
</head>
<body>
<c:if test="${sessionScope.user==null}">
<form action="${pageContext.request.contextPath}/servlet/LoginServlet" method="post">
username:<input type="text" name="username"/>(用户名不能重复,且不能为空)<br/>
<input type="submit" value="登录"/>
</form>
</c:if>
<c:if test="${sessionScope.user!=null}">
欢迎您:${sessionScope.user.username}<a href="#">注销</a>
</c:if>
<a href="onlineuser.jsp">在线用户</a>
</body>
</html>



package cn.itcast.domain;
 
import java.io.Serializable;
 
public class User implements Serializable {
private String username;
 
public String getUsername() {
return username;
}
 
public void setUsername(String username) {
this.username = username;
}
}



package cn.itcast.web.controller;
 
import java.io.IOException;
import java.io.PrintWriter;
 
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
 
import cn.itcast.domain.User;
 
public class LoginServlet extends HttpServlet {
 
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
request.setCharacterEncoding("UTF-8");
response.setContentType("text/html;charset=UTF-8");
PrintWriter out = response.getWriter();
//取到用户名:
String username = request.getParameter("username");
//验证用户是否合法(略)
User user = new User();
user.setUsername(username);
//正确:放到HttpSession中
HttpSession session = request.getSession();
session.setAttribute("user", user);
out.write("登录成功");
}
 
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
 
doGet(request, response);
}
 
}





package cn.itcast.domain;
 
import java.util.Collections;
import java.util.HashMap;
import java.util.Map;
 
import javax.servlet.ServletContext;
import javax.servlet.http.HttpSession;
import javax.servlet.http.HttpSessionAttributeListener;
import javax.servlet.http.HttpSessionBindingEvent;
//此处核心代码
public class OnlineUserListener implements HttpSessionAttributeListener {
//只要向HttpSession的域中放东东都会执行该方法
//我们要的是放的是User对象,标记还是user的东东
//找个地方存起来:容器要求唯一;页面上还能访问到该容器
public synchronized void attributeAdded(HttpSessionBindingEvent se) {
//找到存储的是user标记,且绑定的对象时User类
HttpSession session = se.getSession();
ServletContext sc = session.getServletContext();
Object obj = session.getAttribute("user");
if(obj!=null&&obj instanceof User){
//向容器中存起来
Map<String,HttpSession> map = (Map<String, HttpSession>) sc.getAttribute("users");//存放东东的容器(Map<String,HttpSession>.key:用户名;value:HttpSession对象)
if(map==null){
map = new HashMap<String, HttpSession>();//Collections.synchronizedMap(map)
sc.setAttribute("users", map);
}
map.put(((User)obj).getUsername(), session);
}
}
 
public synchronized void attributeRemoved(HttpSessionBindingEvent se) {
}
 
public void attributeReplaced(HttpSessionBindingEvent se) {
 
}
 
}



<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title></title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
 
</head>
<body>
<h1>在线用户</h1>
<c:if test="${empty applicationScope.users}">
对不起!没有在线用户
</c:if>
<c:if test="${!empty applicationScope.users}">
<c:forEach items="${applicationScope.users}" var="me">
<c:url value="/servlet/KickServlet" var="url">
<c:param name="username" value="${me.key}"></c:param>
</c:url>
${me.key}  <a href="${url}">踢出</a><br/>
</c:forEach>
</c:if>
</body>
</html>




package cn.itcast.web.controller;
 
import java.io.IOException;
import java.util.Map;
 
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
//踢人
public class KickServlet extends HttpServlet {
 
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
ServletContext sc = getServletContext();
Map<String, HttpSession> users = (Map<String, HttpSession>) sc.getAttribute("users");
if(users!=null){
String username = request.getParameter("username");
username = new String(username.getBytes("ISO-8859-1"),"UTF-8");
HttpSession s = users.get(username);
if(s!=null){
s.invalidate();
users.remove(username);
}
}
response.sendRedirect(request.getContextPath()+"/onlineuser.jsp");
}
 
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
 
doGet(request, response);
}
 
}
0 0
原创粉丝点击