struts2 整合 spring,在action打印 中文乱码

小右 2010-11-09 04:33:18
版本:
struts 2.1.8.1
spring 2.5.5

jsp代码如下

<form action="add.action" method="post">

</form>



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>GBK</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>encodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>

<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>



struts.xml 配置 如下:

<constant name="struts.i18n.encoding" value="gbk"></constant>
<action name="add" class="addAction">
<result name="success" type="dispatcher">/org/index.jsp</result>
</action>


addAction.java 代码如下

@Override
public String execute() throws Exception {
Organization organization = new Organization() ;
System.out.println(name+"---"+description);
organization.setName(name);
organization.setDescription(description);
// orgManager.addOrg(organization, parentId);

return SUCCESS;
}



打印结果 :

?ú??---?ú??


真是见鬼了,还会出现乱码。
...全文
296 18 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
小右 2010-11-13
  • 打赏
  • 举报
回复
[Quote=引用 17 楼 logive 的回复:]

兄弟我也遇到过你这个问题 我所有的文件都改成UTF-8了,但是form提交到action中后台打印出来就是乱码
你猜我怎么解决的,我把myeclisp的所有默认编码都改成utf-8后创建一个新的工程(这点很重要哦)
把之前写的代码文件粘贴到新的工程中 终于把她给搞定了
[/Quote]

我也尝试了新方法 。
用get方法提交,然后在tomcat 配置文件中, 修改 uri的默认值,结果 也可以 ,正确输出中文了 。

不过,总觉得, get方法提交form , 不是主流 。
logive 2010-11-12
  • 打赏
  • 举报
回复
兄弟我也遇到过你这个问题 我所有的文件都改成UTF-8了,但是form提交到action中后台打印出来就是乱码
你猜我怎么解决的,我把myeclisp的所有默认编码都改成utf-8后创建一个新的工程(这点很重要哦)
把之前写的代码文件粘贴到新的工程中 终于把她给搞定了
小右 2010-11-12
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 jxsryecheng 的回复:]
你action文件属性里面编码是GBK的吗?
[/Quote]

这个会影响吗?

action 文件 属性 是 utf-8
qianyecq 2010-11-12
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 xm29339115 的回复:]
引用 5 楼 jyy524325 的回复:
在strtus2中在web中的拦截器是ActionContextCleanUp 这是struts2提供的,而CharacterEncodingFilter是spring 在struts1中都是用的这个
建议在struts2中用struts2提供的拦截器
还有就是在struts.xml文件中配置

我知道,我应该去看文档的 ,
但是 ,我想偷个……
[/Quote]

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>
小右 2010-11-12
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 qianyecq 的回复:]
引用 11 楼 xm29339115 的回复:
引用 1 楼 daichangfu 的回复:
struts2配置

XML code
<constant name="struts.i18n.encoding" value="UTF-8"></constant>



jsp页面:

Java code
<%@ page language="java" pageEncodin……
[/Quote]

spring 提供的拦截器,必须也改了 还是无效 。
小右 2010-11-12
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 jyy524325 的回复:]
在strtus2中在web中的拦截器是ActionContextCleanUp 这是struts2提供的,而CharacterEncodingFilter是spring 在struts1中都是用的这个
建议在struts2中用struts2提供的拦截器
还有就是在struts.xml文件中配置
[/Quote]
我知道,我应该去看文档的 ,
但是 ,我想偷个懒,问问你 。
spring 结合 struts2 中的,
CharacterEncodingFilter 怎么 配置呢?

qianyecq 2010-11-12
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 xm29339115 的回复:]
引用 1 楼 daichangfu 的回复:
struts2配置

XML code
<constant name="struts.i18n.encoding" value="UTF-8"></constant>



jsp页面:

Java code
<%@ page language="java" pageEncoding="UTF-8"%>


兄弟 还是无效啊……
[/Quote]

拦截器哪里也改成UTF-8
小右 2010-11-12
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 daichangfu 的回复:]
struts2配置

XML code
<constant name="struts.i18n.encoding" value="UTF-8"></constant>



jsp页面:

Java code
<%@ page language="java" pageEncoding="UTF-8"%>
[/Quote]

兄弟 还是无效啊
小右 2010-11-12
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 fafi09 的回复:]
错了,没好好看代码,对不起。1楼回答应该可以了
[/Quote]

一楼也不是正解啊 ,还是乱码 。
我在action 中打印,就乱码了 。
根本没用的 dao层 。
xianaofei 2010-11-10
  • 打赏
  • 举报
回复
<constant name="struts.i18n.encoding" value="UTF-8"></constant>



jyy524325 2010-11-10
  • 打赏
  • 举报
回复
<?xml version="1.0" encoding="UTF-8"?>
<web-app id="WebApp_9" version="2.4"
xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">

<display-name>Struts 2 OGNL</display-name>

<filter>
<filter-name>struts-cleanup</filter-name>
<filter-class>
org.apache.struts2.dispatcher.ActionContextCleanUp
</filter-class>
</filter>

<filter-mapping>
<filter-name>struts-cleanup</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>

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

<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>

<welcome-file-list>
<welcome-file>index.html</welcome-file>
</welcome-file-list>

</web-app>

在strtus2中在web中的拦截器是ActionContextCleanUp 这是struts2提供的,而CharacterEncodingFilter是spring 在struts1中都是用的这个
建议在struts2中用struts2提供的拦截器
还有就是在struts.xml文件中配置
<constant name="struts.i18n.encoding" value="gbk"></constant>
其中的value值可以是gbk也可以是utf-8,没有多大的问题
xiagirl 2010-11-10
  • 打赏
  • 举报
回复
hehe ,jf........
fafi09 2010-11-10
  • 打赏
  • 举报
回复
错了,没好好看代码,对不起。1楼回答应该可以了
fafi09 2010-11-10
  • 打赏
  • 举报
回复
数据库的编码查一下,有可能在库里就错了。
pspddd 2010-11-10
  • 打赏
  • 举报
回复
到处都用UTF-8,肯定不出问题。 有道理!!!!!
leecyz 2010-11-09
  • 打赏
  • 举报
回复
到处都用UTF-8,肯定不出问题。
十橙心橙意 2010-11-09
  • 打赏
  • 举报
回复
你action文件属性里面编码是GBK的吗?
daichangfu 2010-11-09
  • 打赏
  • 举报
回复
struts2配置
<constant name="struts.i18n.encoding" value="UTF-8"></constant>


jsp页面:
<%@ page language="java" pageEncoding="UTF-8"%>

67,549

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