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 注解方式演

评论

this is is footer