20201109冯强
学习总结:
package com.itlaobing.userinfo.servlet.demo;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
/*** @Classname ServletDemo * @Description TODO() * @Date 2019/11/28 21:35 * @Author by Administrator * @Version v1.0 */
@WebServlet(name = "ServletDemo",urlPatterns = "/servletDemo") public class ServletDemo extends HttpServlet {
@Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
ServletContext servletContext = getServletContext();
//向servletContext对象中添加属性username:zhangsan
servletContext.setAttribute("username","zhangsan");
//替换servletContext对象中的属性username:lisi
servletContext.setAttribute("username","lisi");
//移除servletContext对象中的属性username
servletContext.removeAttribute("username");
}
}
@WebServlet("/login")
public class LoginController extends HttpServlet {
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
String username = req.getParameter("username");
String password = req.getParameter("password");
User user = new User();
user.setUsername(username);
user.setPassword(password);
CheckUser checkUser = new CheckUserImps();
User user1 = checkUser.checkLogin(user);
if(user1!=null){
HttpSession session = req.getSession();
session.setAttribute("user",user1);
session.setAttribute("num",1);
resp.sendRedirect("/success.jsp");
return;
}else {
resp.sendRedirect("/index.jsp");
}
}
}
12.1 什么是监听器
在实际生活着,我们很多商场有摄像头,监视着客户的一举一动。如果客户有违法行为,商场可以采取
相应的措施。同样,在我们的java程序中,有时也需要监视某些事情,一旦被监视的对象发生相应的变
化,我们应该采取相应的操作。这就需要用到java中的监听器。
web监听器是一种 Servlet 中的特殊的类,它们能帮助开发者监听web中的特定事件,比如
ServletContext , HttpSession , ServletRequest 的创建和销毁等。可以在某些动作前后增加处理,
实现监控。
12.2 监听器的使用场景
12.2.1 系统启动时初始化信息
ServletContextListener 用来监听 ServletContext 对象的创建和销毁的。当项目启动的时候,
servletContex t对象被创建,会调用 ServletContextListener 的 contextInitialized 方法。所
以我们可以在此方法中初始化项目需要的信息。
扩展 : 后面学习spring框架的时候,我们会使用到它.
12.2.2 统计在线人数
我们知道,每当一个用户访问项目的时候,都会创建一个 session 会话。所以当前 session 会话被创
建,当前在线用户 +1 ,每当 session 会话被销毁,当前在线用户 -1 。 HttpSessionListener 可以用
来监听 session 对象的创建和销毁的。所以可以在 HttpSessionListener 中的监听 session 对象创建
和销毁的方法中控制在线人数的加减。
12.3 常见的监听器
12.4 监听器开发步骤
监听器在web开发中使用的比较少,见的机会就更少了,今天我们使用ServletContextListener来带领
大家学习下监听器,因为这个监听器是监听器中使用率最高的一个,且监听器的使用方式都差不多.
我们使用这个监听器可以在项目启动和销毁的时候做一些事情,例如,在项目启动的时候加载配置文件.
12.4.1 ServletContextListener接口的API介绍
// 容器的创建和销毁
javax.servlet.ServletContextListener 作用是监听 ServletContext 的创建和销毁
javax.servlet.http.HttpSessionListener 作用是监听 HttpSession 的创建和销毁
javax.servlet.ServletRequestListener 作用是监听 ServletRequest 的创建和销毁
// 容器属性的监听, 包括 添加/替换/删除
javax.servlet.ServletContextAttributeListener 作用是监听 ServletContext 属性的变
化
javax.servlet.http.HttpSessionAttributeListener 作用是监听 HttpSession 属性的变
化
javax.servlet.ServletRequestAttributeListener 作用是监听 ServletRequest 属性的变
化
12.4.2 使用步骤
1.创建一个类实现 ServletContextListener 接口
2.给这个类在xml中配置或者添加注解 @WebListener
3.实现 ServletContextListener 的 contextInitialized 和 contextDestroyed 方法。
12.4.3 xml配置方式演示
ServletContextListener 代码如下:
web.xml配置如下
12.4.4 注解方式演
评论留言