至于串行过滤器有什么作用,我实在不知。我的理解是它只是说明 过滤器的串行运行方式

需求:当用户没有登录访问更新页面的时候,跳转到登录页面

1.登录页面:login.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<form action="UserLoginServlet" method="post">username:<input type="text" value="<%=null == request.getAttribute("username")?"" : request.getAttribute("username") %>" name="username"><br>password:<input type="text" name="password"><br>authority:<select  name="authority"><option value="1" <%="1".equals(request.getAttribute("authority"))?"selected = selected" : "" %>>common user</option><option value="2" <%="2".equals(request.getAttribute("authority"))?"selected = selected" : "" %>>adminstrator</option></select><br><input type="submit">
</form></body>
</html>

login.jsp

2.登录页面的servet容器

package com.filter;import java.io.IOException;import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;import com.javabean.User;public class UserLoginServlet extends HttpServlet
{@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp)throws ServletException, IOException{String username = (String)req.getParameter("username");String password = (String)req.getParameter("password");String authority = (String)req.getParameter("authority");if("1".equals(authority) && "zhangsan".equals(username) && "123".equals(password)){User user = new User();user.setUsername(username);user.setPassword(password);user.setAuthority(authority);HttpSession session = req.getSession();session.setAttribute("user",user);req.getRequestDispatcher("index.jsp").forward(req, resp);return ;}if("2".equals(authority) && "lisi".equals(username) && "456".equals(password)){User user = new User();user.setUsername(username);user.setPassword(password);user.setAuthority(authority);HttpSession session = req.getSession();session.setAttribute("user",user);req.getRequestDispatcher("index.jsp").forward(req, resp);return ;}System.out.println("meiyou denglu");resp.sendRedirect("login.jsp?error=true&username="+username+"&authority="+authority);}}

UserLoginServlet

3.主页面index.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%><%@ page import="com.javabean.User" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<a href="QueryServletFilter">query</a><br>
<%
User user = (User)session.getAttribute("user");
if(null == user)
{response.sendRedirect("login.jsp");return;
}if("2".equals(((User)session.getAttribute("user")).getAuthority())){%>
<a href="UpdateServletFilter">update</a><%} %>
</body>
</html>

index.jsp

4.查询servlet. QueryServletFilter

package com.filter;import java.io.IOException;import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;public class QueryServletFilter extends HttpServlet
{@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp)throws ServletException, IOException{System.out.println("QueryServletFilter run");}
}

View Code

5.更新servlet容器. UpdateServletFilter

package com.filter;import java.io.IOException;import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;public class UpdateServletFilter extends HttpServlet
{@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp)throws ServletException, IOException{System.out.println("UpdateServletFilter run");}
}

UpdateServletFilter

6.web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5"><display-name>filter</display-name><servlet><servlet-name>UserLoginServlet</servlet-name><servlet-class>com.filter.UserLoginServlet</servlet-class></servlet><servlet-mapping><servlet-name>UserLoginServlet</servlet-name><url-pattern>/filter/UserLoginServlet</url-pattern></servlet-mapping><servlet><servlet-name>QueryServletFilter</servlet-name><servlet-class>com.filter.QueryServletFilter</servlet-class></servlet><servlet-mapping><servlet-name>QueryServletFilter</servlet-name><url-pattern>/filter/QueryServletFilter</url-pattern></servlet-mapping><servlet><servlet-name>UpdateServletFilter</servlet-name><servlet-class>com.filter.UpdateServletFilter</servlet-class></servlet><servlet-mapping><servlet-name>UpdateServletFilter</servlet-name><url-pattern>/filter/UpdateServletFilter</url-pattern></servlet-mapping><!-- filter start --><filter><description>this is the servlet filter example</description><filter-name>userLoginServletFilter1</filter-name><filter-class>com.filter.UserLoginServletFilter</filter-class></filter><!-- 演示过滤器串行运行 --><filter><description>this is the servlet filter example</description><filter-name>userLoginServletFilter2</filter-name><filter-class>com.filter.UserLoginServletFilter2</filter-class></filter><!-- url-pattern表示只过滤 UpdateServletFilter这一个servlet容器--><filter-mapping><filter-name>userLoginServletFilter1</filter-name><url-pattern>/filter/UpdateServletFilter</url-pattern></filter-mapping><!-- url-pattern表示只过滤 UpdateServletFilter这一个servlet容器--><filter-mapping><filter-name>userLoginServletFilter2</filter-name><url-pattern>/filter/UpdateServletFilter</url-pattern></filter-mapping><!-- filter end -->
</web-app>

web.xml

7.filter拦截器 UserLoginServletFilter

package com.filter;import java.io.IOException;import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;public class UserLoginServletFilter implements Filter
{@Overridepublic void destroy(){System.out.println("destroy");}@Overridepublic void doFilter(ServletRequest request, ServletResponse response,FilterChain filterChain) throws IOException, ServletException{HttpServletRequest req = (HttpServletRequest)request;HttpSession s = req.getSession();if(req.getRequestURI().endsWith("login.jsp") || req.getRequestURI().endsWith("UserLoginServlet")){System.out.println("Filter1 start");filterChain.doFilter(request, response);System.out.println("filter1 end");return ;}if(null ==  s.getAttribute("user")){System.out.println("Filter1 start..");((HttpServletResponse)response).sendRedirect("login.jsp");return;}else{System.out.println("Filter1 start....");filterChain.doFilter(request, response);}}@Overridepublic void init(FilterConfig filterConfig) throws ServletException{System.out.println("init");}}

