Struts2乱码问题 action1跳转action2之后参数为乱码

解决 Struts 2 中文乱码问题 通过配置字符集过滤器和自定义拦截器,并使用正确的字符编码,我们可以解决 Struts 2 中文乱码问题。配置字符集过滤器可以确保整个应用程序的请求和响应都使用相同的字符编码,而自定义拦截器可以处理请求参数的编码,以解决中文乱码问题。在自定义的 EncodingInterceptor 中,我们可以处理请求参数的编码,将其转换为正确的字符编码。除了上述配置外,我们还需要确保应用程序的其他部分也使用正确的字符编码。在上述代码中,我们获取请求参数,并使用正确的字符编码对参数进行重新编码,以解决中文乱码问题 阅读详情
使用Struts2,在项目中配置:
       1、在jsp页面上设置:

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />


<!-- 登录表单 -->

<form action="login/login_show.action" method="post">
<div><b>用户名 :</b> <input type="text"/ name="username" maxlength="10" title="输入用户名"/></div>
<div><b>密码 : </b><input type="password" name="password" maxlength="8" title="输入密码"/></div>
<div><input type="submit" value="登 录"/></div>
</form>

       页面编码和jsp代码都设置为UTF-8。

       2、struts.xml中,设置:
<?xml version="1.0" encoding="utf-8" ?>
<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN" "http://struts.apache.org/dtds/struts-2.3.dtd">
<struts>
<constant name="struts.i18n.encoding" value="utf-8"></constant>
<constant name="struts.locale" value="zh_CN"></constant>
 
<package name="login" extends="struts-default" namespace="/login">
<action name="login_*" class="indi.smt.action.LoginAction" method="{1}">
<result name="show" type="redirectAction">
<param name="username">${username}</param>
<param name="password">${password}</param>
<param name="result">${result}</param>
<param name="un">${un}</param>
<param name="psw">${psw}</param>
<param name="actionName">login_detail</param>
</result>
<result name="detail">/WEB-INF/jsp/show.jsp</result>
<result name="main">/WEB-INF/jsp/login.jsp</result>
</action>
</package>

<package name="result" extends="struts-default" namespace="/result">
<action name="login_*" class="indi.smt.action.ResultAction" method="{1}">
<result name="success">/WEB-INF/jsp/success.jsp</result>
<result name="error">/WEB-INF/jsp/error.jsp</result>
</action>
</package>
</struts>
       均设置为UTF-8。

       3、并配置一个字符过滤器:
package indi.smt.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 EncodingFilter implements Filter {
public void destroy() {
}
public void doFilter(ServletRequest req, ServletResponse res,
FilterChain filterChain) throws IOException, ServletException {
System.out.println("开始编码转换");
req.setCharacterEncoding("utf-8");
res.setCharacterEncoding("utf-8");
filterChain.doFilter(req, res);
System.out.println("完成编码转换");
}
public void init(FilterConfig arg0) throws ServletException {
}
}
       将requert、response均设置为UTF-8。

      4、web.xml中配置(3)中的过滤器:
	<filter>
<filter-name>encoding</filter-name>
<filter-class>indi.smt.filter.EncodingFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>encoding</filter-name>
<url-pattern>*.action</url-pattern>
</filter-mapping>

      5、回显jsp页面:

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
String username = request.getParameter("username");
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="http://mayh0991.blog.163.com/<%=basePath%>">
<title>结果显示</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
</head>
<body>
<h2>输入结果</h2><br>
<div>
<table>
<tbody>
<tr>
<td><%=username %></td>
</tr>
</tbody>
</table>
</div>
</body>
</html>

以上只列出这个乱码的字符回显。

==========================================================================================
提交表单之后,在IED控制台打印的表单送到后台的参数username中文为正常字符(无乱码)。但是回显到/login/login_show.action的show.jsp中的username为乱码(如5所示)。

现在看到一个博客写的应该是解决方案,但是没有搞明白是怎么回事:
struts2 action 跳action 传递中文乱码问题解决
Struts2中文乱码问题最终解决方案 关于StrutsPrepareAndExecuteFilter最新的过滤器,在Struts.xml定义常量<constant name="struts.i18n.encoding" value="UTF-8"/>无法解决post方式提交中文乱码问题。 关于Struts2各个版本、各种过滤器,用get方式提交都方法都无法解决的中文乱码问题 立即下载

相关推荐

Struts2乱码终极解决办法

Struts2乱码解决办法,个人测试有效

struts2中文乱码问题

