效果展示
换个浏览器
这种统计并不准确,因为可能用户下线了,但是session还没有失效,只提供参考。
因此在web.xml中设置了下session的失效时间。
<session-config>
<!--设置session失效时间,这里为1分钟-->
<session-timeout>1</session-timeout>
</session-config>
项目结构
源码
java
User.java
用户实体类。
package bean;
public class User {
private int id;
private String username;
private String password;
public User() {
}
public User(String username, String password) {
this.username = username;
this.password = password;
}
public User(int id, String username, String password) {
this.id = id;
this.username = username;
this.password = password;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}
SessionListener.java
package listener;
import javax.servlet.annotation.WebListener;
import javax.servlet.http.HttpSessionEvent;
import javax.servlet.http.HttpSessionListener;
@WebListener
public class SessionListener implements HttpSessionListener {
// 当前用户数
private int userCounts=0;
@Override
public void sessionCreated(HttpSessionEvent httpSessionEvent) {
userCounts++;
httpSessionEvent.getSession().getServletContext().setAttribute("userCounts",userCounts);
}
@Override
public void sessionDestroyed(HttpSessionEvent httpSessionEvent) {
userCounts--;
httpSessionEvent.getSession().getServletContext().setAttribute("userCounts",userCounts);
}
}
LoginServlet.java
package servlet;
import bean.User;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
public class LoginServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
this.doPost(request, response);
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException {
request.setCharacterEncoding("UTF-8");
response.setContentType("text/html;charset=UTF-8");
// 获取用户名
String username = request.getParameter("username");
// 获取密码
String password = request.getParameter("password");
// 实例化用户对象
User user = new User(username, password);
// 将用户数据保存到session给
request.getSession().setAttribute("user", user);
// 跳转到主页
response.sendRedirect("index.jsp");
}
}
web
web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
version="2.5">
<session-config>
<!--设置session失效时间,这里为1分钟-->
<session-timeout>1</session-timeout>
</session-config>
<!--欢迎页面-->
<welcome-file-list>
<welcome-file>login.jsp</welcome-file>
</welcome-file-list>
<!--登录Servlet-->
<servlet>
<servlet-name>LoginServlet</servlet-name>
<servlet-class>servlet.LoginServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>LoginServlet</servlet-name>
<url-pattern>/loginServlet</url-pattern>
</servlet-mapping>
<!--监听器-->
<listener>
<listener-class>listener.SessionListener</listener-class>
</listener>
</web-app>
index.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>欢迎</title>
</head>
<body>
欢迎您:${user.username} <br>
当前在线用户:<%=session.getServletContext().getAttribute("userCounts")%>
</body>
</html>
login.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>登陆</title>
</head>
<body>
<form action="loginServlet" method="post">
<input type="text" name="username"><br>
<input type="text" name="password"><br>
<input type="submit" value="提交"><br>
</form>
</body>
</html>
如果对完整源码感兴趣。
可搜索微信公众号【Java实例程序】或者扫描下方二维码关注公众号获取更多。
注意:在公众号后台回复【CSDN201910082341】可获取本节源码。