标签:
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 }
页面层:
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>
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>
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 }
Struts2的参数的封装分成两类:
* 属性驱动:
* 模型驱动:
页面:
用户名:<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对象中.传递给业务层.
页面:
用户名:<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获得到框架创建的对象.(将封装封装到不同的对象中.)
标签:
原文地址:http://www.cnblogs.com/jiemoxiaodi/p/5668363.html