`
zhangfeilo
  • 浏览: 399898 次
  • 性别: Icon_minigender_1
  • 来自: 昆明
社区版块
存档分类
最新评论

Struts2 get 传值乱码过滤器配置

get 
阅读更多

package cn.org.du.Encode;


import java.io.IOException;
import java.util.Map;
import java.util.Set;

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;

public class EncodeFilter implements Filter {

private FilterConfig filterConfig = null;

public void destroy() {
this.filterConfig = null;
}

@SuppressWarnings("unchecked")
public void doFilter(ServletRequest req, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
String encoding = this.filterConfig.getInitParameter("encoding");

HttpServletRequest request = (HttpServletRequest) req;
HttpServletResponse resp = (HttpServletResponse) response;
request.setCharacterEncoding(encoding);
resp.setContentType("text/html;charset="+encoding);
// System.out.println(request.getQueryString());
// 处理GET参数
if (request.getMethod().equalsIgnoreCase("get")) {
Map paramMap = req.getParameterMap();
String[] queryStringArray = { "" };
if (request.getQueryString() != null) {
queryStringArray = request.getQueryString().split("&");
}
for (int i = 0; i < queryStringArray.length; i++) {
queryStringArray[i] = queryStringArray[i].replaceAll("(.*)=(.*)", "$1");
}
Set<String> keySet = paramMap.keySet();
for (String key : keySet) {
// check where param from
boolean isFromGet = false;
for (String paramFromGet : queryStringArray) {
if (key.equals(paramFromGet)) {
isFromGet = true;
}
}
if (!isFromGet) {
continue;
}
String[] paramArray = (String[]) paramMap.get(key);
for (int i = 0; i < paramArray.length; i++) {
paramArray[i] = new String(paramArray[i].getBytes("iso-8859-1"), encoding);
}
}
}
chain.doFilter(req, resp);
}

public void init(FilterConfig filterConfig) throws ServletException {
this.filterConfig = filterConfig;
}
}

 

-----------------web.xml配置---------------------


<filter>
<filter-name>encodeFilter</filter-name>
<filter-class>cn.org.du.Encode.EncodeFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>utf-8</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>encodeFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>

 
分享到:
评论

相关推荐

    Struts2中文乱码问题最终解决方案

    在Struts2的各个版本和不同过滤器设置下,GET方式提交的中文乱码问题仍然存在。一种可行的解决方案是在Tomcat服务器的配置文件`server.xml`中,修改`&lt;Connector&gt;`标签,添加`URIEncoding="UTF-8"`属性。这将强制...

    struts下的汉字乱码问题

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

    struts2的中文乱码问题解决

    ### Struts2中文乱码问题解决方案 在使用Struts2框架进行Web开发的过程中,中文乱码问题是一个常见的挑战。这不仅影响用户体验,还可能导致数据不一致等问题。为了解决这一问题,我们需要理解其背后的原理,并采取...

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

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

    struts2中文乱码问题

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

    Struts2和servlet的中文乱码问题

    对于使用Struts2标签创建的表单,无论GET还是POST,JSP页面都应使用UTF-8编码,并且不应使用getBytes("ISO8859-1")转换,同时无需使用中文过滤器。 接下来,我们探讨Servlet中的中文乱码处理。在GET请求中,JSP页面...

    struts解决乱码问题

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

    马士兵struts2课程的学习笔记

    5. **Struts执行过程**:Struts2的工作流程包括:请求到达过滤器,过滤器拦截请求并转发给Struts2核心,核心解析请求,找到匹配的Action,执行Action,然后根据配置结果转发到相应的视图。 6. **namespace**:...

    有关乱码WEB乱码

    此配置确保了Struts2内部处理时使用GBK编码,与过滤器保持一致。 #### HTTP请求中的编码问题 HTTP请求根据其方法(GET/POST)的不同,编码的处理方式也有所不同: 1. **GET请求**:参数通过URL传递,浏览器默认...

    strust2中文乱码

    - 在`web.xml`中,添加一个Struts2的清理过滤器(`struts-cleanup`),并确保其处理所有URL: ```xml &lt;filter-name&gt;struts-cleanup &lt;filter-class&gt;org.apache.struts2.dispatcher.ActionContextCleanUp ...

    使用拦截器解决中文乱码

    Struts1通常通过在`web.xml`中配置Filter来解决中文乱码问题,但在Struts2中,由于其内置的过滤器(如`FilterDispatcher`)会先于自定义Filter执行,因此自定义Filter往往无法生效。 #### 解决方案:使用拦截器 ...

    struts2.33 中文学习笔记

    配置Struts2的开发环境,需要将Struts2的jar包放入`WEB-INF/lib`目录,然后在`web.xml`中配置Struts2过滤器。过滤器的配置如下: ```xml &lt;filter-name&gt;struts2 &lt;filter-class&gt;org.apache.struts2.dispatcher.ng....

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

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

    struts2部分重点笔记

    Struts2 是一个流行的 Java Web 开发框架,它简化了MVC(模型-视图-控制器)架构的应用程序开发。...同时,要注意处理中文乱码问题,例如在过滤器中设置正确的字符编码,以及根据需要调整配置以适应不同的项目需求。

    中文乱码处理问题总结

    - 在`web.xml`文件中配置此过滤器,使其对所有请求生效。 - **示例代码**(部分): ```xml &lt;filter-name&gt;SetCharacterEncoding &lt;filter-class&gt;...

    java中文乱码解决方案

    #### 一、Struts2中的乱码问题及解决方案 在Java Web开发中,尤其是使用Struts2框架时,经常会遇到中文乱码的问题。这些问题的出现通常与字符编码设置不当有关。下面详细介绍几种有效的解决方法。 #### 1. JSP页面...

    使用拦截器解决中文乱码问题.docx

    在Struts1中,我们通常会通过自定义Filter来处理请求的编码问题,但在Struts2中,由于其自身的过滤器机制,单纯依赖Filter可能无法有效地解决乱码问题。本文将详细介绍如何使用Struts2的拦截器(Interceptor)来解决...

    处理Structs乱码的3种方法

    总的来说,处理Structs中的中文乱码需要从多个层面入手,包括但不限于设置过滤器、配置拦截器以及确保页面和URL的正确编码。通过这些方法,我们可以有效地避免和解决中文乱码问题,从而保证应用程序的正常运行和用户...

    文件上传与下载

    1. 在`web.xml`中设置字符编码过滤器,如`&lt;filter&gt;`标签内的`&lt;filter-name&gt;CharacterEncodingFilter&lt;/filter-name&gt;`和`&lt;filter-class&gt;org.apache.struts2.dispatcher.FilterDispatcher&lt;/filter-class&gt;`,并配置`...

    Tomcat 5.5中应用开发过程中中文乱码的解决.docx

    对于GET方式的中文乱码问题,我们可以在Tomcat的配置文件`conf/server.xml`中的`Connector`元素上添加一个属性来指定URI编码。例如,如果希望使用GBK编码,可以这样修改: ```xml URIEncoding="GBK" ... /&gt; ``` ...

Global site tag (gtag.js) - Google Analytics