Struct2 向Action中传递参数(中文乱码问题)
就是把视图上的值传递到Action定义的方法中
也就是把数据从前台传递到后台
三种方式:
- 1. 使用action属性接收参数
比如jsp页面:
<body>
使用action属性接收参数<a href="user/user!add?name=a&age=8">添加用户</a> </body>
对应的struct.xml
<action name="user" class="com.bjsxt.struts2.user.action.UserAction">
<result>/user_add_success.jsp</result>
</action>
那么在UserAction类中,要定义两个属性(与url中的参数一样)

必须有两个特别重要的方法(getXX和setXX,这个XX一定要与url中的参数一致)
- 2.使用DomainModel (域模型,项目中真正存在的实体概念)
就是说如果传递过来的参数特别多,那么可以把这些参数顶一个成一个域模型
比如先定义一个Person类,里面有一些属性,然后再定义

<body>
使用Domain Model接收参数<a href="user/user!add?user.name=a&user.age=8">添加用户</a> </body>
这里面Struct自动实现了User类的new操作以及get和set的调用
不用太纠结这个赋值过程是怎么样的,这些都是struct背后的机制,这样设置之后,就可以在类中得到两个属性的值
但是有一种情况,比如说注册的时候,会有一个确认密码的字段,要传到后台,但是在我们定义的DomainModel 里是不会有这个字段的。
就是
当从前段传递过来的字段与一个DomainModel 不匹配时,
使用DTO(数据传输对象)
在上例中,就是UserDTO类,包含传递过来的所有字段,接收数据之后,再create一个user类出来,然后存到数据库中。
简单说,DTO就是一个接收数据并传递的过程

- 3.用ModelDriven接收参数(模型驱动)
很少用,但是包含一个很重要的思想
当struct接收到一个请求或者模型之后,这个请求过程往往是交给后面的模型处理,而不会自己处理 -- MVC
其中像UserAction一样各种各样的Action都是 C
像其中 定义的 User 是M
像add方法返回值 是 C

<body>
使用ModelDriven接收参数<a href="user/user!add?name=a&age=8">添加用户</a> </body>
ModelDriven使得它认为定义的User是一个类
它里面有一个方法 getModel

如果传递参数有中文怎么办?
<body>
使用action属性接收参数,测试中文问题
<form action="user/user!add" method="post">
姓名:<input type="text" name="name"></input>
<input type="submit" value="submit"/>
</form>
</body>
解决办法:
Struct加 上constant常量配置

同时说明一下constant的所有配置都在哪里可以找得到
1. 去官网查文档
2. 所有的配置都在这里

可以看到这一行
### This can be used to set your default locale and encoding scheme
# struts.locale=en_US
struts.i18n.encoding=UTF-8
也就是structs默认是UTF-8;
我们要把它改成GBK即可
Struct2 向Action中传递参数(中文乱码问题)的更多相关文章
- jsp页面间传递参数 中文乱码问题(zz)
jsp页面间传递参数 中文乱码问题 1.传递参数 var url = "*****Test.jsp?param1="+encodeURI(encodeURI(str));//对 ...
- html 传递参数中文乱码 js获取参数乱码
每天学习一点点 编程PDF电子书.视频教程免费下载:http://www.shitanlife.com/code HTML传递中文参数时,有乱码导致接收不到正确的数据.JS中可以使用encodeURI ...
- JS解决URL传递参数中文乱码问题
function getUrlParam(name){ // 用该属性获取页面 URL 地址从问号 (?) 开始的 URL(查询部分) var url = window.location.search ...
- JSP中四种传递参数中文乱码问题
查看来源:http://blog.csdn.net/hackerain/article/details/6776083
- 解决JS中取URL地址中的参数中文乱码
GET请求会将中文编码,如果取出乱码的话,应该进行解码操作, 下面的函数是获取指定参数名的参数值,参数值可是中文.英文. function getQueryString(name) { var reg ...
- jsp或Action获取请求参数中文乱码
普通情况下,中文字符会被自动转换成iso-8859-1的编码格式通过网络传输,而这种格式是没办法直接表示出我们认识的中文字符的,所以还要手动将他转换回之前的字符集. 一般在servlet或者actio ...
- ASIHTTPRequest 中url参数中文乱码
ASIHTTPReques确实是在开发过程中,数据的传输,获取方面给我们很大的帮助.然而在一些方面也是需要一些的注意. 在我们使用ASIHTTPReques 进行get方式获取数据时,如果需要传入中文 ...
- ajax 传递参数中文乱码解决办法
/********Start***********/ /*获取地址栏参数*/ function getRequest(){ var url = location.search; //获取url中&qu ...
- js两个页面之间URL传递参数中文乱码
随机推荐
- NSAttributedString用法
以前看到这种字号和颜色不一样的字符串,想出个讨巧的办法就是“¥150”一个UILabel,“元/位”一个UILabel.今天翻看以前的工程,command点进UITextField中看到[attrib ...
- Linux简单程序实例(GNU工具链,进程,线程,无名管道pipe,基于fd的文件操作,信号,scoket)
一, GNU工具链简介: (1)编译代码步骤: 预处理 -> 编译 -> 汇编 -> 链接: 预处理:去掉注释,进行宏替换,头文件包含等工作: gcc -E test.c -o te ...
- 新建线程与UI线程间的通信
现在用一个实例来演示一下自己的新建线程与UI线程间的通信. UI界面包含3个控件: 一个输入框,用来输入数字: 一个显示框,用来显示从2开始,到输入数字之间的所有质数: 一个按钮,点击后获取输入框输入 ...
- Eclipse中文乱码解决汇总(应该比较全):
Eclipse中文乱码解决汇总(应该比较全,欢迎补充): 方法一: 把GBK改成utf-8. 方法二: Window->preference->general->content ty ...
- 使用APPLICATION制作缓存,转存一下,有一段写的还可以。
public sealed class CacheManager { private HttpApplicationState appPool = null; /// <summar ...
- POJ 3083 Children of the Candy Corn bfs和dfs
Children of the Candy Corn Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 8102 Acc ...
- (转)Eclipse 下找不到或无法加载主类的解决办法
转自:http://my.oschina.net/leejun2005/blog/106789,写的太好了! 有时候 Eclipse 会发神经,好端端的 project 就这么编译不了了,连 Hell ...
- Linux内核监控模块-1-驱动模块(LKM)开发(以一个简单的hello world程序为例)
在上面一篇中介绍到,监控模块要做成一个驱动模块(或者说是可加载模块,LKM),动态的加载到Linux内核中.那么这篇就简单的介绍一下怎样做一个这样的驱动模块. 以简单的hello world程序为 ...
- Xcode中使用GitHub详解
为了熟悉git命令及将写的小Demo能够管理起来方便日后查询,所以选择使用GitHub. 现在我们来说说Xcode中如何使用GitHub--- 一.当然是要先有GitHub帐号并登录了(没有的注册一个 ...
- C#反射(一) 【转】
在还不太熟悉反射的昨天,以为反射很神秘,在网上到处找答案.今天找了段代码敲了一下,茅塞顿开!其实反射也就那么简单的一回事! 反射是一种机制,通过这种机制我们可以知道一个未知类型的类型信息.比如, ...