通过ServletContext监听初始化一个application对象,保存在线用户列表。代码该怎么写
时间: 2024-02-13 16:04:55 浏览: 126
以下是一个简单的Java Web应用程序中,通过ServletContext监听初始化一个application对象,保存在线用户列表的示例代码:
首先,需要创建一个Servlet监听器,在该监听器中实现ServletContextListener接口,并在contextInitialized()方法中初始化application对象,如下所示:
```java
public class OnlineUserListener implements ServletContextListener {
public void contextInitialized(ServletContextEvent sce) {
ServletContext context = sce.getServletContext();
List<User> onlineUsers = new ArrayList<User>();
context.setAttribute("onlineUsers", onlineUsers);
}
public void contextDestroyed(ServletContextEvent sce) {
// do nothing
}
}
```
在上面的代码中,我们实现了ServletContextListener接口,并在contextInitialized()方法中初始化了一个名为onlineUsers的List对象,并将其保存到application对象中。这个List对象将用于保存在线用户的信息。
接下来,我们可以在用户登录时,将他的信息添加到onlineUsers列表中:
```java
public class LoginServlet extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// 获取用户信息
String username = request.getParameter("username");
String password = request.getParameter("password");
// 验证用户是否合法
// ...
// 如果用户合法,将他的信息添加到在线用户列表中
ServletContext context = request.getServletContext();
List<User> onlineUsers = (List<User>) context.getAttribute("onlineUsers");
User user = new User(username, password);
onlineUsers.add(user);
context.setAttribute("onlineUsers", onlineUsers);
// 跳转到用户主页
// ...
}
}
```
在上面的代码中,我们首先从ServletContext对象中获取在线用户列表,并将用户的信息添加到列表中。最后,我们将更新后的在线用户列表保存到application对象中。
当用户退出时,我们可以从onlineUsers列表中删除他的信息,如下所示:
```java
public class LogoutServlet extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// 获取用户信息
String username = request.getParameter("username");
// 从在线用户列表中删除该用户
ServletContext context = request.getServletContext();
List<User> onlineUsers = (List<User>) context.getAttribute("onlineUsers");
for (User user : onlineUsers) {
if (user.getUsername().equals(username)) {
onlineUsers.remove(user);
break;
}
}
context.setAttribute("onlineUsers", onlineUsers);
// 跳转到登录页面
// ...
}
}
```
在上面的代码中,我们首先从ServletContext对象中获取在线用户列表,并遍历该列表,查找并删除要退出的用户的信息。最后,我们将更新后的在线用户列表保存到application对象中。
通过上述代码,我们可以在Java Web应用程序中通过ServletContext监听初始化一个application对象,保存在线用户列表,并实现用户登录和退出的功能。
阅读全文
相关推荐

