一、中文乱码问题 首先要区分是页面乱码action乱码,还是数据库乱码。 大致的原理是java使用unicode编码-->window使用gbk(gb2312的扩展集)--mysql默认使用utf-8(unicode的一种编码方法),这样转来转去就乱码了 (1页面中文乱码 对于在页面中显示出现乱码,这个问题比较简单,便是检查你的JSP文件中是不是出现了中文要处理。由于JSP默认的...

qq30211478的博客 1509

struts 中文乱码问题解决

struts 中文乱码问题解决

JavaScript传中文值给Action出现乱码问题解决和返回ajax 返回 输出 json 乱码

JavaScript传中文值给Action出现乱码问题解决 1、在通过js传值给Action前,运用encodeURIComponent() 函数先对要传的值进行编码。 2、然后在Action里获取编码并把编码转化成中文编码格式。 3、具体运用如下:在JavaScript里编码: var value= encodeURIComponent(strValue);//对strValue进行

lijingzhu的专栏 2935

前台页面向后台提交中文出现乱码解决办法

我先把例子代码贴上来在说吧。 index.jsp name: pwd: 以超链接方式登录 login.jsp <% String name=request.getParameter("name");

Discovering,Thinking and Finding——This Is My Logic 4537

几种struts乱码的处理方法

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_34008784的博客 246

struts2获取参数,解决乱码

<br />Struts2获取参数跳转,中文乱码 <br />Struts2中获取参数 <br />1..类ActionContext。可以将这个类看成是一个容器,实际上它是一个map,这个类封装了parameter , session,application,本地化信息。类中提供方法 <br />getContext():用来获取ActionContext的对象 <br />getParameters():获取传递过来的所有的参数, <br />getSession():这个方法实际上是获得sessio

hjjzhangkui的专栏 8570

struts2 actionaction 传递中文乱码问题解决

前不久在做项目的时候遇到个乱码问题、 心想这乱码跟其他乱码肯定一样好解决、 可是半天过去了、那乱码还是一样屹立在那、 使用浑身解数都没有好的方法解决、 最后看到了一个帖子、 才有了解决办法、 如果使用的是rediect这样解决: [html] view plaincopy action name="remove

lq273910809的专栏 1878

关于struts2 配置文件 跳转问题

从一个action通过struts2配置文件跳转到另外一个action。     "http://struts.apache.org/dtds/struts-2.0.dtd">                                userInfo_list

学习记录 2735

struts2重定向时传递参数的实现!以及传递参数为中文时的乱码问题解决!

经过一晚上的努力,终于把这个问题解决了,现在和大家一起分享下! 一、传递参数的实现:从survey.action跳转到 student.action 在survey.action中有message 这样一个参数需要在重定向之后传递到下一个student.action中,则在survey.action中给message赋值,并保证survey.action中message有get,set方法,在

群来群往的博客 3010

struts2 actionaction 传递中文乱码问题解决、

前不久在做项目的时候遇到个乱码问题、 心想这乱码跟其他乱码肯定一样好解决、 可是半天过去了、那乱码还是一样屹立在那、 使用浑身解数都没有好的方法解决、 最后看到了一个帖子、 才有了解决办法、 如果使用的是rediect这样解决: list.action?msg=${msg} true

sd4000784的专栏 5382

struts 2. 5.2解决中文乱码

解决中文乱码问题

解决传递中文参数过程中的乱码问题

1、从jsp中上传中文参数action,解决乱码问题方法 response.setHeader("refresh","0;URL=/demo/VmListByClassNameAction.action?&className=" +    java.net.URLEncoder.encode(className,"utf-8")); 这句代码中,参数className是中文参数,当不enc

vgxpm的专栏 3047

Struts2action重定向跳转到jsp参数中带有中文(乱码解决的方案)

struts.xml中的配置                                 /employeeAdd.jsp                    ${username}                    jsp 中编码:     String path = request.getContextPath(

zhujiaxing666666的专栏 2330

struts2重定向中文参数乱码有关问题

struts2重定向中文参数乱码问题     整个项目都是用utf-8编码 如果传递参数看http://yafei.iteye.com/admin/blogs/977733 redirect跳转时url被"ISO-8859-1"重新编码了,所以到了下一个action成了乱码。 在下一个action中处理转换这个信息 try { message = new String(mess

zhujiaxing666666的专栏 907

关于Struts2使用redirectAction方式在两个Action之间传值时中文乱码问题的解决方法

struts.xml中相关配置如下: readExcel ${uploadFileName} uploadExcel 向 readExcel中传递uploadFileName属性值(readExcelAction中自动调用readExcel中setUploadFileName()方法为uploadFileName属性赋值) 在readE

hb_peng的专栏 1911

Struts2乱码终极解决办法 strutsstringfilterencodingjspaction

strutsstringfilterencodingjspaction 几种常见的乱码问题 1. 在struts2里面,最好将所有字符都设成utf-8。 &lt;%@ page contentType="text/html; charset=UTF-8"%&gt; &lt;%@ page pageEncoding="UTF-8" %&gt;1.1 在jsp页面设定字符编码。这...

iteye_13283的博客 254

Struts2中文乱码解决方法

中文乱码首先要区分是页面乱码Action乱码还是数据库乱码。大致的原理是JAVA使用Unicode编码--&gt;Window使用GBK(GB2312的扩展集)--&gt;MySQL默认使用UTF-8(Unicode的一种编码方法),这样转来转去就乱码了。解决方法如下:         1、在Struts2里面,最好将所有字符都设成UTF-8   &lt;%@ page contentTyp...

sundful的专栏 173
上一篇: Java图片合成、base64转换
下一篇: 新浪微博爬虫v1.0
無痕剑
博客等级 码龄12年 20粉丝 37原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值