请问有人可以比较详细的说一下过滤器(Filter)的作用吗?最好带上一个小例子,谢谢 请问有人可以比较详细的说一下过滤器(Filter)的作用吗?最好带上一个小例子,谢谢 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 public class EncodingFilter implements Filter { private String encoding = "ISO-8859-1"; private final Logger log = Logger.getLogger(this.getClass()); public void init(FilterConfig config) throws ServletException { String tmp = config.getInitParameter("encoding"); if (tmp != null) { encoding = tmp; } log.info("初始化編碼過濾器,編碼格式:" + encoding); } public void doFilter(ServletRequest arg0, ServletResponse arg1, FilterChain arg2) throws IOException, ServletException { HttpServletRequest request = (HttpServletRequest) arg0; HttpServletResponse response = (HttpServletResponse) arg1; request.setCharacterEncoding(encoding); response.setCharacterEncoding(encoding); arg2.doFilter(arg0, arg1); } public void destroy() { }}这是一个编码过滤器的源代码 <filter> <filter-name>encoding</filter-name> <filter-class>com.shaw.web.filter.EncodingFilter</filter-class> <init-param> <param-name>encoding</param-name> <param-value>UTF-8</param-value> </init-param> </filter><filter-mapping> <filter-name>encoding</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> 用来解决乱码问题filter可以做很多事的,楼主可以找专门的文章看看 有点类似于AOP 相当于一个门。。你可以指定这个门对那些房间管用 请问有过虑是否登录的Filter吗? 就在doFilter里用session来判断吧。网上可以找到代码 Filter过滤器就是一个“检查部门”,你给他一个条件,然后他就会对在他监控范围内的信息进行“检查”。一般我们用于字符码的转换代码:import javax.servlet.*; import java.io.IOException; /** * 用于设置 HTTP 请求字符编码的过滤器,通过过滤器参数encoding指明使用何种字符编码,用于处理Html Form请求参数的中文问题 */ public class CharacterEncodingFilter implements Filter { protected FilterConfig filterConfig = null; protected String encoding = ""; public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException { if(encoding != null) servletRequest.setCharacterEncoding(encoding); filterChain.doFilter(servletRequest, servletResponse); } public void destroy() { filterConfig = null; encoding = null; } public void init(FilterConfig filterConfig) throws ServletException { this.filterConfig = filterConfig; this.encoding = filterConfig.getInitParameter("encoding"); } } 配置:<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,不然过滤器也起不了作用。 请问有登录过滤session和.jsp的例子吗? 大神帮忙看下 各位大虾,小弟问一个corba的问题 DataSouce 求教 spring与struts问题 请教下J2EE框架和MVC框架是什么关系? 如何清除request 中的parameter 连JDBC时出的奇怪问题,大虾们帮一把阿 Hibernate中one-to-many的例子,出问题了(请进,贴出了错误和源程序) 网购网站 spring data jpa 按查询条件分页查询,数据为空 请教各位java导Excel的问题 FTP上传文件错误
private final Logger log = Logger.getLogger(this.getClass()); public void init(FilterConfig config) throws ServletException {
String tmp = config.getInitParameter("encoding");
if (tmp != null) {
encoding = tmp;
}
log.info("初始化編碼過濾器,編碼格式:" + encoding);
} public void doFilter(ServletRequest arg0, ServletResponse arg1, FilterChain arg2) throws IOException, ServletException {
HttpServletRequest request = (HttpServletRequest) arg0;
HttpServletResponse response = (HttpServletResponse) arg1; request.setCharacterEncoding(encoding);
response.setCharacterEncoding(encoding); arg2.doFilter(arg0, arg1);
} public void destroy() { }
}
这是一个编码过滤器的源代码
<filter>
<filter-name>encoding</filter-name>
<filter-class>com.shaw.web.filter.EncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>encoding</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
用来解决乱码问题filter可以做很多事的,楼主可以找专门的文章看看
请问有过虑是否登录的Filter吗?
一般我们用于字符码的转换
代码:import javax.servlet.*;
import java.io.IOException; /**
* 用于设置 HTTP 请求字符编码的过滤器,通过过滤器参数encoding指明使用何种字符编码,用于处理Html Form请求参数的中文问题
*/
public class CharacterEncodingFilter
implements Filter
{
protected FilterConfig filterConfig = null;
protected String encoding = ""; public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException
{
if(encoding != null)
servletRequest.setCharacterEncoding(encoding);
filterChain.doFilter(servletRequest, servletResponse);
} public void destroy()
{
filterConfig = null;
encoding = null;
} public void init(FilterConfig filterConfig) throws ServletException
{
this.filterConfig = filterConfig;
this.encoding = filterConfig.getInitParameter("encoding"); }
}
配置:
<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,不然过滤器也起不了作用。