当前位置:编程学习 > JS >>

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><!--过滤器的名字-->
<filter-class>org.ty.struts.util.PageEncodingFilter</filter-class><!--过滤器文件所在位置-->
<init-param>
  <param-name>encoding</param-name><!--初始参数名,指定jsp页面所用 编码集-->
  <param-value>utf-8</param-value><!--初始参数值 ,指定中文编码集-->
</init-param>
</filter>
<!-- 过滤器 映射路径配置 -->
<filter-mapping>
<filter-name>PageEncodingFilter</filter-name>
<url-pattern>/*</url-pattern><!--对所有目录进行中文过滤 -->
</filter-mapping>
jsp页面乱码:
  在jsp代码中添加如下代码:
<%@ page language="java" import="java.util.*"pageEncoding="utf-8"%>
 html中文件
在head头中添加如下代码
<head>
    <meta http-equiv="content-type"content="text/html; charset=UTF-8">
 </head>

摘自 Rookie的专栏

补充:Web开发 , Jsp ,
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,