JAVA WEB篇4——Filter、Listener
生活随笔
收集整理的這篇文章主要介紹了
JAVA WEB篇4——Filter、Listener
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
JAVA WEB篇4——Filter、Listener
1、Filter
- Filter本意為”過濾“的含義,是JavaWeb的三大組件之一,三大組件為:Servlet、Filter、 Listener
- 過濾器是向 Web 應用程序的請求和響應處理添加功能的 Web 服務組件
- 過濾器相當于瀏覽器與Web資源之間的一道過濾網,在訪問資源之前通過一系列的過濾器對請求 進行修改、判斷以及攔截等,也可以對響應進行修改、判斷以及攔截等
1.1、簡單的登錄案例
<%--Created by IntelliJ IDEA.User: yoyaDate: 2021/7/18Time: 10:36To change this template use File | Settings | File Templates. --%> <%@ page contentType="text/html;charset=UTF-8" language="java" %> <html><head><title>$Title$</title></head><body><form action="${pageContext.request.contextPath}/RuoyrServlet"><input type="text" name="pwd"><input type="submit" value="提交"></form></body> </html> @WebServlet("/RuoyrServlet") public class RuoyrServlet extends HttpServlet {protected void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException {System.out.println("22222222222222222222222");String pwd = request.getParameter("pwd");request.getSession().setAttribute("pwd",pwd);if (pwd.equalsIgnoreCase("123"))response.sendRedirect(request.getContextPath()+"/success.jsp");}protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {this.doPost(request,response);} } <%--Created by IntelliJ IDEA.User: yoyaDate: 2021/7/19Time: 19:41To change this template use File | Settings | File Templates. --%> <%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head><title>Title</title> </head> <body> <%if (session.getAttribute("pwd")==null)response.sendRedirect(request.getContextPath()+"/index.jsp"); %> <h1>登陸成功</h1> </body> </html>每次都在jsp里寫判斷有點麻煩
1.2、Filter使用方式
如果有多個過濾器都滿足過濾的條件,則容器依據映射的先后順序來調用各個過濾器
1.2.1、web.xml
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"version="4.0"><filter><filter-name>RuoyeFilter</filter-name><filter-class>RuoyeFilter</filter-class></filter><filter-mapping><filter-name>RuoyeFilter</filter-name><url-pattern>/*</url-pattern></filter-mapping> </web-app> @WebFilter(urlPatterns = { "/*" }) public class RuoyeFilter implements Filter {@Overridepublic void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {System.out.println("11111111111111111");//放行HttpServletRequest httpServletRequest= (HttpServletRequest) servletRequest;HttpServletResponse httpServletResponse= (HttpServletResponse) servletResponse;System.out.println(httpServletRequest.getServletPath());if (httpServletRequest.getSession().getAttribute("pwd")!=null||httpServletRequest.getServletPath().equals("/RuoyrServlet")||httpServletRequest.getServletPath().equals("/index.jsp"))filterChain.doFilter(servletRequest,servletResponse);elsehttpServletResponse.sendRedirect(httpServletRequest.getContextPath());System.out.println("3333333333333333333333");} }注意導的包 import javax.servlet.annotation.WebFilter;
1.2.2、@WebFilter
@WebFilter(urlPatterns = { "/*" }) public class RuoyeFilter implements Filter {@Overridepublic void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {System.out.println("11111111111111111");//放行HttpServletRequest httpServletRequest= (HttpServletRequest) servletRequest;HttpServletResponse httpServletResponse= (HttpServletResponse) servletResponse;System.out.println(httpServletRequest.getServletPath());if (httpServletRequest.getSession().getAttribute("pwd")!=null||httpServletRequest.getServletPath().equals("/RuoyrServlet")||httpServletRequest.getServletPath().equals("/index.jsp"))filterChain.doFilter(servletRequest,servletResponse);elsehttpServletResponse.sendRedirect(httpServletRequest.getContextPath());System.out.println("3333333333333333333333");} }1.3、多過濾器
1.4、過濾器的優點
- 實現代碼的“可插拔性”,即增加或減少某個功能模塊,不會影響程序的正常執行
- 可以將多個相同處理邏輯的模塊集中寫在過濾器里面,可實現重復利用、也方便代碼的維護
2、 Listener
用來監聽Servlet容器產生的事件并進行相應的處理
這玩意很強,但是沒看出來有什么用,待補
總結
以上是生活随笔為你收集整理的JAVA WEB篇4——Filter、Listener的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: keil html转换工具,网页转换工具
- 下一篇: 某公司为本科以上学历的人重新分配工作,分