JavaWeb从入门到放弃(8)-servlet拦截器Fliter的使用(重定向和转发)
来源:互联网 发布:java读取log4j日志 编辑:程序博客网 时间:2024/06/03 19:04
Filter位于javax.servlet.Filter,作用是在请求到达Servlet之前和服务端返回从Servlet返回之后对消息进行拦截处理。
一.使用方法
1.实现Filter接口,重新init、destroy和doFilter方法,前两个方法一个是初始化一个是销毁,最后一个方法表示拦截的逻辑处理。
2.web.xml配置,配置和servlet配置相似,根据class配置别名,然后给这个别名配置需要拦截的servlet,*依然表示匹配所有。
实例:
<!-- 配置过滤器,后面的init表示自己定义的常量,在代码中可以获取到 --> <filter> <filter-name>myFilter</filter-name> <filter-class>com.test.c_171030.MyFilter</filter-class> <init-param> <param-name>data</param-name> <param-value>a data</param-value> </init-param> </filter> <!-- 配置过滤器需要过滤的url --> <filter-mapping> <filter-name>myFilter</filter-name> <url-pattern>/MyServlet</url-pattern> </filter-mapping>
在这个例子中我们定义了一个常量,这个常量在代码的读取方法如下:
data=filterConfig.getInitParameter("data");System.out.println("获取web.xml中存储的数值为:"+data);
二.使用举例
因为在doFilter方法中传入了Request和Respone对象,所以可以对请求头等部分信息进行修改。
比如:客户端请求了url+/MyServlet,现在由于需求变更,需要去请求url+/myServlet,那就需要使用如下:
1.请求转发:
HttpServletRequest request = (HttpServletRequest) servletRequest;
// 请求重定向,把之前请求/MyServelt重定向为到/myServrlt去// request.getRequestDispatcher("/myServelt").forward(request, servletResponse);
filterChain.doFilter(request, servletResponse);
这样调用doFilter之后,收到这个请求的servlet将是/myServlet对于的servlet了
2.重定向
HttpServletResponse httpServletResponse=(HttpServletResponse) servletResponse;// 直接拦截请求,重定向到百度或者报信息//httpServletResponse.sendRedirect("http://www.baidu.com");httpServletResponse.sendError(505,"服务端出线未知异常");
如果是转发,浏览器显示的地址不会改变还是原地址,如果是重定向,浏览器的地址将会是新的地址
举例:
客户端找servlet借钱,转发相当于这个servlet没有钱,它去找同项目下的其他servlet借,借到后给了客户端,客户端并不知道到底是谁的钱,所以地址栏一直显示的是servlet;
而重定向相当于servlet没有钱,它告诉客户端你去找别人吧,这个别人可以是这个项目下的其他servlet也可以是其他任意一个servlet(不管在哪,任何地方,不同工程,不同服务器都可以),然后客户端就去找这个servlet了,由于是客户端自己找这个servlet,所以浏览器的地址就变化了。
阅读全文
0 0
- JavaWeb从入门到放弃(8)-servlet拦截器Fliter的使用(重定向和转发)
- javaweb转发和重定向的区别
- JavaWeb从入门到放弃(6)-仔细看下servlet
- servlet的重定向和请求转发
- servlet的转发和重定向
- Servlet 的转发和重定向详解
- Servlet的请求转发和重定向
- jsp,servlet的转发和重定向
- servlet 重定向和转发的区别
- servlet的请求转发和重定向
- servlet的请求转发和重定向
- javaweb-servlet重定向与转发的区别及案例
- Servlet基础(二:转发和重定向)
- Servlet--转发和重定向
- JavaWeb从入门到放弃(1)-配置环境
- JavaWeb从入门到放弃(5)-连接上数据库
- Servlet的请求转发和重定向转发
- Servlet中的request对象、重定向和转发的区别(6)
- Java 单例模式(singleton)类设计
- python设计模式(模版方法模式)
- salt 基本认识
- 虚拟机中centos 无法上网(connect: network is unreachable)
- 微信小程序web-view用法
- JavaWeb从入门到放弃(8)-servlet拦截器Fliter的使用(重定向和转发)
- Java抽象类和接口的区别
- linux下面生成用户
- 神经网络常用激励函数
- 修复 failed to start file system check on /dev/mapper/fedora-home
- HDU 4284Travel (状压dp)
- 超百万观众同场看直播流畅不卡顿,快手如何做到的?|首次披露
- 希尔排序
- python爬虫基础知识整理