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

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

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
{
@Override
protected 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
{
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException
{
System.out.println("QueryServletFilter run");
}
}

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
{
@Override
protected 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
{ @Override
public void destroy()
{
System.out.println("destroy");
} @Override
public 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); } } @Override
public 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
{ @Override
public void destroy()
{
System.out.println("destory2"); } @Override
public 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"); } @Override
public void init(FilterConfig arg0) throws ServletException
{
System.out.println("init2");
} }

UserLoginServletFilter2

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

servlet串行拦截器实现例子的更多相关文章

  1. 过滤器(servlet.filter)和拦截器(springmvc.interceptor)区别

    ①拦截器是基于java的反射机制的,而过滤器是基于函数回调. ②拦截器不依赖与servlet容器,过滤器依赖与servlet容器. ③拦截器只能对action请求起作用,而过滤器则可以对几乎所有的请求 ...

  2. Servlet 过滤器、拦截器、监听器以及文件上传下载

    在学习之初,总是对过滤器.拦截器.监听器这三个搞不清楚,现在进行一些记录,方便大家交流,也为了提高自身的学习能力! 如果想要了解这三个的作用,首先对servlet流程进行熟悉了解,servlet是客户 ...

  3. struts2动态调用+Servlet过滤器+struts2拦截器

    周末真的是懒到心慌...... 本文是在完整s2sh项目基础上添加的,不太了解s2sh项目构建的朋友可以先参考一下这几篇文章: eclipse环境下基于tomcat-7.0.82构建struts2项目 ...

  4. AngularJS 拦截器和应用例子(转)

    $httpAngularJS 的 $http 服务允许我们通过发送 HTTP 请求方式与后台进行通信.在某些情况下,我们希望可以俘获所有的请求,并且在将其发送到服务端之前进行操作.还有一些情况是,我们 ...

  5. AngularJS 拦截器和好棒例子

    目录[-] 什么是拦截器? 异步操作 例子 Session 注入(请求拦截器) 时间戳(请求和响应拦截器) 请求恢复 (请求异常拦截) Session 恢复 (响应异常拦截器) 总结 Intercep ...

  6. Spring MVC - 拦截器实现 和 用户登陆例子

    1.拦截器 SpringMvc中的拦截器实现了HandlerInterceptor接口,通常使用与身份认证,授权和校验,模板视图,统一处理等: public class HanderIntercept ...

  7. java 拦截器、过滤器、监听器

    一.理解Struts2拦截器 1. Struts2拦截器是在访问某个Action或Action的某个方法,字段之前或之后实施拦截,并且Struts2拦截器是可插拔的,拦截器是AOP的一种实现. 2. ...

  8. Struts2拦截器和标签

    一.struts2拦截器 1.struts2是框架,封装了很多的功能,struts2里面封装的功能都是在拦截器里面. 2 struts2里面封装了很多的功能,有很多拦截器,不是每次这些拦截器都执行,每 ...

  9. 1.5(Spring MVC学习笔记) 拦截器(Interceptor)

    一.拦截器 1.1拦截器简介 Spring中的拦截器类似Servlet中的过滤器(Filter),主要用于拦截用户请求, 并进行一定的处理操作(如验证权限.记录日志.设置编码方式等). 1.2拦截器实 ...

随机推荐

  1. vue常用指命

    1.v-text:用于更新标签包含的文本,作用和{{}}的效果一样. 2.v-html:绑定一些包含html代码的数据在视图上. 3.v-show:用来控制元素的display属性,和显示隐藏有关.v ...

  2. Weblogic内存溢出及常用参数配置

        http://www.360doc.com/content/14/0306/14/16134804_358216319.shtml 一.WebLogic内存溢出 最近访问量门户访问量突然增大, ...

  3. Redis Sentinel 情况下bind地址设置

    Redis Sentinel 情况下bind地址设置 1个master,2个slave,3个sentinel的情况下,注意bind地址的时候不要写0.0.0.0,会导致绑定多个地址, 然后sentin ...

  4. windows pipe

    管道分为 匿名管道 和 命名管道 . 1.匿名管道仅仅能在父子进程间进行通信.不能在网络间通信,并且传输数据是单向的.仅仅能一端写,还有一端读. 2.命令管道能够在随意进程间通信.通信是双向的,随意一 ...

  5. PS 基础知识 什么是Adobe Bridge

    Adobe Bridge是什么 悬赏分:0 - 解决时间:2007-2-23 10:50 下载的PS中附带了Adobe Bridge,可我不知道它是干什么用的?如何使用??? 谢谢! 提问者: Car ...

  6. Ubuntu中一次更改用户名带来的连锁反应

    我是一个ubuntu新手,接触ubuntu半年不到,装系统的时候输入了一个用户名,但是最近突然想更名了,这是悲剧的开始! google:ubuntu change username等相关的关键字,最终 ...

  7. vim 寄存器的使用

    1. 寄存器的格式 "[a~z] 2. 在复制时指定寄存器:"ayw 3. 剪切时使用寄存器:"add 3. 黏贴时指定从某个寄存器处获取数据:"ap 4. 几 ...

  8. 简单的HTML5音乐播放器(带歌词滚动)

      // // 0) { this.lrcArr.push(item); } } frag = document.createDocumentFragment(); for(i = 0,len = t ...

  9. input 的read only 和 disable的区别

    read only ---------->只能读,不能操作,但是数据可以提交 disable -------------->控件被禁用,数据不能提交

  10. StringUtils类使用 (转载)

    检查字符串是否为空或null或仅仅包含空格  String test = "";  String test1=" ";  String test2 = &quo ...