什么是过滤器

简介Filter也称之为过滤器,它是Servlet技术中最实用的技术,Web开发人员通过Filter技术,对web服务器管理的所有web资源:例如Jsp, Servlet, 静态图片文件或静态 html 文件等进行拦截,从而实现一些特殊的功能。例如实现URL级别的权限访问控制、过滤敏感词汇、压缩响应信息等一些高级功能。它主要用于对用户请求进行预处理,也可以对HttpServletResponse进行后处理。使用Filter的完整流程:Filter对用户请求进行预处理,接着将请求交给Servlet进行处理并生成响应,最后Filter再对服务器响应进行后处理。

功能在HttpServletRequest到达 Servlet 之前,拦截客户的HttpServletRequest 。根据需要检查HttpServletRequest,也可以修改HttpServletRequest 头和数据。

在HttpServletResponse到达客户端之前,拦截HttpServletResponse 。根据需要检查HttpServletResponse,也可以修改HttpServletResponse头和数据。

实现 Filter 接口

Java Servlet 提供了过滤器接口:javax.servlet.Filter,过滤器需要实现 Filter,并重写三个抽象方法。1

2

3void (FilterConfig var1);

void doFilter(ServletRequest var1, ServletResponse var2, FilterChain var3); // 具体业务逻辑

void destroy(); // 销毁(初始化的内容)

init() 及 destroy() 仅执行一次,init() 在容器(web 容器)启动时执行,容器按照 web.xml 中 Filter(所有的) 注册的顺序执行 init(),destory() 在容器停止时执行。

创建过滤器

使用过滤器实现一个页面重定向功能。原本应该访问的页面由于已经销毁或者其他原因,导致不能访问,现在需要让该页面重定向至其他页面,我们约定原来的页面为 target,而重定向的页面为 replacement。

创建页面

两个页面,/pages/first.jsp 为target,/pages/second.jsp 为 replacement。first.jsp1

2

3

4

5

6

7

8

9

First

This is the first page.

second.jsp1

2

3

4

5

6

7

8

9

Second

This is the second page.

配置 web.xml1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

rendirectFilter

com.zhoupq.springmvcpro.filter.RedirectFilter

target

/pages/first.jsp

replacement

/pages/second.jsp

rendirectFilter

/*

创建 filter-class1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56package com.zhoupq.springmvcpro.filter;

import javax.servlet.*;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import java.io.IOException;

/**

* Author zhoupq

* Date 2017/10/12.

*/

public class RedirectFilter implements Filter

{

private String target = "";

private String replacement = "";

public void (FilterConfig filterConfig)

throws ServletException

{

this.target = filterConfig.getInitParameter("target");

this.replacement = filterConfig.getInitParameter("replacement");

}

public void doFilter(ServletRequest servletRequest,

ServletResponse servletResponse, FilterChain filterChain)

throws IOException, ServletException

{

//转换

HttpServletRequest request = (HttpServletRequest) servletRequest;

HttpServletResponse response = (HttpServletResponse) servletResponse;

/*

省略登录、权限判断

*/

// 当前访问的URL符合条件

if (this.target.equals(request.getRequestURI()))

{

// 重定向

response.sendRedirect(this.replacement);

}

// 进入 Filter 链(下一个Filter),最终web服务器就会调用web资源的service方法,即web资源就会被访问

filterChain.doFilter(request, response);

}

public void destroy()

{

this.target = null;

this.replacement = null;

}

}

启动Tomcat,浏览器访问 localhost:8080/first.jsp,浏览器重定向至 localhost:8080/second.jsp

感谢

