韩国站群服务器,网络推广公司网站,网站建设询价采购,仁怀哪里可以做网站JAVA WEB篇4——Filter、Listener
1、Filter
Filter本意为”过滤“的含义#xff0c;是JavaWeb的三大组件之一#xff0c;三大组件为#xff1a;Servlet、Filter、 Listener过滤器是向 Web 应用程序的请求和响应处理添加功能的 Web 服务组件过滤器相当于浏览器与Web资源之…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 contentTypetext/html;charsetUTF-8 languagejava %
htmlheadtitle$Title$/title/headbodyform action${pageContext.request.contextPath}/RuoyrServletinput typetext namepwdinput typesubmit value提交/form/body
/htmlWebServlet(/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 contentTypetext/html;charsetUTF-8 languagejava %
html
headtitleTitle/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 version1.0 encodingUTF-8?
web-app xmlnshttp://xmlns.jcp.org/xml/ns/javaeexmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexsi:schemaLocationhttp://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsdversion4.0filterfilter-nameRuoyeFilter/filter-namefilter-classRuoyeFilter/filter-class/filterfilter-mappingfilter-nameRuoyeFilter/filter-nameurl-pattern/*/url-pattern/filter-mapping
/web-appWebFilter(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容器产生的事件并进行相应的处理
这玩意很强但是没看出来有什么用待补