`
ykyfendou
  • 浏览: 407686 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Struts2中文乱码的解决

阅读更多

 

一、可以使用spring提供的编码过滤器,在web.xml中进行简单配置即可:

 

 

    <!-- 配置编码,解决中文乱码 -->    

    <filter>

        <filter-name>encodingFilter</filter-name>

        <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>

        <init-param>

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

            <param-value>UTF-8</param-value>

        </init-param>

    </filter>

    <filter-mapping>

        <filter-name>encodingFilter</filter-name>

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

    </filter-mapping>

    <filter>

        <filter-name>actionFilter</filter-name>

        <filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>

        <init-param>

            <param-name>actionPackages</param-name>

            <param-value>com.yun.facePot</param-value>

        </init-param> 

    </filter>

    <filter-mapping>

        <filter-name>actionFilter</filter-name>

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

    </filter-mapping>

 

 

 

 

我们只需在web.xml中配置

org.springframework.web.filter.CharacterEncodingFilter

这个过滤器,然后设置过滤规则,这样符合这个请求路径的编码都会被这个过滤器过滤。

 

 

二、自定义过滤器实现编码过滤:

 

 index.jsp

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>  
<%@ page contentType="text/html; charset=UTF-8"%>  
<%  
String path = request.getContextPath();  
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";  
%>  
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">  
<html>  
  <head>  
	<base href="<%=basePath%>">    
	<title>My JSP 'index.jsp' starting page</title>  
	<meta http-equiv="pragma" content="no-cache">  
	<meta http-equiv="cache-control" content="no-cache">  
	<meta http-equiv="expires" content="0">     
	<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">  
	<meta http-equiv="description" content="This is my page">  
  </head>   
  <body>  
  <form action="test1" method="post">  
	用户名:<input type="text" name="username"/><br/>  
	密 码:<input type="password" name="password">  
  <input type="submit" value="提交">  
  </form>  
  </body>  
</html>  

  

success.jsp:

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>  
<%  
String path = request.getContextPath();  
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";  
%>  
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">  
<html>  
  <head>  
	<base href="<%=basePath%>">     
	<title>My JSP 'success.jsp' starting page</title>     
	<meta http-equiv="pragma" content="no-cache">  
	<meta http-equiv="cache-control" content="no-cache">  
	<meta http-equiv="expires" content="0">     
	<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">  
	<meta http-equiv="description" content="This is my page">  
  </head>  
  <body>  
	登录成功!欢迎:${username}  
  </body>  
</html>  

 

error.jsp:

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>  
<%  
String path = request.getContextPath();  
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";  
%>  
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">  
<html>  
  <head>  
	<base href="<%=basePath%>">     
	<title>My JSP 'error.jsp' starting page</title>     
	<meta http-equiv="pragma" content="no-cache">  
	<meta http-equiv="cache-control" content="no-cache">  
	<meta http-equiv="expires" content="0">     
	<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">  
	<meta http-equiv="description" content="This is my page">  
  </head>   
  <body>  
	登录失败!  
	<a href="index.jsp">返回重新登录</a>  
  </body>  
</html>  

 

 LoginAction.java:

package com.cz.action;  
import java.io.UnsupportedEncodingException;  
import javax.servlet.http.HttpServletRequest;  
import org.apache.struts2.ServletActionContext;  
import com.opensymphony.xwork2.ActionContext;  
import com.opensymphony.xwork2.ActionSupport;  
public class LoginAction extends ActionSupport {  
	private String username;  
	private String password;  
	public String getUsername() {  
		return username;  
	}  
	public void setUsername(String username) {  
		this.username = username;  
	}  
	public String getPassword() {  
		return password;  
	}  
	public void setPassword(String password) {  
		this.password = password;  
	}   
	public String execute(){  
		System.out.println("到达execute。。。。");  
		return null;         
	}     
	public String login(){           
		System.out.println("到达login。。。。用户名:"+username);  
		if("啊".equals(username) && "123".equals(password)){  
			return "success";  
		}  
		return "login";  
	}  
}  

 

过滤器FilterEncoding.java

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 FilterConfig filterConfig; // 初始化配置  
	public void init(FilterConfig filterConfig) throws ServletException {  
		// 从web.xml文件中读取encoding的值  
		encoding = filterConfig.getInitParameter("encoding");  
	}  
	// doFilter方法  
	public void doFilter(ServletRequest request, ServletResponse response,  
			FilterChain chain) throws IOException, ServletException {  
		request.setCharacterEncoding(encoding);  
		chain.doFilter(request, response);  
	}  
	public void destroy() {  
  
	}  
}  

 

 web.xml:

 

<?xml version="1.0" encoding="UTF-8"?>  
<web-app version="2.5"  
xmlns="http://java.sun.com/xml/ns/javaee"  
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee  
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">  
<welcome-file-list>  
<welcome-file>index.jsp</welcome-file>  
</welcome-file-list>  
<filter>  
<filter-name>struts2</filter-name>  
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>         
</filter>  
<filter>   
 <filter-name>encoding</filter-name>   
	 <filter-class>FilterEncoding  </filter-class>   
 <init-param>   
	  <param-name>encoding</param-name>   
	  <param-value>utf-8</param-value>   
 </init-param>   
</filter>     
<filter-mapping>  
 <filter-name>encoding</filter-name>  
 <url-pattern>/*</url-pattern>  
</filter-mapping>  
<filter-mapping>  
<filter-name>struts2</filter-name>  
<url-pattern>/*</url-pattern>  
</filter-mapping>  
</web-app>  

  

struts.xml:

 

<?xml version="1.0" encoding="UTF-8" ?>  
<!DOCTYPE struts PUBLIC  
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"  
"http://struts.apache.org/dtds/struts-2.0.dtd">  
<struts>  
<package name="default" namespace="/" extends="struts-default">        
	<action name="test1" class="com.cz.action.LoginAction" method="login">  
		<result name="success">/success.jsp</result>  
		<result name="login">/error.jsp</result>  
	</action>  
</package>  
</struts>  

 

分享到:
评论

相关推荐

    struts中文乱码问题解决详细步骤

    通过这些配置,大部分Struts中文乱码问题都能得到解决。但有时,问题可能源自于其他因素,比如静态资源(如CSS、JavaScript文件)的编码设置,或者是第三方库的编码处理不当。因此,排查问题时需全方位考虑,确保每...

    struts2中文乱码解决Demo

    本DEMO是为了解决Struts2在处理中文输入时可能出现的乱码问题,确保系统能够正确地接收和显示中文字符。 首先,我们要理解乱码产生的原因。在Web应用中,数据的传输通常涉及多种编码方式,如HTTP请求的默认编码通常...

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

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

    struts解决中文乱码问题

    本文将深入探讨如何解决Struts框架下的中文乱码问题。 首先,我们来看一个具体的实例。在登录验证的例子中,原本只要用户名(username)和密码(userpass)都是"123"就会返回成功页面。现在,我们将其升级,要求...

    struts 2. 5.2解决中文乱码

    通过以上步骤,一般可以解决Struts 2.5.2框架下的中文乱码问题。但请注意,每个项目可能有不同的配置和需求,因此在实际应用中,还需要根据具体情况进行调试和调整。 在`myStruts`这个压缩包中,可能包含了示例代码...

    Struts中文乱码解决方案

    这里我们将详细探讨如何解决 Struts 中的中文乱码问题。 一、在 Action 类中的解决方法: 当在 Action 类中遇到中文乱码问题时,可以使用以下代码进行转换。创建一个静态工具类,如 `Chinese`,并定义一个 `...

    Struts2乱码终极解决办法

    ### Struts2乱码终极解决办法 #### 一、引言 在开发基于Struts2框架的应用时,经常遇到的一个问题就是中文乱码。这不仅影响用户体验,还可能导致数据处理错误。本文将详细介绍如何彻底解决Struts2中的乱码问题,并...

    struts2的中文乱码问题解决

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

    struts2中文乱码

    ### Struts2中文乱码问题解析与解决方案 #### 一、引言 在Web开发过程中,尤其是使用Struts2框架时,中文字符的正确显示是一个常见的挑战。本篇文章将详细介绍Struts2中出现中文乱码的原因及解决方案,帮助开发者更...

    struts2中文乱码问题

    ### Struts2中文乱码问题解决方案 在使用Struts2框架进行Web开发的过程中,中文乱码问题是一个常见的问题。这不仅影响用户体验,还可能导致数据处理错误。本文将详细介绍几种解决Struts2中文乱码问题的方法。 ####...

    struts1.2 解决中文乱码

    ### Struts 1.2 中文乱码问题详解与解决方案 #### 一、问题背景及原因分析 在 Web 应用开发过程中,特别是在使用 Java 的 Struts 1.2 框架时,中文乱码问题是开发者经常遇到的一个难题。这不仅影响用户体验,还会...

    Struts2.0解决中文乱码

    ### 解决方案:Struts2.0中的中文乱码解决方案 #### 1. 配置struts.properties文件 在Struts2.0中,可以通过修改`struts.properties`文件来指定整个应用的默认字符编码。关键的配置项是`struts.i18n.encoding`,将...

    struts 中文乱码问题解决

    本文将深入探讨Struts框架中中文乱码的问题,并提供一系列有效的解决方案。 ### Struts框架简介 Struts是一个开源的MVC(Model-View-Controller)框架,主要用于简化Java Web应用程序的开发。它基于Servlet和JSP...

    struts之中文乱码问题

    Struts是一个非常流行的Java Web应用程序框架,用于构建和管理MVC(模型-视图-控制...如果你的项目中仍然存在乱码问题,建议参考提供的“Struts中文乱码解决方案.doc”文档,它可能包含了更详细的排查步骤和解决方案。

    struts,ajax乱码解决方案

    【Struts和Ajax乱码解决方案】 在Web开发中,乱码问题始终是一个常见的困扰,特别是对于使用Struts和Ajax技术的开发者来说。乱码问题主要出现在数据的输入、传输和展示过程中,涉及到编码格式的选择和一致性。以下...

    Struts2资源文件在jsp页面中显示乱码解决

    当Struts2应用在JSP页面中尝试加载并显示这些文本时,可能会遇到乱码问题,尤其是在处理中文等非英文字符时更为常见。 乱码问题的根源在于字符编码的不匹配。当资源文件的编码格式与JSP页面或服务器解析时所使用的...

    奇怪的struts2的中文乱码问题及解决.docx

    本文将深入探讨一个关于Struts2在Internet Explorer(IE)浏览器中出现中文乱码的奇怪问题及其解决方案。 首先,中文乱码问题通常涉及到几个关键因素:数据库编码、开发文件编码和网页的Content-Type编码。在确保这...

    eclipse struts 中文乱码问题图解

    总结来说,解决Eclipse Struts中文乱码问题主要涉及页面编码设置、请求参数处理以及资源文件的正确编码。通过调整相应的配置和使用合适的工具,可以有效避免和解决这些问题,确保中文字符的正常显示和处理。

    struts2.1.6解决乱码 补充

    在Struts2中,表单提交的数据默认使用ISO-8859-1编码,而浏览器默认发送的是UTF-8编码,这就会导致中文显示为乱码。 #### 二、解决方案:使用CharacterEncodingFilter 为了解决这个问题,一种常见的做法是通过过滤...

Global site tag (gtag.js) - Google Analytics