UserLoginServletFilter

8.filter拦截器2 UserLoginServletFilter2

package com.filter;import java.io.IOException;import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;public class UserLoginServletFilter2 implements Filter
{@Overridepublic void destroy(){System.out.println("destory2");}@Overridepublic void doFilter(ServletRequest request, ServletResponse response,FilterChain filterChain) throws IOException, ServletException{System.out.println("doFilter2 start");filterChain.doFilter(request, response);System.out.println("doFilter2 end");}@Overridepublic void init(FilterConfig arg0) throws ServletException{System.out.println("init2");}}

UserLoginServletFilter2

web.xml中url-pattern属性值表示访问的路径。

转载于:https://www.cnblogs.com/feiguo/p/3804019.html

servlet串行拦截器实现例子相关推荐

  1. AngularJS 拦截器和好棒例子

    2019独角兽企业重金招聘Python工程师标准>>> Interceptors in AngularJS and Useful Examples 有日期,我喜欢. $httpAng ...

  2. springboot _配置过滤器、拦截器、使用原生servlet

    配置过滤器.拦截器.使用原生servlet 过滤器和拦截器的根本区别 过滤器是servlet规范规定的,只能用于web程序中,而拦截器是在spring容器中,它不依赖servlet容器. 拦截器属于S ...

  3. 垃圾收集器–串行,并行,CMS,G1(以及Java 8中的新增功能)

    4个Java垃圾收集器–错误的选择如何严重影响性能 在2014年,对于大多数开发人员来说,还有两件事仍然是个谜:垃圾收集和了解异性. 由于我对后者知之甚少,所以我认为我会对前者大吃一惊,特别是因为在该 ...

  4. jsp/servlet过滤器和struts2拦截器的有什么区别

    jsp/servlet过滤器和struts2拦截器的有什么区别 542430725 | 浏览 3715 次  问题未开放回答  推荐于2016-11-14 01:43:29 最佳答案 过滤器,是在ja ...

  5. 过滤器、拦截器、监听器的区别与使用

    一.拦截器与过滤器的区别 过滤器 (Filter) 过滤器的配置比较简单,直接实现Filter 接口即可,也可以通过@WebFilter注解实现对特定URL拦截,看到Filter 接口中定义了三个方法 ...

  6. springboot拦截器 跳过_springboot创建拦截器过程图解

    springboot创建拦截器过程图解 这篇文章主要介绍了springboot创建拦截器过程图解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 一. ...

  7. spring过滤器Filter 、 拦截器Interceptor 、 切片Aspect 详解

    springboot 过滤器Filter vs 拦截器Interceptor vs 切片Aspect 详解 1 前言 最近接触到了过滤器和拦截器,网上查了查资料,这里记录一下,这篇文章就来仔细剖析下过 ...

  8. 拦截器,过滤器,监听器原理

    过滤器 创建一个Filter 只需两个步骤:  (1)创建Filter 处理类: (2)在web.xml 文件中配置Filter .  创建Filter 必须实现javax.servlet.Filte ...

  9. structs2拦截器详解

    Struts2(XWork)提供的拦截器的功能说明: 拦截器 名字 说明 Alias Interceptor alias 在不同请求之间将请求参数在不同名字件转换,请求内容不变 Chaining In ...

最新文章

  1. x86架构手机_都是芯片,为什么电脑CPU不能用在手机里?
  2. push代码到github时,每次都要输入用户名和密码的问题
  3. 看完这篇Exception 和 Error,和面试官扯皮就没问题了
  4. 《Engineering》评选2021年全球十大工程成就
  5. 7_12_2013 G: Mahjong problem
  6. 散列查找 散列表(哈希表)
  7. 2018-2019-1 20165219 实验三 实时系统
  8. Oracle在HPUX IA64平台登陆缓慢问题分析
  9. STM32 位段详解
  10. python画中秋的月亮_水彩中秋月亮教程
  11. 基于JAVA+SpringMVC+Mybatis+MYSQL的网上医院预约挂号系统
  12. 把照片存QQ相册会越来越模糊,你们会把照片存在哪里?
  13. linux安装运行jmeter,Linux下安装运行Jmeter程序
  14. IE不能打开网页的解决方案
  15. 百度文库刷财富值软件,如何刷百度文库财富值
  16. jquery省市县三级导航栏
  17. Unity3D新手入门教程 (b站阿发) 总结框架笔记
  18. 计算某年新年是星期几的公式【不过这天怎么也该是假期吧?】
  19. html给页面添加艺术型边框,如何为2016word的页面设置艺术型页面边框
  20. 浅析为什么没有朝代在武汉建都?

热门文章

  1. Swin Transformer V2!MSRA原班人马提出了30亿参数版本的Swin Transformer!
  2. Video-Touch:手势识别实现多用户远程控制机器人
  3. 微软亚研院 CVPR 2021 9篇视觉研究前沿进展
  4. 多功能的图像超分辨模型:用于盲图像超分辨的非对称卷积神经网络
  5. 资深程序员:Python中你不知道的那些小工具
  6. java stack 类 效率_Java中ArrayList、LinkedList、Vector、Stack的比较
  7. 重磅更新!YoloV4最新论文!解读yolov4框架
  8. 2020-11-08
  9. 听说你还不懂哈夫曼树和哈夫曼编码
  10. 小白视角来看传说中的卷积神经网络