在网上看了一段字符编码过滤器:
有个问题:web.xml中配置ignore参数有必要么?有什么作用?
java类中变量ignore又有什么作用?
package com.kemp.servlet;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;public class SetCharacterEncodingFilter implements Filter {
protected String encoding = null;
protected FilterConfig filterConfig = null;
protected boolean ignore = true; public void init(FilterConfig filterConfig) throws ServletException {
this.filterConfig = filterConfig;
this.encoding = filterConfig.getInitParameter("encoding");
String value = filterConfig.getInitParameter("ignore");
if (value == null)
this.ignore = true;
else if (value.equalsIgnoreCase("true"))
this.ignore = true;
else
this.ignore = false;
} public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
// TODO 自动生成方法存根
if (ignore || (request.getCharacterEncoding() == null)) {
String encoding = selectEncoding(request);
if (encoding != null)
request.setCharacterEncoding(encoding);
}
chain.doFilter(request, response);
} public void destroy() {
// TODO 自动生成方法存根
this.encoding = null;
this.filterConfig = null;
} protected String selectEncoding(ServletRequest request) {
return (this.encoding);
}
}<filter>
<filter-name>encodingFilter</filter-name>
<filter-class>com.kemp.servlet.SetCharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
<init-param>
<param-name>ignore</param-name>
<param-value>true</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>encodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
有个问题:web.xml中配置ignore参数有必要么?有什么作用?
java类中变量ignore又有什么作用?
package com.kemp.servlet;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;public class SetCharacterEncodingFilter implements Filter {
protected String encoding = null;
protected FilterConfig filterConfig = null;
protected boolean ignore = true; public void init(FilterConfig filterConfig) throws ServletException {
this.filterConfig = filterConfig;
this.encoding = filterConfig.getInitParameter("encoding");
String value = filterConfig.getInitParameter("ignore");
if (value == null)
this.ignore = true;
else if (value.equalsIgnoreCase("true"))
this.ignore = true;
else
this.ignore = false;
} public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
// TODO 自动生成方法存根
if (ignore || (request.getCharacterEncoding() == null)) {
String encoding = selectEncoding(request);
if (encoding != null)
request.setCharacterEncoding(encoding);
}
chain.doFilter(request, response);
} public void destroy() {
// TODO 自动生成方法存根
this.encoding = null;
this.filterConfig = null;
} protected String selectEncoding(ServletRequest request) {
return (this.encoding);
}
}<filter>
<filter-name>encodingFilter</filter-name>
<filter-class>com.kemp.servlet.SetCharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
<init-param>
<param-name>ignore</param-name>
<param-value>true</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>encodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
解决方案 »
- java 图形问题
- 死锁程序中的小发现 求高手解答~~~
- 给定n个元素的序列,求这个序列有多少种组合
- 获取命令行参数问题
- java怎样限制文本框内容为数字?
- 超级头疼,用jdbc:oracle:thin的方式连接oracle,数据库编码WE8DEC,本地nls_lang=WE8DEC,取出来始终是乱码!!
- 高手来帮帮忙,在线等!(30分)
- ActionListener 不是类?
- 新建类可选的那几个BASECLASS选择后会有什么不同效果?有什么java.lang.object等等。
- 大家对绘图技术不感兴趣嘛!那就讨论一下网络吧!请问如何通过http访问远程对象。
- 关于JTable(Swing桌面开发)如何定位列的问题
- 我编的记事本中无法添加滚动条
package com.framework.common.servlet;import java.io.*;
import javax.servlet.*;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
public class SetCharacterEncodingFilter implements Filter {
protected String encoding = null;
protected FilterConfig filterConfig = null;
protected boolean ignore = true;
public void destroy() { this.encoding = null;
this.filterConfig = null; }
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException { HttpServletRequest hRequest = (HttpServletRequest) request;
HttpServletResponse hResponse = (HttpServletResponse) response;
HttpSession session = hRequest.getSession();
// Conditionally select and set the character encoding to be used
if (ignore || (request.getCharacterEncoding() == null)) {
String encodings = selectEncoding(request);
if (encodings != null) { try {
request.setCharacterEncoding(encodings);
} catch (UnsupportedEncodingException e) { } }
}
if (session.getAttribute("userKey") == null) {// session过期,跳到错误页面
hResponse.sendRedirect(hRequest.getContextPath() +"/common/sessionError.jsp");
}
else {
// Pass control on to the next filter
chain.doFilter(request, response);
}
} public void init(FilterConfig filterConfig) throws ServletException { this.filterConfig = filterConfig;
this.encoding = filterConfig.getInitParameter("encoding");
String value = filterConfig.getInitParameter("ignore");
if (value == null)
this.ignore = true;
else if (value.equalsIgnoreCase("true"))
this.ignore = true;
else if (value.equalsIgnoreCase("yes"))
this.ignore = true;
else
this.ignore = false; } protected String selectEncoding(ServletRequest request) { return (this.encoding); }}//EOC<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd">
<web-app>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>
/WEB-INF/classes/applicationContext-framework.xml,/WEB-INF/classes/applicationContext-cqh.xml,/WEB-INF/classes/applicationContext-zhq.xml
</param-value>
</context-param>
<context-param>
<param-name>notesAction</param-name>
<param-value>http://10.151.15.244/names.nsf</param-value>
</context-param>
<!-- Encoding Filter Declaration Start -->
<filter>
<filter-name>Set Character Encoding</filter-name>
<filter-class>
com.framework.common.servlet.SetCharacterEncodingFilter
</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>GBK</param-value>
</init-param> <init-param>
<param-name>ignore</param-name>
<param-value>true</param-value>
</init-param>
</filter>
<!-- Encoding Filter Mapping Start-->
<filter-mapping>
<filter-name>Set Character Encoding</filter-name>
<servlet-name>action</servlet-name>
</filter-mapping>
<filter-mapping>
<filter-name>Set Character Encoding</filter-name>
<url-pattern>/jsp/*</url-pattern>
</filter-mapping>
<!-- Encoding Filter Mapping End -->
<listener>
<listener-class>
org.springframework.web.context.ContextLoaderListener
</listener-class>
</listener>
<listener>
<listener-class>
com.framework.common.listener.TimerListener
</listener-class>
</listener> <servlet>
<servlet-name>action</servlet-name>
<servlet-class>
org.apache.struts.action.ActionServlet
</servlet-class>
<init-param>
<param-name>config</param-name>
<param-value>/WEB-INF/struts-config.xml,/WEB-INF/struts-config-cqh.xml,/WEB-INF/struts-config-zhq.xml</param-value>
</init-param>
<init-param>
<param-name>debug</param-name>
<param-value>2</param-value>
</init-param>
<init-param>
<param-name>detail</param-name>
<param-value>2</param-value>
</init-param>
<load-on-startup>3</load-on-startup>
</servlet>
<servlet>
<servlet-name>login</servlet-name>
<servlet-class>
com.framework.common.servlet.Login
</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>action</servlet-name>
<url-pattern>*.shtml</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>login</servlet-name>
<url-pattern>/login</url-pattern>
</servlet-mapping>
<session-config>
<session-timeout>30</session-timeout>
</session-config>
<welcome-file-list>
<welcome-file>/login.jsp</welcome-file>
</welcome-file-list> <taglib>
<taglib-uri>struts-bean</taglib-uri>
<taglib-location>/WEB-INF/struts-bean.tld</taglib-location>
</taglib>
<taglib>
<taglib-uri>struts-html</taglib-uri>
<taglib-location>/WEB-INF/struts-html.tld</taglib-location>
</taglib>
<taglib>
<taglib-uri>struts-logic</taglib-uri>
<taglib-location>/WEB-INF/struts-logic.tld</taglib-location>
</taglib>
<taglib>
<taglib-uri>struts-template</taglib-uri>
<taglib-location>/WEB-INF/struts-template.tld</taglib-location>
</taglib>
<taglib>
<taglib-uri>struts-tiles</taglib-uri>
<taglib-location>/WEB-INF/struts-tiles.tld</taglib-location>
</taglib>
<taglib>
<taglib-uri>struts-nested</taglib-uri>
<taglib-location>/WEB-INF/struts-nested.tld</taglib-location>
</taglib>
</web-app>
这是我配置的...
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>配置的编码进行转换。如果为false,则只有request编码为空的时候,才按配置进行编码转换。web.xml中的配置项,最终就被设置到Filter类的对应属性上了,所以Web.xml和java中的ignore是一个东西。
<init-param>
<description>是否忽略默认编码设置</description>
<param-name>ignore</param-name>
<param-value>false</param-value>
</init-param>