Java进阶(三十三)java基础-filter
【摘要】 java基础-filter
我们先看看没有filter的时候,整个web客户端-服务端的一个流程。
接下来我们再看看引入了filter之后的Uml图。尝试分析这两者之间的差别。
filter从哪里来?
&n...
java基础-filter
我们先看看没有filter的时候,整个web客户端-服务端的一个流程。
接下来我们再看看引入了filter之后的Uml图。尝试分析这两者之间的差别。
filter从哪里来?
是在servlet2.3规范中加入的。
filter的生命周期?
同servlet的生命周期相同。
filter的执行过程?
看到这里有没有想起我们的数据库结构关于栈的描述,filter和栈一样,也是按照先进后出的顺序。
filter的实质(个人之言)
现阶段在我看来,filter其实是对http的请求进行过滤,所以有时候完全可以实现页面拦截的功能。它是一种声明式的服务,具有可插拔的能力。
应用
1.继承filter
-
package com.bjpowernode.drp.util.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;
-
/**
-
* 采用Filter统一处理字符集
-
* @author Administrator
-
*
-
*/
-
public class CharsetEncodingFilter implements Filter {
-
private String encoding;
-
public void destroy() {
-
}
-
public void doFilter(ServletRequest request, ServletResponse response,
-
FilterChain chain) throws IOException, ServletException {
-
System.out.print("刚刚进来");
-
//设置字符集
-
request.setCharacterEncoding("GB18030");
-
//继续执行
-
chain.doFilter(request, response);
-
System.out.print("好了,结束了");
-
}
-
/**
-
* @param filterConfig可以用来读取filter里头的参数
-
*/
-
public void init(FilterConfig filterConfig) throws ServletException {
-
this.encoding = filterConfig.getInitParameter("encoding");
-
System.out.print("encoding"+encoding);
-
}
-
}
2.在web.xml文件中配置
-
<?xml version="1.0" encoding="UTF-8"?>
-
<web-app version="2.4"
-
xmlns="http://java.sun.com/xml/ns/j2ee"
-
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
-
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
-
<display-name></display-name>
-
<!-- 告诉tomcat去找那个filter -->
-
<filter>
-
<filter-name>CharsetEncodingFilter</filter-name>
-
<filter-class>com.bjpowernode.drp.util.filter.CharsetEncodingFilter</filter-class>
-
<!-- 在filter里头传入参数 -->
-
<init-param>
-
<param-name>encoding</param-name>
-
<param-value>GBK</param-value>
-
</init-param>
-
</filter>
-
<!-- 告诉哪个filter对哪些个servlet起作用 -->
-
<filter-mapping>
-
<filter-name>CharsetEncodingFilter</filter-name>
-
<url-pattern>*.jsp</url-pattern>
-
</filter-mapping>
-
</web-app>
3.然后在页面加载的时候,就可以看到filter的效果了。
美文美图
文章来源: shq5785.blog.csdn.net,作者:No Silver Bullet,版权归原作者所有,如需转载,请联系作者。
原文链接:shq5785.blog.csdn.net/article/details/51793701
【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)