在跳到show()页面的时候,明明经过了编码过滤,为什么还是显示不了中文???index页面
<%@ page language="java" import="java.util.*" pageEncoding="gbk"%><html>  
  <body>
    <form action="show.jsp" mehtod="post">
    <%
     session.setAttribute("isLog","true");  //默认已登录
     %>
     <input type="text" name="text" />
     <input type="submit"/>"
    </form>
  </body>
</html>
show()页面
<%@ page language="java" import="java.util.*" pageEncoding="gbk"%><html>
  <body>
    This is my JSP page.     <%
    String name=request.getParameter("text");
    out.println("取出的值是:"+name);
     %>    
  </body>
</html>
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;
EncodingFilter 编码过滤
public class EncodingFilter implements Filter 
{
 private String targetEncoding ="gb2312"; //默认是gb2312
 protected FilterConfig filterConfig; 
 public void setFilterConfig(final FilterConfig filterConfig)
 {
  this.filterConfig=filterConfig;
 } 
 /**
  * 初始化
  */
 public void init(FilterConfig config) throws ServletException {
  // TODO Auto-generated method stub
  this.filterConfig=config;
  this.targetEncoding=config.getInitParameter("encoding");  //取出Web.xml中的值
  
 }
 
 
 /**
  * 过滤
  */
 public void doFilter(ServletRequest srequest, ServletResponse sresponse,
   FilterChain chain) throws IOException, ServletException {
  // TODO Auto-generated method stub
  
  HttpServletRequest request = (HttpServletRequest)srequest;
  request.setCharacterEncoding(targetEncoding); //把请求用指定的方式编码
  System.out.println("编码过滤"+targetEncoding);   
  chain.doFilter(srequest,sresponse); //把请求发送到下一个过滤器
 }
 
 /**
  * 销毁Filter
  */
 public void destroy() {
  // TODO Auto-generated method stub
  this.filterConfig=null;
 }
}
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;
import javax.servlet.http.HttpServletResponse;
LoginFilter 登录过滤
public class LoginFilter implements Filter 
{
 String Login_page="index.jsp";
 protected FilterConfig filterConfig;  public void setFilterConfig(final FilterConfig filterConfig)
 {
  this.filterConfig = filterConfig;
 }
 
 /**
  * 过滤
  */
 public void doFilter(final ServletRequest req,final ServletResponse res,FilterChain chain)
  throws IOException,ServletException
 {
  HttpServletRequest hrep = (HttpServletRequest)req;
  HttpServletResponse hres = (HttpServletResponse)res;
  
  String isLog=(String)hrep.getSession().getAttribute("isLog");
  if((isLog!=null)&&(isLog.equals("true"))|| (isLog=="true")) //检查是否登录
  {
   System.out.println("登录过滤***********");
   chain.doFilter(req, res);
   return;
  }else
  {
   hres.sendRedirect(Login_page);
  }
 }
 
 /**
  * 初始化
  */
 public void init(FilterConfig config)
 {
  this.filterConfig=config;
 }
 
 /**
  * 销毁
  */
 public void destroy()
 {
  this.filterConfig=null;
 }
}
web文件
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4" 
 xmlns="http://java.sun.com/xml/ns/j2ee" 
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
 xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee 
 http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
  <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>
   
  <filter>
  <filter-name>encoding</filter-name>
   <filter-class>EncodingFilter</filter-class>
   <init-param>
    <param-name>encoding</param-name>
    <param-value>gb2312</param-value>
   </init-param>
  </filter>
   
  <filter-mapping>
     <filter-name>encoding</filter-name>
     <url-pattern>/*</url-pattern>
  </filter-mapping>
  
  
  <filter>
   <filter-name>auth</filter-name>
   <filter-class>LoginFilter</filter-class>
  </filter>
 
  <filter-mapping>
     <filter-name>auth</filter-name>
     <url-pattern>/show.jsp</url-pattern>
  </filter-mapping></web-app>
来源: http://www.programbbs.com/bbs/view23-25038-1.htm

解决方案 »

  1.   

    你的web.xml中配置的过滤器编码方式是gb2312, 但是你的页面时gbk, 你先统一一下这里吧
    同时你的过滤器中也没有设置request的编码方式啊request.setCharacterEncoding(encodingType);
      

  2.   

    不好意思,一开始没看见你的request.setCharacterEncoding(targetEncoding); //把请求用指定的方式编码 , 那你统一一下编码方式吧
      

  3.   

    我刚刚知道了,是我的index页面的method写成了mehtod,
    呵呵,不好意思。还是谢谢你帮我看了,3Q3Q。