java filter重定向_Java Filter(过滤器)——重定向
什么是过滤器
简介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(过滤器)——重定向相关推荐
- java post重定向_java实现响应重定向发送post请求操作示例
本文实例讲述了java实现响应重定向发送post请求操作.分享给大家供大家参考,具体如下: 关于重定向我们用的比较多的还是redirect:重定向,默认发送的get请求. return "r ...
- java straem 过滤_Java Stream 过滤器
Java Stream 过滤器教程展示了如何使用过滤操作过滤 Java 流. Java 流 Java 流是来自源的支持聚合操作的一系列元素. 流不存储元素. 元素是按需计算的. 元素是从数据源(如集合 ...
- java 转发与重定向_Java 转发和重定向的区别
转发是服务器行为,重定向是客户端行为 1.转发在服务器端完成的;重定向是在客户端完成的 2.转发的速度快;重定向速度慢 3.转发的是同一次请求;重定向是两次不同请求 4.转发不会执行转发后的代码;重定 ...
- java stream过滤_Java Stream过滤器
java stream过滤 Java Stream filter can be very helpful when you want to do some processing only on som ...
- dofilter在java中_在Filter的doFilter中进行重定向 出现异常
我在 filter的 dofilter方法里 重定向到一个servlet 出现java.lang.IllegalStateException: Cannot create a session afte ...
- java web压缩过滤器_Java Web过滤器Filter(五)
Filter概述 Filter意为滤镜或者过滤器,用于在Servlet之外对request或者response进行修改.Filter提出滤镜链的概念,一个FilterChain包括多外Filter.客 ...
- java filter教程_Java Web Filter 过滤器学习教程(推荐)
一.Filter简介 Filter也称之为过滤器,它是Servlet技术中最激动人心的技术,WEB开发人员通过Filter技术,对web服务器管理的所有web资源:例如Jsp, Servlet, 静态 ...
- java拦截器放行_Java Filter(拦截器)
多个Filter按照在配置文件中配置的filter顺序执行. 在web.xml文件中配置该Filter,使用init-param元素为该Filter配置参数,init-param可接受如下两个子元素: ...
- java实现请求发送_java实现响应重定向发送post请求操作示例
本文实例讲述了java实现响应重定向发送post请求操作.分享给大家供大家参考,具体如下: 关于重定向我们用的比较多的还是redirect:重定向,默认发送的get请求. return "r ...
- java http 302重定向_Java 纯HTTP请求 禁止302自动重定向
Java 纯HTTP Get请求获取响应内容,如果发生302重定向,继而模拟请求域获取重定向后的响应内容. 关键点:设置conn.setInstanceFollowRedirects为false即可 ...
最新文章
- .Net桌面程序的旗舰--参加亚控科技组态王7.0发布有感
- mfc指示灯报警显示_消防百科 | 火灾显示盘的基本功能有哪些?
- 大战设计模式【17】—— 建造者模式
- 撰写实施方案注意事项
- java空心菱形_java 空心菱形
- Dart 14-Day
- android modem开发(16)---MTK语音测试
- 【java笔记】线程间通信(2):生产者和消费者案例分析
- MySql存储过程的操作
- java优化 pdf_Java性能优化权威指南 PDF扫描[132MB]
- Windows网络编程之Socket高级编程简介
- (php毕业设计)基于php旅游信息网站管理系统源码
- mvp架构 java_MVP架构基本使用
- 文件服务器程序,CuteHttpFileServer(文件共享服务器软件)
- 单行文本溢出省略以及多行文本溢出省略css实现方式
- 网联V2X测试解决方案
- win10服务器cpu占用过高,解决win10服务主机内存和cpu高占用的解决方法
- 职业精神:薪水到底谁来决定
- 高等数学660---从179到185
- 计算机病毒:计算机病毒定义