***仅需在web.xml中更改所需的文字转码格式,即可更改所有页面的文字转码格式。
1、创建一个filter文件,指定位置添加以下内容:
String enconding=null; //定义一个全局变量,用来设置编码方式
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
HttpServletRequest req=(HttpServletRequest)request; //强转
HttpServletResponse res=(HttpServletResponse)response;
req.setCharacterEncoding(enconding); //设置
res.setCharacterEncoding(enconding);
res.setContentType("text/html;charset="+enconding);
myRequest myReq=new myRequest(req);
chain.doFilter(myReq, res);
}
public void init(FilterConfig fConfig) throws ServletException {
enconding=fConfig.getInitParameter("enconding"); //获取编码方式
}
2、创建myRequest.java,粘贴以下代码:
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletRequestWrapper;
public class myRequest extends HttpServletRequestWrapper {
private HttpServletRequest request;
public myRequest(HttpServletRequest request) {
super(request);
this.request = request;
// TODO Auto-generated constructor stub
}
public String getParameter(String name) {
try{
String value = request.getParameter(name);
if(value == null){
return value;
}
if(!request.getMethod().equalsIgnoreCase("get")){
return value;
}
if(!request.getMethod().equalsIgnoreCase("post")){
return value;
}
String enconding = request.getCharacterEncoding();
//System.out.println(encoding+"-----");
value = new String(value.getBytes("ISO-8859-1"), enconding);
return value;
}catch(Exception e){
throw new RuntimeException(e);
}
}
}
3、在web.xml中写入配置文件,编入以下代码:
***注:写在<web-app></web-app>之间。
<filter>
<filter-name>languageFilter</filter-name> //设置filter名字
<filter-class>com.stx.filter.languageFilter</filter-class> //添加languageFilter路径
<init-param> //设置编码方式
<param-name>enconding</param-name>
<param-value>utf-8</param-value>
</init-param>
</filter>
<filter-mapping> //设置该filter作用范围
<filter-name>languageFilter</filter-name>
<url-pattern>/*</url-pattern> //其中"/*"代表作用于所有jsp文件
</filter-mapping>
</filter>
4、OK