servlet 简单filter避免中文乱码等
Filter是个servlet中的接口,servlet内部实现了利用Filter来过滤请求。
可以在filter中根据条件决定是否调用chain.doFilter(request,response);即是否让目标资源执行。
可以在让目标资源执行前,对request和response作预处理,在让目标资源执行。
可以在目标资源执行之后,捕获目标资源的执行结果,从而实现一些特殊的功能。
使用前需要在xml中配置好filter,和<servlet>配置类似。struts中的web.xml配置文件有filter例子。
<filter>
<filter-name>FilterDemo</filter-name>
<filter-class>com.test.FilterDemo</filter-class>
</filter>
<filter-mapping>
<filter-name>FilterDemo</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
如果几个拦截器对同一个url-pattern进行拦截,那么谁出现在配置文件的最上面谁先执行。另外这种情况,会使FilterChain中有多个filter。
设置编码格式的filter的doFilter方法中的代码:
request.setCharacterEncoding(“UTF-8”);
response.setCharacterEncoding(“UTF-8”);
request.setContentType(“text/html;charset=UTF-8”);
chain.doFilter(request,response);//如果chain中没有其他filter,那么让目标资源执行。否则就执行下一个filter,相当于一个关卡将请求放行。如果本行之后还有代码,会在资源或者其他filter执行完之后再跳回来接着执行
filter的生命周期是在服务器启动的时候创建,只创建一个,服务器正常关掉的时候销毁。
filter的init方法中的参数FilterConfig filterConfig来自于配置文件中的:
<filter>
<filter-name>FilterDemo</filter-name>
<filter-class>com.test.FilterDemo</filter-class>
<init-param>
<param-name>xxx</param-name>
<param-value>yyy</param-value>
</init-param>
</filter>
可以用filterConfig.getInitParameter("xxx");的格式来获取。
相关文章
- spring mvc 框架URL接收中文参数的乱码解决方案
- jmeter接口测试-调用java的jar包-csv参数化请求-BeanShellPreProcessor生成验签作为请求验证参数-中文乱码----实战
- 正则去除 除了中文、数字、字母之外的字符
- Servlet -- 中文乱码解决
- mysql中的正则操作 匹配手机号,匹配中文,替换
- Android2.2 API 中文文档系列(2) —— EditText
- android 中文 api (43) —— Chronometer
- Android 中文API (37) —— AbsoluteLayout
- Linux终端中文显示乱码
- 1001 害死人不偿命的(3n+1)猜想 (15 分)—PAT (Basic Level) Practice (中文)
- tomcat中jsp引用图片img的src属性带中文路径无法显示的解决
- ubuntu18.04安装中中文输入法
- 3.2.5.10 识别中文的正则表达式
- Java Servlet的request/response中文乱码问题的解决方案
- 【构建工具】Gradle中文教程