监听器属于java web中的三大组件之一
监听器用于监听内置对象创建 监听内置对象作用域的值 监听容器(spring)的初始化操作
监听内置对象的创建与销毁
监听内置对象的作用域的值
监听session中对象的绑定
- package com.qf.listenter;
-
- import javax.servlet.ServletContextEvent;
- import javax.servlet.ServletContextListener;
- import javax.servlet.annotation.WebListener;
-
- /*@WebListener*/
- public class MyServletContextListener implements ServletContextListener {
- @Override
- public void contextInitialized(ServletContextEvent servletContextEvent) {
- System.out.println("创建");
- }
-
- @Override
- public void contextDestroyed(ServletContextEvent servletContextEvent) {
- System.out.println("销毁");
- }
- }
- package com.qf.listenter;
-
- import javax.servlet.ServletRequestEvent;
- import javax.servlet.ServletRequestListener;
- import javax.servlet.annotation.WebListener;
-
- /*@WebListener*/
- public class MyServletRequestListener implements ServletRequestListener {
- @Override
- public void requestDestroyed(ServletRequestEvent servletRequestEvent) {
- System.out.println("创建");
- }
-
- @Override
- public void requestInitialized(ServletRequestEvent servletRequestEvent) {
- System.out.println("销毁");
- }
- }
- package com.qf.servlet;
-
- 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 javax.servlet.http.HttpSession;
- import java.io.IOException;
- @WebServlet(name = "servlet01",urlPatterns = "/servlet01")
- public class Servlet01 extends HttpServlet {
- @Override
- protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
- System.out.println("发送了请求");
- /*HttpSession session = req.getSession();
- //手动销毁
- session.invalidate();*/
- }
- }
- package com.qf.listenter;
-
- import javax.servlet.annotation.WebListener;
- import javax.servlet.http.HttpSessionEvent;
- import javax.servlet.http.HttpSessionListener;
- /*@WebListener*/
- public class MyHttpSessionListener implements HttpSessionListener {
- @Override
- public void sessionCreated(HttpSessionEvent httpSessionEvent) {
- System.out.println("创建");
- }
-
- @Override
- public void sessionDestroyed(HttpSessionEvent httpSessionEvent) {
- System.out.println("销毁");
- }
- }
- package com.qf.servlet;
-
- 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 javax.servlet.http.HttpSession;
- import java.io.IOException;
- @WebServlet(name = "servlet01",urlPatterns = "/servlet01")
- public class Servlet01 extends HttpServlet {
- @Override
- protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
- System.out.println("发送了请求");
- HttpSession session = req.getSession();
- //手动销毁
- session.invalidate();
- }
- }
- package com.qf.listenter;
-
- import javax.servlet.ServletContextAttributeEvent;
- import javax.servlet.ServletContextAttributeListener;
- import javax.servlet.annotation.WebListener;
-
- /*@WebListener*/
- public class MyServletContextAttributeListener implements ServletContextAttributeListener {
- @Override
- public void attributeAdded(ServletContextAttributeEvent servletContextAttributeEvent) {
- System.out.println(servletContextAttributeEvent.getServletContext().getAttribute("uname"));
- System.out.println("执行了添加");
- }
-
- @Override
- public void attributeRemoved(ServletContextAttributeEvent servletContextAttributeEvent) {
- System.out.println(servletContextAttributeEvent.getServletContext().getAttribute("uname"));
- System.out.println("执行了删除");
- }
-
- @Override
- public void attributeReplaced(ServletContextAttributeEvent servletContextAttributeEvent) {
- System.out.println(servletContextAttributeEvent.getServletContext().getAttribute("uname"));
- System.out.println("执行了修改");
-
- }
- }
- package com.qf.servlet;
-
- 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;
-
- @WebServlet(name = "servlet02",urlPatterns = "/servlet02")
- public class Servlet02 extends HttpServlet {
-
- @Override
- protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
- ServletContext servletContext = req.getServletContext();
- servletContext.setAttribute("uname","班长");
- servletContext.setAttribute("uname","肥男");
- servletContext.removeAttribute("uname");
- }
- }
- package com.qf.listenter;
-
- import javax.servlet.ServletRequestAttributeEvent;
- import javax.servlet.ServletRequestAttributeListener;
- import javax.servlet.annotation.WebListener;
-
- /*@WebListener*/
- public class MyServletRequestAttributeListener implements ServletRequestAttributeListener {
- @Override
- public void attributeAdded(ServletRequestAttributeEvent servletRequestAttributeEvent) {
- System.out.println(servletRequestAttributeEvent.getServletRequest().getAttribute("uname"));
- System.out.println("执行了添加");
- }
-
- @Override
- public void attributeRemoved(ServletRequestAttributeEvent servletRequestAttributeEvent) {
- System.out.println(servletRequestAttributeEvent.getServletRequest().getAttribute("uname"));
- System.out.println("执行了删除");
- }
-
- @Override
- public void attributeReplaced(ServletRequestAttributeEvent servletRequestAttributeEvent) {System.out.println(servletRequestAttributeEvent.getServletRequest().getAttribute("uname"));
- System.out.println("执行了修改");
-
- }
- }
- package com.qf.servlet;
-
- 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;
-
- @WebServlet(name = "servlet03",urlPatterns = "/servlet03")
- public class Servlet03 extends HttpServlet {
- @Override
- protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
- req.setAttribute("uname","班长");
- req.setAttribute("uname","肥男");
- req.removeAttribute("uname");
- }
- }
- package com.qf.listenter;
-
- import javax.servlet.annotation.WebListener;
- import javax.servlet.http.HttpSessionAttributeListener;
- import javax.servlet.http.HttpSessionBindingEvent;
- /*@WebListener*/
- public class MyHttpSessionAttributeListener implements HttpSessionAttributeListener {
- @Override
- public void attributeAdded(HttpSessionBindingEvent httpSessionBindingEvent) {
- System.out.println(httpSessionBindingEvent.getSession().getAttribute("uname"));
- System.out.println("执行了添加");
- }
-
- @Override
- public void attributeRemoved(HttpSessionBindingEvent httpSessionBindingEvent) {
- System.out.println(httpSessionBindingEvent.getSession().getAttribute("uname"));
- System.out.println("执行了删除");
- }
-
- @Override
- public void attributeReplaced(HttpSessionBindingEvent httpSessionBindingEvent) {
- System.out.println(httpSessionBindingEvent.getSession().getAttribute("uname"));
- System.out.println("执行了修改");
-
- }
- }
- package com.qf.servlet;
-
- 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 javax.servlet.http.HttpSession;
- import java.io.IOException;
-
- @WebServlet(name = "servlet04",urlPatterns = "/servlet04")
- public class Servlet04 extends HttpServlet {
- @Override
- protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
- HttpSession session = req.getSession();
- session.setAttribute("uname","班长");
- session.setAttribute("uname","肥男");
- session.removeAttribute("uname");
- }
- }
- package com.qf.entity;
-
- import javax.servlet.http.HttpSessionBindingEvent;
- import javax.servlet.http.HttpSessionBindingListener;
-
- public class STest implements HttpSessionBindingListener {
- @Override
- public void valueBound(HttpSessionBindingEvent httpSessionBindingEvent) {
- System.out.println(httpSessionBindingEvent.getSession().getAttribute("uname"));
- System.out.println("绑定");
- }
-
- @Override
- public void valueUnbound(HttpSessionBindingEvent httpSessionBindingEvent) {
- System.out.println(httpSessionBindingEvent.getSession().getAttribute("uname"));
- System.out.println("解绑");
-
- }
- }
- package com.qf.servlet;
-
- import com.qf.entity.STest;
-
- 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 javax.servlet.http.HttpSession;
- import java.io.IOException;
-
- @WebServlet(name = "servlet05",urlPatterns = "/servlet05")
- public class Servlet05 extends HttpServlet {
- @Override
- protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
- STest s = new STest();
- HttpSession session = req.getSession();
- session.setAttribute("STest",s);
- session.removeAttribute("STest");
-
- }
- }
开发中过滤器是对请求路径以及数据进行过滤
- package com.qf.filter;
-
- import javax.servlet.*;
- import javax.servlet.annotation.WebFilter;
- import java.io.IOException;
- @WebFilter(urlPatterns = "/*")
- public class MyFilter implements Filter {
-
- //初始化
- @Override
- public void init(FilterConfig filterConfig) throws ServletException {
-
- }
- //过滤方法
- @Override
- public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
- System.out.println("执行");
- //放行
- filterChain.doFilter(servletRequest, servletResponse);
- System.out.println("哈哈哈");
- }
- //销毁
- @Override
- public void destroy() {
-
- }
- }

