刚学习了过滤器Filter,感觉有必要记录一下,后面有空了回去完善一下,明天有点儿重要的事情要办,今晚得准备一下的,所以大概简略的写了下Filter的基本用法以及相关的代码注释。
下面是过滤器内容,注意和Servlet的区别:
import javax.servlet.Filter
public class MyFilter implements Filter {
private String filterParamValue;// 保存从web.xml中获取的过滤器参数
// 复写的方法,销毁该过滤器时调用
@Override
public void destroy(){
}
// 过滤器过滤处理逻辑
@Override
public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException {
req.setCharacterEncoding(filterParamValue);// 设置编码格式
// 。。 可以在页面相应之前进行用户登录与否的操作从而实现身份权限
chain.doFilter(req, res);// 执行页面响应
}
// 过滤器初始化
@Override
public void init(FilterConfig cfg) throws ServletException {
String s = cfg.getInitParameter("filterparam");// 通过初始化参数名来获取该参数的值
if(s != null || (!"".equals(s.trim()))) {// 如果参数值不为空
filterParamValue = s;// 获取参数
} else {
filterParamValue = "UTF-8";// 默认编码为UTF-8格式
}
}
}
而这的下面是Filter在web.xml中的配置:
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://java.sun.com/xml/ns/javaee"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
id="WebApp_ID"
version="3.0">
<filter>
<filter-name>MyFilter</filter-name>
<filter-class>cn.com.dnyy.filter.MyFilter</filter-class><!-- 过滤器所在包目录 -->
<init-param><!-- 设置初始化Filter的参数列表 -->
<param-name>filterparam</param-name><!-- 参数名 -->
<param-value>UTF-8</param-value><!-- 参数值 -->
</init-param>
</filter>
<filter-mapping>
<filter-name>MyFilter</filter-name><-- 两个filter-name要统一 -->
<url-pattern>/*</url-pattern><!-- 所有页面均需要经过过滤器处理 -->
</filter-mapping>
</web-app>