`

使用Filter解决全站JSP/Servlert字符啊编码问题

    博客分类:
  • JSP
阅读更多

       做了两年半的iOS,偶尔也去做点Android的东西(不过实在拿不出手),突然感觉对于自己接触了两年半的移动端服务一窍不通,甚是感觉无力,虽然之前也学过一点JSP的东西可是那都是上学的事情了,可是突然感觉我要去做服务器的东西,从没有这么冲动的去学东西,之前接触iOS和Android都是为了好奇,可是这一次是那么的强烈。就从JSP开始一点一滴的做起…

       首先是字符编码的各种乱码。我们需要把默认的"ISO-8859-1",转化为中文的支持,比如utf8,GB2312 ,GBK的编码。方法友好有坏都能解决问题,你可以在每个页面都设置,也可以一劳永逸进行全局设置。

1.手动每个页面添加

【思路】写一个全局的类进行转化

public class Request {

private static final String Request_Origin_Encoding = "ISO-8859-1";

private static final String Request_Convert_Encoding = "utf8";

 

public static Map<String, String> parameterNames(HttpServletRequest request)

throws UnsupportedEncodingException {

// request.setAttribute(arg0, arg1);

Enumeration<String> enumerator = request.getParameterNames();

Map<String, String> map = new HashMap<String, String>();

while (enumerator.hasMoreElements()) {

String key = (String) enumerator.nextElement();

String value = request.getParameter(key);

map.put(key, new String(value.getBytes(Request_Origin_Encoding),

Request_Convert_Encoding));

}

return map;

}

 

public static String getConvertParameter(HttpServletRequest request,

String parameterName) {

 

Map<String, String> map;

try {

map = parameterNames(request);

return map.get(parameterName);

} catch (UnsupportedEncodingException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

return null;

 

}

 

}

2.使用FIlter进行转化,这个独有JSP和servlet都使用

【思路】首先,配置这个Filter,其次,在Filter中转化

   1⃣️1配置:配置为转化为utf8的编码,并初始化参数encoding为utf8

<filter>

<filter-name>EncodingFilter</filter-name>

<filter-class>filter.EncodingFilter</filter-class>

<init-param>

<param-name>encoding</param-name>

<param-value>utf8</param-value>

</init-param>

 

</filter>

<filter-mapping>

<filter-name>EncodingFilter</filter-name>

<servlet-name>*</servlet-name>

<url-pattern>*</url-pattern>

 

</filter-mapping>

2⃣️2Filter转化编码

//初始化数据

public void init(FilterConfig fConfig) throws ServletException {

// TODO Auto-generated method stub

this.encoding = fConfig.getInitParameter("encoding");

 

}

编码转化:将默认的ISO-8859-1转化为utf8

public void doFilter(ServletRequest request, ServletResponse response,

FilterChain chain) throws IOException, ServletException {

// TODO Auto-generated method stub

// place your code here

 

//request.setCharacterEncoding(encoding);

//response.setCharacterEncoding(encoding);

response.setContentType("text/html");

Enumeration<String> enumeration = request.getParameterNames();

Map<String, String[]> paramMap = request.getParameterMap();

for (String key : paramMap.keySet()) {

String[] values = paramMap.get(key);

for (int i = 0; i < values.length; i++) {

values[i] = new String(values[i].getBytes("ISO-8859-1"), this.encoding);

}

}

while (enumeration.hasMoreElements()) {

String parameName = (String) enumeration.nextElement();

String value = request.getParameter(parameName);

}

// pass the request along the filter chain

chain.doFilter(request, response);

 

}

分享到:
评论

相关推荐

    解决字符编码的过滤器

    3. **错误日志记录**:对于复杂的多语言环境,建议增加相应的错误日志记录机制,以便快速定位和解决问题。 总之,通过合理配置Servlet过滤器来解决字符编码问题是提高Web应用国际化能力的有效手段之一。开发者应该...

    字符编码过滤器 字符编码转换 post字符转换

    本文将深入探讨"字符编码过滤器"、"J2EE字符编码"、"字符编码转换"以及"POST字符转换"这些关键知识点,并结合提供的文件"encoding-filter.jar"和"使用方法.txt"来解释它们的应用。 首先,字符编码是计算机存储和...

    java字符编码监听器

    Java字符编码监听器是Java Web开发中的一个重要概念,主要用于处理HTTP请求和响应中的字符编码问题。在Java Servlet规范中,提供了`SetCharacterEncodingFilter`这样的过滤器,用于确保请求参数和响应内容的正确编码...

    解决JSP字符串乱码的过滤器

    本教程将详细介绍如何通过实现一个过滤器(Filter)来解决JSP页面中的字符串乱码问题。 首先,我们需要理解字符编码的基础知识。字符编码是用来表示文本的一套规则,常见的有ASCII、GBK、UTF-8等。在Web应用中,...

    字符编码过滤器

    它确保了请求和响应数据在处理过程中使用一致的字符编码,从而避免乱码问题。本篇文章将详细探讨Java过滤器(Filter)的概念,字符编码的重要性,以及如何通过封装工具类来实现统一的字符编码。 首先,让我们理解...

    字符编码

    在“java中用过滤器解决字符编码问题.doc”的文件中,我们可以预期会找到关于如何在Java web应用中利用过滤器(Filter)解决字符编码问题的详细步骤。过滤器是Servlet技术的一部分,可以拦截请求和响应,对数据进行...

    Servlet及jsp解决中文乱码问题

    ### Servlet及JSP解决中文乱码问题 #### 一、引言 在Web开发中,中文乱码问题一直是困扰开发者的一大难题。特别是在使用Java技术栈(如Servlet与JSP)进行开发时,如果处理不当,很容易出现中文字符显示乱码的情况...

    【Struts】设置字符编码过滤器,解决乱码问题收藏

    本文将详细讲解如何通过设置字符编码过滤器(`SetCharacterEncodingFilter`)来解决这一问题,同时深入理解字符编码的原理以及在实际应用中的配置方法。 字符编码是计算机处理文本的一种方式,它将字符与数字对应...

    如何配置Filter过滤器处理JSP中文乱码

    解决这个问题的一种常见方法是使用Filter过滤器。以下是配置Filter过滤器处理JSP中文乱码的详细步骤: 1. **配置web.xml文件** 在项目的`web.xml`文件中,你需要添加一个Filter来定义处理乱码的逻辑。首先,声明一...

    利用过滤器解决JavaWeb(JSP)的乱码问题

    这个问题的出现通常是由于字符编码不一致导致的,而过滤器(Filter)作为一种强大的工具,可以有效地帮助我们解决这个问题。本文将详细讲解如何利用过滤器来解决JavaWeb中的乱码问题。 首先,我们需要理解JavaWeb中...

    JSP用户提交页面编码

    - **乱码问题**:如果设置了正确的字符编码后仍然出现乱码,可能是其他地方也涉及到了字符编码的转换,如数据库连接、JSP页面编码等。需要检查整个流程中的所有编码设置是否一致。 - **多浏览器兼容性**:不同的...

    J2EE -- 字符编码问题

    本文将围绕如何解决J2EE中的字符编码问题展开讨论,包括了解字符编码的基础概念、如何在Servlet过滤器中设置字符编码以及如何在`web.xml`配置文件中进行相关设置。 #### 一、字符编码基础概念 字符编码是将字符...

    java字符编码错误整理大全

    本篇将详细梳理Java中的字符编码相关知识点,帮助开发者解决实际工作中遇到的各种乱码问题。 #### 二、基础知识 1. **编码与解码** - **编码**:将字符转换为字节序列的过程。 - **解码**:将字节序列转换为字符...

    jsp字符过滤器

    在这个例子中,我们使用正则表达式移除了尖括号、双引号、单引号和百分号这些可能引发安全问题的字符。 三、文件过滤器与图片过滤器 除了字符过滤,还有针对文件和图片的过滤。文件过滤通常涉及上传文件时的类型...

    编码过滤通用类,解决jsp页面的乱码问题

    本篇将详细探讨"编码过滤通用类",以及如何使用它来解决JSP页面的乱码问题。 首先,让我们了解什么是乱码问题。在Web开发中,当文本在不同的字符编码之间不正确地转换时,就会出现乱码。常见的例子是,服务器使用...

    JSP乱码 N种解决方案

    在开发Java Web应用程序时,JSP(JavaServer Pages)页面经常遇到字符编码问题,导致页面显示乱码。本文将深入探讨“JSP乱码”的多种解决方案,并提供实用的解决策略。 1. **理解字符编码的基本概念** - 字符编码...

    jsp过滤器(编码)

    为了解决这个问题,`JSP` 提供了过滤器(Filter)机制,尤其是针对编码问题的过滤器,以确保数据在处理和显示时保持正确的格式。 过滤器是Servlet API的一部分,定义在`javax.servlet.Filter`接口中。它们在请求被...

    利用过滤器解决JavaWeb(JSP)乱码问题.doc

    使用过滤器可以有效地解决乱码问题,因为它可以统一处理所有请求和响应的字符编码设置。 #### 四、实现步骤 ##### 4.1 编写过滤器处理类 首先,需要创建一个过滤器类`CharsetFilter`,该类实现了`javax.servlet....

    jsp中文乱码问题解决

    jsp中文乱码问题解决 jsp中文乱码问题是jsp开发中常见的问题...jsp中文乱码问题可以通过修改jsp页面的编码方式、修改Tomcat的server.xml文件、编写Filter、使用jdk的native2ascii工具、配置数据库连接池等方法来解决。

    检验用户名、密码、字符编码、页面缓存----Filter的基本使用

    我们可以在Filter中设置HttpServletRequest的字符编码,这样在读取请求参数时,会自动使用指定的编码进行转换。 三、页面缓存控制 页面缓存可以提高Web应用的性能,减少服务器负载。通过Filter,我们可以控制哪些...

Global site tag (gtag.js) - Google Analytics