struts学习笔记3接收web前端前台传来的数据

来源:互联网 发布:上汽集团有限公司知乎 编辑:程序博客网 时间:2024/05/21 10:13

这个例子主要是运用了DomainModule的方式进行的操作。

domainmodule 中文解释:域模型,domainmodul接收参数的方式就是,在action中设一个module对象(即实体对象,还不明白就看下面的举例)

例如,一个bbs系统,实现用户注册模块,那么后台module我们就会相应的建立一个 User类,这个user类就是我们前面说过的module

分析下为什么要用DomainModule来接收参数,我们从前台向后台的action中传递参数,action做的处理无非是紧接着再把这个参数传递给对应的module,那么假如我们的module100个变量(呵呵,我说的是假如),那么我们用第一种方法接收参数时就要在action中设置100个变量,但如果我们用domainmodule的话就简单的多,说了这么多,还没讲到怎么用呵呵,切入正题:

eg:有一个用户登录系统,前台需要向后台传递一个username password两个属性,

那么我们可以这么处理,首先在相应的action设一个private User user;变量(假如我们已经有了User这个Module了),好那么前台传递参数的时候可以这么来写,

actionuser.name=chance&user.password=123

注意:我们依然需要继续给user设置 set get方法

另外需要注意的是,在action中设置的变量无论是基本类型,还是引用类型,我们只需要声明,但不需要定义(简单的说,就是我们不需要去 new一个变量)

new的过程struts来帮我们完成

下面我们在来考虑一个问题,还拿上面的用户登录系统来举例,通常用户登录的时候除了用户名,密码,还会填写一个确认密码(其实这个工作完全可以交给客户端的js来处理,这里只是为了说明问题),但是在 User Module抽象封装的过程它是不会有 confimPassword这一项的,这样我们就不能用domainModule来解决这个问题,怎么办?

解决方法就是引入 DTO(又交 do,或vodata transform object,它的工作就两点:接收一下,传递一下;

接收一下:前台传过来的user对象,我们不直接传递给usermodule而是传递给 dto对象,例如userDto(它里面会有一个confimPassword变量)

传递一下:dto接收来参数后进过一番数据处理,确认密码输入正确那么就会必要的参数变量传递给 usermodule 。

  <form action="reg/register!reg" method="post" name="myform">    姓名:<input type="text" name="user.name"/><br/>    密码:<input type="password" name="user.password"/><br/>    性别:<input type="radio" name="user.sex" value="male">男<input type="radio" name="user.sex" value="fmale">女<br/>    邮箱:<input type="text" name="user.mail"><br/><br/>          <input type="reset"/>     <input type="submit">     </form>

这一段,注意的是表单里的action,和name属性。


package cn.qin.Actions;import com.opensymphony.xwork2.ActionSupport;import com.opensymphony.xwork2.ModelDriven;import cn.qin.Models.*;public class registerAction extends ActionSupport {private User user;public User getUser() {return user;}public void setUser(User user) {this.user = user;}public String reg(){System.out.println("system.out:"+"name"+user.getName()+"密码"+user.getPassword()+"性别"+user.getSex()+"邮箱"+user.getName());return "success";}public User getModel() {        return user;    }}

注意user的get方法

package cn.qin.Models;public class User {private String name;private String password;private String mail;private String sex;public String getSex() {return sex;}public void setSex(String sex) {this.sex = sex;}public String getMail() {return mail;}public void setMail(String mail) {this.mail = mail;}public String getName() {return name;}public void setName(String name) {this.name = name;}public String getPassword() {return password;}public void setPassword(String password) {this.password = password;}}
user的属性,即module。struts的配置如下

<constant name="struts.devMode" value="true" /><package name="register" namespace="/reg" extends="struts-default"><action name="register" class="cn.qin.Actions.registerAction" ><result>/regSuccess.jsp</result></action></package>







原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 在闲鱼上买的电器是坏的怎么办 打开时全屏不知变成小屏怎么办 苹果6s原装数据线不充电怎么办 vivo手机安卓系统耗电快怎么办 电视机机顶盒插了电源开不了怎么办 苹果手机更新系统后老是闪退怎么办 16g苹果6s手机内存不足怎么办 苹果以前浏览器页面忽然没了怎么办 白衬衣被别的衣服染了怎么办 把宝贝标题改了没访客了怎么办 微信公众号看不到评论时间了怎么办 微店退款退货买家发空快递怎么办 微信二维码收款顾客少付款了怎么办 江西高考二本差5分上线怎么办 湖南文科考生二本上线差两分怎么办 在商场试鞋自己鞋子被偷怎么办 网易账号忘记密码更换手机了怎么办 一人在外地钱花光了怎么办 银行卡被公安冻结卡里的钱怎么办 在店铺不上班了押工资了怎么办? 在银座的押金拿不出来怎么办 唯品会退货时快递单号填错了怎么办 天猫店铺快递已发到不了怎么办 中邮消费贷没审核通过怎么办 房贷扣款日忘存钱了怎么办 农业银行卡输密码次数超限载怎么办 农业银行卡丢了不知道卡号怎么办 银行卡短信扣费失败怎么恢复怎么办 歌华有线遥控器点了tvav怎么办 一级注册结构延续注册晚了怎么办 在京东买的黄金项链买贵了怎么办 京东上面买的商品不符合实际怎么办 在京东买东西卖家迟迟不发货怎么办 淘宝商家买的货一直不到怎么办 国美买的格力空调发票丢了怎么办 国美实体店发票丢了怎么办 我在苏宁买的冰箱发票丢了怎么办 信用卡家庭电单位电话换了怎么办 常住户囗和实际住址没房子怎么办 退货淘宝极速退款 卖家拒收怎么办 淘宝退货极速退款后卖家拒收怎么办