- <filter>
- <filter-name>myFilterfilter-name>
- <filter-class>filter.MyFilterfilter-class>
- filter>
- <filter-mapping>
- <filter-name>myFilterfilter-name>
- <url-pattern>/*url-pattern>
- filter-mapping>


代码:
jsp
- <%--
- Created by IntelliJ IDEA.
- User: 86182
- Date: 2022/9/7
- Time: 13:38
- To change this template use File | Settings | File Templates.
- --%>
- <%@ page contentType="text/html;charset=UTF-8" language="java" %>
- <html>
- <head>
- <title>Titletitle>
- head>
- <body>
- <form action="${pageContext.request.contextPath}/servlet06" method="post">
- <p style="color: red">
- ${msg}
- p>
- <p>
- 用户名:<input type="text" name="uname">
- p>
- <p>
- 密码:<input type="password" name="upwd">
- p>
- <p>
- <input type="submit" value="登录">
- p>
- form>
- body>
- html>
-
-
-
-
-
- <%--
- Created by IntelliJ IDEA.
- User: 86182
- Date: 2022/9/7
- Time: 13:40
- To change this template use File | Settings | File Templates.
- --%>
- <%@ page contentType="text/html;charset=UTF-8" language="java" %>
- <html>
- <head>
- <title>Titletitle>
- head>
- <body>
- <h1>登录成功h1>
- body>
- html>
servlet
- package com.qf.servlet;
-
- 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;
-
- @WebServlet(name = "servlet06",urlPatterns = "/servlet06")
- public class Servlet06 extends HttpServlet {
- @Override
- protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
- //获取前端传递的参数
- String uname = req.getParameter("uname");
- String upwd = req.getParameter("upwd");
- //验证登录
- if ("admin".equals(uname)&&"123456".equals(upwd)){
- //将用户名添加到sess作用域中
- req.getSession().setAttribute("uname",uname);
- //跳转到登录成功页面
- resp.sendRedirect("success.jsp");
- }else {
- req.setAttribute("msg","登录失败");
- req.getRequestDispatcher("login.jsp").forward(req,resp);
- }
- }
- }
过滤器:
- package com.qf.filter;
-
- import javax.servlet.*;
- import javax.servlet.annotation.WebFilter;
- import javax.servlet.http.HttpServletRequest;
- import javax.servlet.http.HttpServletResponse;
- import java.io.IOException;
- @WebFilter(urlPatterns = "/*")
- public class LoginFilter implements Filter {
- @Override
- public void init(FilterConfig filterConfig) throws ServletException {
-
- }
-
- @Override
- public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
- HttpServletRequest request = (HttpServletRequest) servletRequest;
- HttpServletResponse response = (HttpServletResponse) servletResponse;
- //获取请求路径
- String uri = request.getRequestURI();
- //判断路径中是否包含登录页面或者servlet06路径
- if (uri.contains("login.jsp")||uri.contains("servlet06")){
- //放行
- filterChain.doFilter(servletRequest, servletResponse);
- }else {
- //获取session中的值
- Object uname = request.getSession().getAttribute("uname");
- //判断
- if (uname==null||"".equals(uname)){
- request.setAttribute("msg","非法登录");
- request.getRequestDispatcher("login.jsp").forward(request,response);
- }else {
- //uname存在
- //放行
- filterChain.doFilter(servletRequest, servletResponse);
- }
- }
-
- }
-
- @Override
- public void destroy() {
-
- }
- }
修改tomcat默认访问的路径:
