`
还有也许
  • 浏览: 164378 次
  • 性别: Icon_minigender_1
  • 来自: 郑州
社区版块
存档分类
最新评论

servlet乱码问题

    博客分类:
  • JSP
阅读更多

一、静态中文展示


servlet做页面
response.setContentType("text/html;charset=utf-8/gbk/gb2312");


二、动态传递中文参数:可以将中文参数进行单的类型转换(注意:字符编码与参数的元字符编码和参数的目标字符编码要一致)


*get传参:直接修改tomcat服务器中连接期的默认字符编码为utf-8/gbk/gb2312(在servlet.xml文件,连接器<Connector>中增加属性 URIEncoding="utf-8")


*post传参
在servlet获取参数之前调用如下方法,对所有的封装到requset中的参数的字符编码同义转换 request.setCharacterEncoding("utf-8/gbk/gb2312");(关键的代码)
假如页面很多,这种方式就不实用
通过过滤器servlet来调用以上方法,对用户发出请求时的以post方式的传递的中文参数进行统一的字符编码转换
过滤器属于servlet的一种,其加载的优先级高于所有的控制器servlet。其在web容器中的注册信息必须放在所有的控制器servlet注册信息之前。
操作:


1.在配置文件里面
<!-- 注册过滤器 -->
<filter>
<filter-name>myfilter</filter-name>
<filter-class>com.qulx.filter.MyFilter</filter-class>
<!-- 设置过滤器使用的字符编码 -->
<init-param>
   <param-name>encoding</param-name>
   <param-value>utf-8</param-value>
</init-param>
<!-- 设置过滤行为是否调用 -->
<init-param>
   <param-name>enable</param-name>
   <param-value>true</param-value>
</init-param>

</filter>
<!-- 设置过滤器映射名 -->
<filter-mapping>
<filter-name>myfilter</filter-name>
<url-pattern>/*</url-pattern>

</filter-mapping>

注意如果只想对针对其中的某些参数进行字符编码的转换,可以修改虚拟目录的名称,修改<url-pattern>/虚拟目录/*</url-pattern>
可以把想过滤的内容放在一个虚拟子目录中。

2.在过滤器中写入,需要实现Filter接口

public class MyFilter implements Filter {

private String encoding ="";
private boolean enable = false;

public void init(FilterConfig arg0) throws ServletException {
  
   this.encoding = arg0.getInitParameter("encoding");
   String able = arg0.getInitParameter("enable");
   if(able.equals("true")){
    this.enable = true;
   }
}

public void destroy() {
   // TODO Auto-generated method stub

}
//执行过滤行为的方法
//FilterChain 负责释放控制权
public void doFilter(ServletRequest request, ServletResponse response,
    FilterChain chain) throws IOException, ServletException {
  
   //将request中封装的所有的中文参数统一进行字符编码转换
   if(this.enable){
    request.setCharacterEncoding(this.encoding);
   }
   //释放控制权
   chain.doFilter(request, response);
  
}

 

}


*对post传参和get传参,都能进行字符编码转换,请求的参数.getBytes("iso-8859-1","")

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics