码迷,mamicode.com
首页 > 编程语言 > 详细

struts2 中属性驱动(其实就是struts2 action 中处理 request 的参数【old 方式servlet api 封装数据到javabean中(or beanutils)】),这里属性驱动是新方式

时间:2016-07-14 02:41:05      阅读:142      评论:0      收藏:0      [点我收藏+]

标签:

1、属性驱动

a\  一般的set

 

技术分享
 1 public class UserAction extends ActionSupport {
 2 
 3 private String username;
 4 private String password;
 5 
 6 public void setUsername(String username) {
 7 this.username = username;
 8 }
 9 
10 public void setPassword(String password) {
11 this.password = password;
12 }
13 
14 @Override
15 public String execute() throws Exception {
16 System.out.println("username:" + username + "----password:" + password);
17 return NONE;
18 }
19 }
set 方式

页面层:

技术分享
1 <form action="${pageContext.request.contextPath}/user.action" method="post">
2             用户名
3             <input type="text" name="username" />
4             <br />
5             密码
6             <input type="password" name="password" />
7             <br />
8             <input type="submit" value="提交" />
9         </form>
jsp 页面

b\ognl 方式实现

技术分享
1     <form action="${pageContext.request.contextPath}/user2.action" method="post">
2             用户名
3             <input type="text" name="user.username" />
4             <br />
5             密码
6             <input type="password" name="user.password" />
7             <br />
8             <input type="submit" value="提交" />
9         </form>
jsp页面

action端:

技术分享
 1 public class User2Action extends ActionSupport {
 2 
 3     private User user;
 4 
 5     public User getUser() {
 6         return user;
 7     }
 8 
 9     public void setUser(User user) {
10         this.user = user;
11     }
12 
13     @Override
14     public String execute() throws Exception {
15         System.out.println(user.toString());
16         return NONE;
17     }
18 }
action 端

 

Struts2的参数的封装分成两类:

* 属性驱动:

* 模型驱动:

 属性驱动:

一、提供属性的set方法,封装参数:(属性驱动)

页面:

用户名:<input type="text" name="username"><br/>

 

Action:

public class ParamAction1 extends ActionSupport{

private String username;

 

public void setUsername(String username) {

    this.username = username;

}

}

 

问题一:在Action中提供了全局变量,Action是线程安全的还是不安全?

* 提供了全局变量,如果是线程不安全的,全局变量就会有线程安全问题存在.测试提供一个构造方法.发现每次请求都会创建一个Action的实例.说明Action是多实例.不会有线程安全问题.

问题二:参数封装是由谁完成的?

* <interceptor name="params" class="com.opensymphony.xwork2.interceptor.ParametersInterceptor"/>

 

这种方式不是特别好!封装的是单个属性,需要自己收到封装到一个JavaBean对象中.传递给业务层.

 

二、通过OGNL表达式的写法封装参数:(属性驱动)

页面:

用户名:<input type="text" name="user.username"><br/>

 

Action:

public class ParamAction2 extends ActionSupport{

private User user;

 

public void setUser(User user) {

    this.user = user;

}

 

public User getUser() {

    return user;

}

}

 

***** OGNL表达式封装,后台Action中提供一个对象的set和get方法.必须提供get方法.get获得到框架创建的对象.(将封装封装到不同的对象中.)

struts2 中属性驱动(其实就是struts2 action 中处理 request 的参数【old 方式servlet api 封装数据到javabean中(or beanutils)】),这里属性驱动是新方式

标签:

原文地址:http://www.cnblogs.com/jiemoxiaodi/p/5668363.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!