java filter重定向_Java Filter(过滤器)——重定向相关推荐

  1. java post重定向_java实现响应重定向发送post请求操作示例

    本文实例讲述了java实现响应重定向发送post请求操作.分享给大家供大家参考,具体如下: 关于重定向我们用的比较多的还是redirect:重定向,默认发送的get请求. return "r ...

  2. java straem 过滤_Java Stream 过滤器

    Java Stream 过滤器教程展示了如何使用过滤操作过滤 Java 流. Java 流 Java 流是来自源的支持聚合操作的一系列元素. 流不存储元素. 元素是按需计算的. 元素是从数据源(如集合 ...

  3. java 转发与重定向_Java 转发和重定向的区别

    转发是服务器行为,重定向是客户端行为 1.转发在服务器端完成的;重定向是在客户端完成的 2.转发的速度快;重定向速度慢 3.转发的是同一次请求;重定向是两次不同请求 4.转发不会执行转发后的代码;重定 ...

  4. java stream过滤_Java Stream过滤器

    java stream过滤 Java Stream filter can be very helpful when you want to do some processing only on som ...

  5. dofilter在java中_在Filter的doFilter中进行重定向 出现异常

    我在 filter的 dofilter方法里 重定向到一个servlet 出现java.lang.IllegalStateException: Cannot create a session afte ...

  6. java web压缩过滤器_Java Web过滤器Filter(五)

    Filter概述 Filter意为滤镜或者过滤器,用于在Servlet之外对request或者response进行修改.Filter提出滤镜链的概念,一个FilterChain包括多外Filter.客 ...

  7. java filter教程_Java Web Filter 过滤器学习教程(推荐)

    一.Filter简介 Filter也称之为过滤器,它是Servlet技术中最激动人心的技术,WEB开发人员通过Filter技术,对web服务器管理的所有web资源:例如Jsp, Servlet, 静态 ...

  8. java拦截器放行_Java Filter(拦截器)

    多个Filter按照在配置文件中配置的filter顺序执行. 在web.xml文件中配置该Filter,使用init-param元素为该Filter配置参数,init-param可接受如下两个子元素: ...

  9. java实现请求发送_java实现响应重定向发送post请求操作示例

    本文实例讲述了java实现响应重定向发送post请求操作.分享给大家供大家参考,具体如下: 关于重定向我们用的比较多的还是redirect:重定向,默认发送的get请求. return "r ...

  10. java http 302重定向_Java 纯HTTP请求 禁止302自动重定向

    Java 纯HTTP Get请求获取响应内容,如果发生302重定向,继而模拟请求域获取重定向后的响应内容. 关键点:设置conn.setInstanceFollowRedirects为false即可 ...

最新文章

  1. .Net桌面程序的旗舰--参加亚控科技组态王7.0发布有感
  2. mfc指示灯报警显示_消防百科 | 火灾显示盘的基本功能有哪些?
  3. 大战设计模式【17】—— 建造者模式
  4. 撰写实施方案注意事项
  5. java空心菱形_java 空心菱形
  6. Dart 14-Day
  7. android modem开发(16)---MTK语音测试
  8. 【java笔记】线程间通信(2):生产者和消费者案例分析
  9. MySql存储过程的操作
  10. java优化 pdf_Java性能优化权威指南 PDF扫描[132MB]
  11. Windows网络编程之Socket高级编程简介
  12. (php毕业设计)基于php旅游信息网站管理系统源码
  13. mvp架构 java_MVP架构基本使用
  14. 文件服务器程序,CuteHttpFileServer(文件共享服务器软件)
  15. 单行文本溢出省略以及多行文本溢出省略css实现方式
  16. 网联V2X测试解决方案
  17. win10服务器cpu占用过高,解决win10服务主机内存和cpu高占用的解决方法
  18. 职业精神:薪水到底谁来决定
  19. 高等数学660---从179到185
  20. 计算机病毒:计算机病毒定义

热门文章

  1. 他一篇论文未发博士毕业!中科院最年轻院士入职浙大!
  2. Scihub永久链接
  3. ID3、C4.5、CART决策树算法解析(关键内容讲解)
  4. 洛谷 P2372 yyy2015c01挑战算周长
  5. Chrome 崩溃 相关
  6. 【深度学习】卷积神经网络(Convolutional Neural Network)
  7. GIS案例练习-----------第九天
  8. 高级GIS-1.提取纯净像元
  9. 机器学习-最小二乘拟合
  10. 正在更新office,应用程序无法正常启动