java 代码
- 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.http.HttpServletResponse;
-
-
- public class EncodingAndCacheflush implements Filter{
- private FilterConfig config ;
- public void destroy() {
- }
-
- public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
- String encoding = config.getInitParameter("encoding");
- request.setCharacterEncoding(encoding);
- ((HttpServletResponse)response).setHeader("Pragma","No-cache");
- ((HttpServletResponse)response).setHeader("Cache-Control","no-cache");
- ((HttpServletResponse)response).setHeader("Expires","0");
- chain.doFilter(request, response);
- }
-
- public void init(FilterConfig config) throws ServletException {
- this.config = config;
- }
-
- }
在web.xml中加入Filter的配置,如下:
xml 代码
- <filter>
- <filter-name>EncodingAndCacheflush</filter-name>
- <filter-class>EncodingAndCacheflush</filter-class>
- <init-param>
- <param-name>encoding</param-name>
- <param-value>UTF-8</param-value>
- </init-param>
- </filter>
- <filter-mapping>
- <filter-name>EncodingAndCacheflush</filter-name>
- <url-pattern>/*</url-pattern>
- </filter-mapping>
还有几点需要注意的是:
要传递参数的时候最好使用form进行传参,如果使用链接的话当中文字符的时候过滤器转码是不会起作用的,还有就是页面上
form的method也要设置为post,不然过滤器也起不了作用。
然后在页面中设置编码为UTF-8这样就不必第次都进行转码了。
分享到:
相关推荐
这个Filter可能包含了上述所有功能的代码示例,包括如何获取和验证请求参数、如何设置字符编码、以及如何控制页面缓存。通过阅读和分析这个示例代码,你可以更深入地理解Filter在实际项目中的应用。 总结,Filter是...
本篇将详细讲解标题和描述中提到的四个有用的过滤器:防止浏览器缓存的过滤器、用户登录检测过滤器、字符编码过滤器以及资源保护过滤器。 1. **防止浏览器缓存的过滤器** 浏览器默认会缓存静态资源以提高加载速度...
这段代码展示了如何通过Filter设置字符编码。首先尝试从Filter配置中获取字符集参数,如果没有则使用默认值。接着设置请求和响应的字符集,并将请求传递下去。 #### 2. 控制浏览器缓存 有时候,我们需要控制浏览器...
- **数据转换**:统一设置字符编码,防止乱码问题。 - **性能优化**:如GZIP压缩,减少网络传输的数据量。 - **日志记录**:记录请求和响应的信息,便于调试和监控。 - **缓存控制**:控制静态资源的缓存策略,...
Filter 有多种应用场景,例如禁用页面缓存、字符编码过滤器、身份验证过滤器等。禁用页面缓存的过滤器可以通过设置 response 的头信息来禁用缓存,例如设置 Expires、Cache-Control、Pragma 等头信息。 字符编码...
在Web开发中,服务器端的字符编码设置对于确保数据正确处理至关重要。Apache Tomcat作为一款流行的Java应用服务器和Servlet容器,其默认的字符编码可能不总是符合所有项目的需求。特别是对于中文等非ASCII字符的支持...
- **字符编码转换**:统一处理请求和响应的编码问题。 - **日志记录**:记录请求信息,便于调试和分析。 - **缓存处理**:对静态资源进行缓存,减少服务器压力。 - **GZIP压缩**:压缩HTTP响应,减少网络传输的数据...
在Java Web开发中,我们需要确保正确地设置字符编码,避免在处理包含中文字符的数据时出现乱码。在Filter中,可以通过设置请求和响应的编码方式来解决,例如使用`request.setCharacterEncoding("UTF-8")`和`response...
`request.setCharacterEncoding("GBK")`确保了请求数据的编码方式,而`httpresp.setHeader("Cache-Control","no-cache")`和`httpresp.setHeader("Pragma","no-cache")`则用于禁止浏览器缓存响应内容,保证每次请求都...
公有类 ForceNoCacheFilter 实现 Filter 接口,重写 doFilter 方法,设置 Cache-Control、Pragma 和 Expires 三个头信息,以禁止浏览器缓存页面。 二、检测用户是否登陆的过滤器 这个过滤器的作用是检测用户是否已...
1. **字符编码转换**: 在请求进入Servlet之前,统一设置请求和响应的编码格式,防止乱码问题。 2. **权限控制**: 检查用户是否登录,未登录则重定向到登录页面。 3. **日志记录**: 记录请求信息,便于分析系统性能和...
1. **字符编码转换**:如上例所示,我们可以使用 Filter 来统一设置请求和响应的编码格式,避免乱码问题。 2. **权限控制**:Filter 可用于实现用户登录检查,只有已登录的用户才能访问某些资源。 3. **日志记录**:...
为此,开发者通常会使用字符编码过滤器来统一设置请求的字符编码。 **原理介绍:** - **实现类**:`CharacterEncodingFilter`继承自`Filter`接口。 - **作用**:此过滤器主要负责统一设置HTTP请求的字符编码,避免...
- **字符编码转换**:确保请求和响应的字符编码一致,避免乱码问题。 - **性能优化**:如GZIP压缩,减少网络传输的数据量。 - **缓存管理**:根据条件决定是否从缓存中获取数据,提高响应速度。 5. **Filter的...
- **字符编码转换**:确保请求和响应的编码一致,避免乱码问题。 - **性能优化**:如GZIP压缩,减少网络传输的数据量。 - **日志记录**:记录用户请求,便于分析和调试。 - **缓存控制**:控制静态资源的缓存...
4. **Filter应用场景**:Filter可以用于日志记录、权限验证、字符编码转换、GZIP压缩、缓存控制等多种场景。 5. **源码分析**:博客可能涉及到对Filter的源码分析,例如分析`javax.servlet.Filter`接口和相关的实现...
例如,下面的示例展示了如何通过`Filter`统一设置请求的字符编码为`gb2312`: ```java public class EncodingFilter implements Filter { private String encoding = null; @Override public void init...
Filter 可以实现多种功能,如身份验证、日志记录、缓存控制、字符编码转换等。在 Java 中,Filter 通常用于前台向后台传递数据时的过滤操作。 Filter 的生命周期包括三个阶段:init、doFilter 和 destroy。其中,...