jsp乱码总结解决方案
表单提交数据乱码:
对于get方法提交:
找到tomcat安装路径下的conf文件夹下面的server.xml,打开将<Connector>添加URIEncoding=”utf-8”,见红字部分即可。
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" URIEncoding="UTF-8" />
此方法只适用于get方法。
对于post方法:
有几种解决方法,
①在jsp页中添加如下代码:request.setCharacterEncoding("utf-8");有的时候需要添加respon.setCharacterEncoding(“utf-8”);
②使用过滤器(比较推荐):
在项目的src文件夹下面添加新建一个类PageEncodingFilter,代码如下:
中文过滤器的代码:
package com.util;
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.HttpServletRequest;//如上为所用到的类
//中文过滤器 三个方法,一个属性
public class PageEncodingFilter implements Filter {
private String encode;
// 初始化,encoding初始值从“web.xml”而来
public void init(FilterConfig arg0) throws ServletException {
this.encode = arg0.getInitParameter("encoding");
}
// 执行过滤
public void doFilter(ServletRequest arg0, ServletResponse arg1,
FilterChain arg2) throws IOException, ServletException{
HttpServletRequest request = (HttpServletRequest) arg0;// 强转HttpServletRequest
request.setCharacterEncoding(encode);// 参数encode即为 String,切勿再加"双引号"
arg2.doFilter(arg0, arg1);
}
// 销毁
public void destroy() {
this.encode = null;
}
}
说明:
//创建步骤:
1.新建 class 实现 接口 Filter (所在包为 带有“javax.servlet.Filter”,依“MyEclips”版本不同,略有不同);
2.修改代码如上即可;
3.打开“web.xml”(此文件在webRoot/WEB-INF/web.xml)文件进行 如下配置。
配置代码:
<!-- 中文过滤器初始化参数设置 -->
<filter>
<filter-name>PageEncodingFilter</filter-name><!--过滤器的名字-->
相关新闻>>
- 发表评论
-
- 最新评论 更多>>