`

中文乱码问题解决,过滤器配置,get post提交乱码,filter,struts乱码,jsp乱码

阅读更多
Xml代码 复制代码
  1. <filter>  
  2.  <filter-name>encoding</filter-name>  
  3.  <filter-class>  
  4.   filter.FilterEncoding   
  5.  </filter-class>  
  6.  <init-param>  
  7.   <param-name>encoding</param-name>  
  8.   <param-value>gbk</param-value>  
  9.  </init-param>  
  10. </filter>  
<filter>
 <filter-name>encoding</filter-name>
 <filter-class>
  filter.FilterEncoding
 </filter-class>
 <init-param>
  <param-name>encoding</param-name>
  <param-value>gbk</param-value>
 </init-param>
</filter>

 

 

Java代码 复制代码
  1. package filter;   
  2.   
  3. import java.io.IOException;    
  4. import javax.servlet.Filter;    
  5. import javax.servlet.FilterChain;    
  6. import javax.servlet.FilterConfig;    
  7. import javax.servlet.ServletException;    
  8. import javax.servlet.ServletRequest;    
  9. import javax.servlet.ServletResponse;    
  10. public class FilterEncoding implements Filter    
  11. {    
  12.  protected String encoding;          // 接收字符编码   
  13.  protected boolean ignore;            // 是否忽略大小写   
  14.  protected FilterConfig filterConfig; // 初始化配置   
  15.   
  16.  public void init(FilterConfig filterConfig) throws ServletException    
  17.  {   
  18.   // 从web.xml文件中读取encoding的值   
  19.   encoding = filterConfig.getInitParameter("encoding");    
  20.   // 从web.xml文件中读取ignore的值   
  21.   String value = filterConfig.getInitParameter("ignore");    
  22.   // 以下三种情况均为忽略大小写   
  23.   if(value == null)    
  24.   {    
  25.    ignore = true;    
  26.   }   
  27.   else if(value.equalsIgnoreCase("yes"))    
  28.   {    
  29.    ignore = true;    
  30.   }    
  31.   else if(value.equalsIgnoreCase("true"))    
  32.   {    
  33.    ignore = true;    
  34.   }    
  35.  }    
  36.  // doFilter方法   
  37.  public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException    
  38.  {   
  39.   if(ignore || request.getCharacterEncoding() == null)    
  40.   {   
  41.    // 如果为空先从web.xml中得到   
  42.    String encoding = selectEncoding(request);    
  43.    if(encoding != null)    
  44.    {   
  45.     // 设置字符集编码   
  46.     request.setCharacterEncoding(encoding);    
  47.    }   
  48.   }   
  49.   // 继续执行   
  50.   chain.doFilter(request, response);    
  51.  }    
  52.  // 得到字符编码   
  53.  private String selectEncoding(ServletRequest request)    
  54.  {    
  55.   return encoding;    
  56.  }    
  57.  public void destroy()    
  58.  {    
  59.      
  60.  }    
  61. }  
package filter;

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; 
public class FilterEncoding implements Filter 
{ 
 protected String encoding;          // 接收字符编码
 protected boolean ignore;            // 是否忽略大小写
 protected FilterConfig filterConfig; // 初始化配置

 public void init(FilterConfig filterConfig) throws ServletException 
 {
  // 从web.xml文件中读取encoding的值
  encoding = filterConfig.getInitParameter("encoding"); 
  // 从web.xml文件中读取ignore的值
  String value = filterConfig.getInitParameter("ignore"); 
  // 以下三种情况均为忽略大小写
  if(value == null) 
  { 
   ignore = true; 
  }
  else if(value.equalsIgnoreCase("yes")) 
  { 
   ignore = true; 
  } 
  else if(value.equalsIgnoreCase("true")) 
  { 
   ignore = true; 
  } 
 } 
 // doFilter方法
 public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException 
 {
  if(ignore || request.getCharacterEncoding() == null) 
  {
   // 如果为空先从web.xml中得到
   String encoding = selectEncoding(request); 
   if(encoding != null) 
   {
    // 设置字符集编码
    request.setCharacterEncoding(encoding); 
   }
  }
  // 继续执行
  chain.doFilter(request, response); 
 } 
 // 得到字符编码
 private String selectEncoding(ServletRequest request) 
 { 
  return encoding; 
 } 
 public void destroy() 
 { 
  
 } 
}

 

如果是url的get提交参数带中文的
可以改下面这个文件,加入一个URIEncoding="GBK"
X:\Tomcat 5.5\conf\Server.xml 
 

Xml代码 复制代码
  1. <Connector    
  2.         port="8080"    
  3.         redirectPort="8443"    
  4.         minSpareThreads="25"    
  5.         connectionTimeout="30"    
  6.         maxThreads="150"    
  7.         maxSpareThreads="75"    
  8. URIEncoding="GBK">   
<Connector 
        port="8080" 
        redirectPort="8443" 
        minSpareThreads="25" 
        connectionTimeout="30" 
        maxThreads="150" 
        maxSpareThreads="75" 
URIEncoding="GBK"> 

 

jsp头文件

Html代码 复制代码
  1. <%@ page contentType="text/html;charset=gbk"%>   //此处的charset的值要和web.xml里的  <param-value></param-value>值一样  
<%@ page contentType="text/html;charset=gbk"%>   //此处的charset的值要和web.xml里的  <param-value></param-value>值一样

 

单个类的乱码可以这样来解决:tempStr = new String(str.getBytes("iso-8859-1"),"gb2312");

分享到:
评论

相关推荐

    struts2中文乱码问题

    综上所述,解决Struts2中文乱码问题的方法主要包括设置JSP页面编码、配置Struts2国际化编码、修改web.xml配置、使用POST请求方式以及自定义过滤器等。开发者可以根据项目的具体情况选择合适的方法来解决中文乱码问题...

    struts下的汉字乱码问题

    总结来说,解决Struts下的汉字乱码问题,需要从页面、过滤器、服务器配置和Struts核心Servlet等多方面进行设置,确保在整个请求生命周期中,中文字符始终以正确的编码进行处理。这不仅涉及了前端的展示,还涉及到...

    jsp中FilterDome(乱码过滤器源代码)

    `FilterDome`是一个具体的Filter实现,通常用来解决字符编码问题,即乱码过滤器。在处理中文或其他多语言字符时,乱码问题时常出现,`FilterDome`就是为了解决这个问题而设计的。下面将详细介绍`FilterDome`的工作...

    struts解决乱码问题

    - 为了更灵活地控制编码,可以编写自定义过滤器来处理特定场景下的乱码问题。 - 示例代码: ```java public class CustomEncodingFilter implements Filter { private String encoding; @Override public ...

    中文乱码处理问题总结

    通过在JSP页面头部设置正确的编码格式、在接收请求参数时进行编码转换以及使用过滤器统一设置请求的编码格式等方式,可以有效地解决这一问题。开发者应根据具体情况选择合适的解决方案,以提高系统的稳定性和用户...

    超强过滤器彻底解决JSP-SERVLET中文参数GET-POST传递的问题(转)

    总结,"超强过滤器"是解决JSP-Servlet之间中文参数GET-POST传递问题的有效手段,通过统一设定请求的字符编码,确保在整个Web应用中中文数据能够正确无误地传输和处理。对于大型项目,这样的全局解决方案可以大大提升...

    有关乱码WEB乱码

    在Struts2框架中,乱码问题主要出现在请求参数的处理上,特别是在GET或POST请求中。当客户端发送的请求参数编码与服务器端解析请求参数所使用的编码不一致时,就会产生乱码。 **解决方法**: 1. **配置过滤器**:...

    解决Tomcat+MySql+Struts的中文问题

    对于POST请求,可以通过编写过滤器(Filter)来解决这个问题。过滤器在请求被处理前运行,可以更改请求参数的编码方式。以下是一个简单的过滤器实现: ```java import java.io.IOException; import javax.servlet....

    springmvc+mybatis面试题

    1. 入口不同:SpringMVC的入口是DispatcherServlet(前端控制器),而Struts2的入口是Filter(过滤器)。 2. 开发方式:SpringMVC基于方法开发,参数通过方法形参传递;Struts2基于类开发,参数通过类的属性传递。 3...

    JAVA框架面试题汇总编程资料

    1. **POST请求**:在`web.xml`中配置`CharacterEncodingFilter`过滤器来解决POST请求中的中文乱码问题。示例配置如下: ```xml &lt;filter&gt; &lt;filter-name&gt;CharacterEncodingFilter&lt;/filter-name&gt; &lt;filter-class&gt;org...

    JAVA框架面试题汇总.docx

    1. 入口不同:SpringMVC 的入口是前端控制器 DispatcherServlet,而 Struts2 的入口是 Filter 过滤器。 2. 开发方式:SpringMVC 基于方法开发,适合单例模式;Struts2 基于类开发,适合多例模式。 3. 数据存取:...

    关于java设计的毕设答辩.doc

    6. **过滤器控制乱码**:为页面添加过滤器以控制乱码,可以在过滤器中设置字符编码,或者在Tomcat的`server.xml`中全局更改字符集。 7. **Java连接SQL Server**:需要引入相应的JDBC驱动jar包,如mssqlserver.jar,...

    Spring MVC面试宝典1.pdf

    ##### 3.4 如何解决POST请求中文乱码问题,GET的又如何处理呢? - **POST请求**:在web.xml中配置过滤器CharacterEncodingFilter来设置字符编码。 - **GET请求**:同样可以通过配置过滤器解决,也可以通过修改Tomcat...

    软件专业答辩常见问题汇总.docx

    对于表单提交,可以在Servlet中设置字符编码,或者使用过滤器统一处理请求和响应的编码问题。 以上这些问题涵盖了软件开发中的数据库交互、测试方法、前端样式、Web应用部署、框架配置等多个方面,是软件专业答辩中...

    答辩常见问题汇总.doc

    24. **防止乱码**:添加过滤器(Filter)来处理字符编码问题,需要在Filter中设定合适的字符编码,例如设置HttpServletRequest和HttpServletResponse的编码为UTF-8。 以上内容涵盖了答辩中可能出现的多种问题,详细...

    Java面试重要知识点复习大纲.docx

    1. **Struts2**:理解Action的编写,知道如何接受请求参数,了解配置文件的设置,理解Struts2与SpringMVC的差异,了解拦截器与过滤器的区别。 2. **Hibernate**:理解ORM思想,知道实体对象的状态转换,熟练使用HQL...

Global site tag (gtag.js) - Google Analytics