Java学习日记3(过滤器)
来源:互联网 发布:美国彩虹计划 知乎 编辑:程序博客网 时间:2024/06/11 23:18
过滤器
访问Servlet之前和之后,可以增加一些我们的业务程序,就是过滤器。
执行顺序:
如何实现Filter:
- 编写Filter类实现javax.servlet.Filter接口
- 配置Filter过滤哪些Servlet
在xml配置中,哪个Filter配置在前面就先执行哪个
Xml配置:
<filter> <filter-name>logger</filter-name> <filter-class>com.oracle.LoggerFilter</filter-class> </filter> <filter-mapping> <filter-name>logger</filter-name> <url-pattern>/admin/*</url-pattern>//意思是过滤admin文件夹下所有的页面 </filter-mapping>
也可以用Annotation配置,不过xml可以保证Filter的顺序。
@WebFilter("/admin/*")
一个简单的Filter:
package com.oracle;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 FirstFilter implements Filter { FilterConfig fc; @Override public void destroy() { System.out.println("FirstFilter......destroy..........."); } @Override public void doFilter(ServletRequest arg0, ServletResponse arg1, FilterChain arg2) throws IOException, ServletException { System.out.println("FirstFilter......dofilter..........."); System.out.println("执行目标Servlet之前。。。。。。。。。。。。。。。。。"); arg2.doFilter(arg0, arg1);//把当前请求响应交给下一个目标,这里执行下一个Filter或者是目标Servlet。 System.out.println("执行目标Servlet之后。。。。。。。。。。。。。。。。。。"); } @Override public void init(FilterConfig arg0) throws ServletException { System.out.println("FirstFilter......init..........."); this.fc=arg0; }}
再写另一个过滤器。。
package com.oracle;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.annotation.WebFilter;//@WebFilter("/admin/*")public class LoggerFilter implements Filter { @Override public void destroy() { // TODO Auto-generated method stub } @Override public void doFilter(ServletRequest arg0, ServletResponse arg1, FilterChain arg2) throws IOException, ServletException { System.out.println("Logger....前日志。。。。。。。"); arg2.doFilter(arg0, arg1); System.out.println("Logger....后日志..........."); } @Override public void init(FilterConfig arg0) throws ServletException { // TODO Auto-generated method stub }}
在控制台的显示:
Logger....前日志。。。。。。。FirstFilter......dofilter...........执行目标Servlet之前。。。。。。。。。。。。。。。。。HelloServlet.....service......执行目标Servlet之后。。。。。。。。。。。。。。。。。。Logger....后日志...........
如果想重写Request和Response中的方法,那么就可以继承以下4个包装类:
- ServletRequestWrapper
- ServletResponseWrapper
- HttpServletRequestWrapper
- HttpServletResponseWrapper
用过滤器我们可以实现:
- 过滤IP
- 图片防外链(只能从自己的网站上看到正确图片,从别的网站请求看到的是不同的图片)
- 重写一个好看的404页面,对用户友善一些
这里就这些啦~
0 0
- Java学习日记3(过滤器)
- java学习日记3
- 四个有用的Java过滤器 - Jean的Java学习日记 - CSDNBlog
- Java菜鸟学习日记3
- Java EE学习日记3
- java过滤器学习总结
- JAVA Web过滤器学习
- 我的java学习日记(3)
- 【笨鸟先飞】Java重新学习日记3---数组
- Java和Scala学习日记3
- java学习日记(线程)
- java学习日记
- Java学习日记
- Java学习日记(一)
- JAVA学习日记
- Java高新技术学习日记
- java学习日记1
- Java学习日记
- 让图片自适应高宽
- 通用机器学习平台设计(不断更新)
- 6.1. Correlation Identifier
- L1-004. 计算摄氏温度
- 6.2. Event Message
- Java学习日记3(过滤器)
- 6.3. Return Address
- Implicit super constructor Object is undefined for default constructor. Must define an explicit cons
- FreeSWITCH(二)
- Openlayers进行WFS-T操作完整代码
- windows环境下新建.txt文件,使其默认以UTF-8编码
- python3中的迭代器与生成器
- Chapter 7. Message Routing
- 成功人士的七个习惯