过滤器
2016-05-26 14:41
183 查看
定义:
过滤器其实就是拦截器的一种,可以用于登录、加密和解密、会话检查、图片转换等等,比如:验证用户是否有权限访问哪个页面
过滤流程:
首先过滤器必须要实现javax.servlet.Filter接口,然后会实现这三个方法init、doFilter、destroy;还要在web.xml配置,因为过滤器属于servlet的一种。
Filter API:
三个接口:Filter、FilterConfig、FilterChain
三个方法:
init():void init(FilterConfig filterConfig)
doFilter():void doFilter(ServletRequest request,ServletResponse response,FilterChain chain)
destroy():void destroy()
过滤器的配置
web.xml的配置:
属性:
asyncSupported:指定过滤器是否支持异步操作模式
description:过滤器的描述
dispatherTypes:应用过滤器的dispatcher类型
displayName:过滤器的显示名称
filterName:过滤器的名称
initParams:初始参数
largeIcon:过滤器的大图标名称
servletNames:适用于过滤器的Servlet名称
smallIcon:过滤器的小图标名称
urlPatterns:应用过滤器的URL模式
value:应用过滤器的URL模式
实例:
@WebFilter(filterName="DataCompressionFilter",urlPatterns={"/*"})
实例
解决乱码问题
过滤器其实就是拦截器的一种,可以用于登录、加密和解密、会话检查、图片转换等等,比如:验证用户是否有权限访问哪个页面
过滤流程:
首先过滤器必须要实现javax.servlet.Filter接口,然后会实现这三个方法init、doFilter、destroy;还要在web.xml配置,因为过滤器属于servlet的一种。
Filter API:
三个接口:Filter、FilterConfig、FilterChain
三个方法:
init():void init(FilterConfig filterConfig)
doFilter():void doFilter(ServletRequest request,ServletResponse response,FilterChain chain)
destroy():void destroy()
过滤器的配置
web.xml的配置:
<filter> <filter-name>DataCompressionFilter</filter-name> <filter-class>com....filter..</filter-class> </filter> <filter-mapping> <filter-name>DataCompressionFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>@WebFilter注解类型:
属性:
asyncSupported:指定过滤器是否支持异步操作模式
description:过滤器的描述
dispatherTypes:应用过滤器的dispatcher类型
displayName:过滤器的显示名称
filterName:过滤器的名称
initParams:初始参数
largeIcon:过滤器的大图标名称
servletNames:适用于过滤器的Servlet名称
smallIcon:过滤器的小图标名称
urlPatterns:应用过滤器的URL模式
value:应用过滤器的URL模式
实例:
@WebFilter(filterName="DataCompressionFilter",urlPatterns={"/*"})
实例
解决乱码问题
public class CharacterEncodingFilter implements Filter { private FilterConfig config; public void destroy() { } public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { String charset = config.getInitParameter("charset"); String encodingFlag = config.getInitParameter("encodingFlag"); if (charset == null) { charset = "UTF-8"; } request.setCharacterEncoding(charset); chain.doFilter(request, response); if ("true".equals(encodingFlag)) { response.setCharacterEncoding(charset); response.setContentType("text/html; charset=" + charset); } } public void init(FilterConfig config) throws ServletException { this.config = config; } }
相关文章推荐
- 等待网络服务是否可用
- python Flask restful框架
- 仿淘宝Banner:左右滑动ViewPager+最后一张滑动查看详情
- js获取select标签选中的值
- 同步容器类
- 关于程序设计中INF和MOD值的设定
- 关于广告联盟的高价词问题
- Spring MVC Request method 'POST' not supported错误
- Unity 2D射线与 3D射线 UI射线
- 中文python笔记
- github付钱吃亏记
- android网络安全
- document.write 存在几个问题?应该注意
- 修改第三方库内容,carsh提示"image not found"
- js中几种实用的跨域方法原理详解
- Java-常见错误集锦
- AgularJS中Unknown provider: $routeProvider错误的解决方法
- oracle 怎样查询某用户下的所有表的表名??
- int main(int argc,char* argv[])详解
- UIPopOverController的使用问题