Struts核心业务之请求数据的自动封装

来源:互联网 发布:借钱软件 编辑:程序博客网 时间:2024/05/18 22:40

请求数据的自动封装


三种方法:

1.OGNL方式

2.拦截器params

3.action实现ModelDriven<T>接口


方法一:1.OGNL方式


1.创建数据实体类

public class User {      private String userName;      private String passWord;                  public String getUserName() {return userName;}public void setUserName(String userName) {this.userName = userName;} public String getPassWord(){return passWord;}public void setPassWord(String passWord) {this.passWord = passWord;} }
2.创建Action类进行数据的读取

import com.opensymphony.xwork2.ActionSupport;public class UserAction extends ActionSupport {     private User user;          //get()和set()方法不能偷懒得都写上,不然会出现获取不到信息的尴尬局面~切记     public void setUser(User user) {this.user = user;}   public User getUser() {return user;          }  public String login() {  System.out.println("用户名"+user.getUserName());  System.out.println("密码"+user.getPassWord());       return "login";}}
3.登录界面,进行数据的输入

 <body>    <form action="${pageContext.request.contextPath}/login" name="frmlogin" method="post">        用户名:<input type="text" name="user.userName"/><br>        密 码:<input type="text" name="user.passWord"/><br>     <input type="submit" value="提交"><br>    </form>  </body>

运行结果:


小贴士:我们通过user.userName这种方式获取值其实就是使用了ognl表达式

就是往根(root,值栈valueStack)中存放值,而值栈中的栈顶元素也就是为当前action,我们在action中设置user的get、set属性,即可以让存进来的值匹配到,进而将对应属性赋值成功。




方法二:拦截器params


1.当我们直接在action中封装实体的时候,我们可以直接获取值,不用通过bean对象

import com.opensymphony.xwork2.ActionSupport;public class UserAction extends ActionSupport { private String userName;     private String passWord;               public String getUserName() {return userName;}public void setUserName(String userName) {this.userName = userName;} public String getPassWord(){return passWord;}public void setPassWord(String passWord) {this.passWord = passWord;}  public String login() {  System.out.println("用户名"+userName);  System.out.println("密码"+passWord);       return "login";}}
2.登录界面name属性值必须和实体属性值一致

<body>    <form action="${pageContext.request.contextPath}/login" name="frmlogin" method="post">      用户名:<input type="text" name="userName"/><br>         密码:<input type="text" name="passWord"/><br>     <input type="submit" value="提交"><br>    </form>  </body>

运行结果:



小贴士:我们之所以能够直接获取,是因为拦截器params自动帮我们拦截匹配了





方法三:action实现ModelDriven<T>接口


1.同样的我们需要一个实体类user

public class User {      private String userName;      private String passWord;                  public String getUserName() {return userName;}public void setUserName(String userName) {this.userName = userName;} public String getPassWord(){return passWord;}public void setPassWord(String passWord) {this.passWord = passWord;} }
2.创建一个活动类同时实现ModelDriven<T>接口
import com.opensymphony.xwork2.ActionSupport;import com.opensymphony.xwork2.ModelDriven;public class MyDateTest extends ActionSupport implements ModelDriven<User>{private User user=new User();public User getModel() {     //必须重写getModel方法,并且将实体对象作为返回值return user; }    public String login(){    System.out.println("用户名:"+user.getUserName());    System.out.println("密码:"+user.getPassWord());    return "success";    }}
3.登录界面进行数据提交
 <body>    <form action="${pageContext.request.contextPath}/login" name="frmlogin" method="post">      用户名:<input type="text" name="userName"/><br>         密码:<input type="text" name="passWord"/><br>     <input type="submit" value="提交"><br>    </form>  </body>
运行结果:


阅读全文
0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 如果迷路了你会怎么办 吃多了抽烟想吐怎么办 晚上牙疼得要命怎么办 楼梯被火封锁后怎么办 牙齿疼怎么办能快速不疼 我被短信轰炸了怎么办 火警响了在家该怎么办 痔疮肉球变大了怎么办 痔疮长了好几个怎么办 苹果7手机丢了怎么办 如果油锅着火了怎么办 家里电气著火了怎么办 你家油锅起火了怎么办 交通事故后对方不肯去处理怎么办 租的车出了事故怎么办 借的车出了事故怎么办 台风来了怎么办小知识 台中班台风来了怎么办 地震时在五楼怎么办 小事故对方不来怎么办 发生交通事故对方不处理怎么办 当地震来了该怎么办 地震来了该怎么办教案 地震来了怎么办的问题 住30楼的地震了怎么办 在家里地震来了怎么办? 乐高地震来了怎么办? 地震来了该怎么办300字 地震来了该怎么办200 外地在北京生孩子建档怎么办 怀孕2个月头疼怎么办 怀孕6个月头疼怎么办 轮胎扎了个钉子怎么办 顶菅遇到填土区怎么办 12墙没砌在梁上怎么办 孕32周胎盘二级怎么办 孕36周胎盘三级怎么办 孕24周胎盘一级怎么办 孕24周 胎盘1级怎么办 抗核抗体1:1000怎么办 抗核抗体1:320怎么办