就是把视图上的值传递到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中传递参数(中文乱码问题)的更多相关文章

  1. jsp页面间传递参数 中文乱码问题(zz)

      jsp页面间传递参数 中文乱码问题 1.传递参数 var url = "*****Test.jsp?param1="+encodeURI(encodeURI(str));//对 ...

  2. html 传递参数中文乱码 js获取参数乱码

    每天学习一点点 编程PDF电子书.视频教程免费下载:http://www.shitanlife.com/code HTML传递中文参数时,有乱码导致接收不到正确的数据.JS中可以使用encodeURI ...

  3. JS解决URL传递参数中文乱码问题

    function getUrlParam(name){ // 用该属性获取页面 URL 地址从问号 (?) 开始的 URL(查询部分) var url = window.location.search ...

  4. JSP中四种传递参数中文乱码问题

    查看来源:http://blog.csdn.net/hackerain/article/details/6776083

  5. 解决JS中取URL地址中的参数中文乱码

    GET请求会将中文编码,如果取出乱码的话,应该进行解码操作, 下面的函数是获取指定参数名的参数值,参数值可是中文.英文. function getQueryString(name) { var reg ...

  6. jsp或Action获取请求参数中文乱码

    普通情况下,中文字符会被自动转换成iso-8859-1的编码格式通过网络传输,而这种格式是没办法直接表示出我们认识的中文字符的,所以还要手动将他转换回之前的字符集. 一般在servlet或者actio ...

  7. ASIHTTPRequest 中url参数中文乱码

    ASIHTTPReques确实是在开发过程中,数据的传输,获取方面给我们很大的帮助.然而在一些方面也是需要一些的注意. 在我们使用ASIHTTPReques 进行get方式获取数据时,如果需要传入中文 ...

  8. ajax 传递参数中文乱码解决办法

    /********Start***********/ /*获取地址栏参数*/ function getRequest(){ var url = location.search; //获取url中&qu ...

  9. js两个页面之间URL传递参数中文乱码

随机推荐

  1. OC基础-day06

    #pragma mark - Day06_01_点语法 1. 点语法. 1). 如果要访问对象的属性,还要去调用属性对应的setter getter方法.好烦躁好烦躁. 2). 点语法的作用: 快速调 ...

  2. iOS-UI控件精讲之UIView

    道虽迩,不行不至:事虽小,不为不成. 相关阅读 1.iOS-UI控件精讲之UIView(本文) 2.iOS-UI控件精讲之UILabel ...待续 UIView是所有UI控件的基类,在布局的时候通常 ...

  3. ASP.NET配置KindEditor文本编辑器-图文实例

    1.什么是KindEditor KindEditor 是一套开源的在线HTML编辑器,主要用于让用户在网站上获得所见即所得编辑效果,开发人员可以用 KindEditor 把传统的多行文本输入框(tex ...

  4. Nodejs简单验证码ccap安装

    首先要求: node npm 安装时如果提示npm-gyp失败,可进行如下操作: 确认python版本2.7+ 安装npm install ccap 如果失败,尝试npm install ccap@0 ...

  5. Windows Phone 之文件下载进度和速度显示

    用http协议来下载网络上的文件,通常我们需要获取文件的下载进度和下载的速度来给用户等待过程的一个交代,那么在windows phone 7下可以使用WebClient类来实现这一功能,HttpWeb ...

  6. excel 无法打开文件,提示:向程序发送命令时出现问题

    以下的方法以Excel为例,请一个一个的使用,总会有一个适合你的. 1 .兼容性 鼠标右击桌面Excel(或其他)的快捷方式,选“兼容性”,把以管理员身份运行此程序前的勾去掉,就一切ok 了. 如果桌 ...

  7. 开启 htaccess 配置

    是在wamp中,apache2.2 开启 伪静态时,httpd.conf 配置如下: 查找 <Directory />Options FollowSymLinksAllowOverride ...

  8. html中子div用了浮动怎样让父div的大小自动撑开(清除浮动)

    浮动子div撑开父div的几种方法: (1)在父div中在添加一个清除浮动的子div<div style=" clear:both;"></div>,该di ...

  9. nginx 基础文档

    Nginx基础 1.  nginx安装 2.  nginx 编译参数详解 3.  nginx安装配置+清缓存模块安装 4.  nginx+PHP 5.5 5.  nginx配置虚拟主机 6.  ngi ...

  10. iOS: 学习笔记, 用代码驱动自动布局实例

    iOS自动布局是设置iOS界面的利器. 本实例展示了如何使用自动布局语言设置水平布局, 垂直布局 1. 创建空白iOS项目 2. 添加一个控制器类, 修改YYAppDelegate.m文件 #impo ...