1、基本属性注入

  我们可以直接将表单数据项传递给Action,而Action只需要提供基本的属性来接收参数即可,这种传参方式称为基本属性注入。例如

  jsp页面:

<s:form method="post" action="/Login">
<s:textfield name="username" label="用户名"/>
<s:password name="password" label="密码"/>
<s:submit></s:submit>
</s:form>

  Action:

package action;

import com.opensymphony.xwork2.Action;
import com.opensymphony.xwork2.ActionContext; import models.User; public class LoginAction { 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 execute(){
//用户名或密码错误
if(!"admin".equals(this.username) || !"123456".equals(this.password)){
return Action.LOGIN;
}
//用户名和密码正确
else{
return Action.SUCCESS;
}
}
}

只需要在Action中提供username和password两个属性,并提供了setXXX()方法,就可以实现参数的自动传递,这里不需要成员变量的名称和参数名称一致,只需要setXXX()对于的属性名和参数名相同就行

2、域模型注入

  如果表单上的数据项很多,我们可以将表单中的数据项封装成实体对象后传递给Action,而Action需要提供实体对象属性来接收参数,这种传参的方式称为域模型注入。

   如上面例子,可以先定义一个User实体类

package models;

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;
}
}

在Action中

package action;

import com.opensymphony.xwork2.Action;
import com.opensymphony.xwork2.ActionContext; import models.User; public class LoginAction { private User user;
public User getUser() {
return user;
}
public void setUser(User user) {
this.user = user;
} public String execute(){
//用户名或密码错误
if(user==null || !"admin".equals(user.getUsername()) || !"123456".equals(user.getPassword())){
return Action.LOGIN;
}
//用户名和密码正确
else{
return Action.SUCCESS;
}
}
}

  

  jsp页面:

<s:textfield name="user.username" label="用户名"/>
<s:password name="user.password" label="密码"/>
<s:submit></s:submit>

3、模型驱动传参数(Model Driven)

Action:

package action;

import com.opensymphony.xwork2.Action;
import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ModelDriven; import models.User; public class LoginAction implements ModelDriven<User>{ private User user=new User(); public String login(){
//用户名或密码错误
if(user==null || !"admin".equals(user.getUsername()) || !"123456".equals(user.getPassword())){
return Action.LOGIN;
}
//用户名和密码正确
else{
return Action.SUCCESS;
}
} public User getModel() {
// TODO Auto-generated method stub
return user;
}
}

JSP页面

<s:textfield name="username" label="用户名"/>
<s:password name="password" label="密码"/>
<s:submit></s:submit>

  

最新文章

  1. 对session的理解
  2. .net学习笔记--使用抽象方法实现多态
  3. centos中rabbitmq的安装及php支持
  4. 是什么在.NET程序关闭时阻碍进程的退出?
  5. POJ 1094 Sorting It All Out (拓扑排序,判断序列是否唯一,图是否有环)
  6. POJ3641 Pseudoprime numbers(快速幂+素数判断)
  7. 深入浅出 SpringMVC - 1
  8. Go实现海量日志收集系统(一)
  9. SQL允许脏读WITH(NOLOCK)
  10. 单元测试mock当前时间
  11. Jenkins+sonar7.3集成
  12. LeetCode 15 3Sum(3个数求和为0的组合)
  13. python爬虫beautifulsoup4系列2
  14. js+php实现文件上传显示文件上传进度条的插件
  15. Django-manage.py
  16. 用 Nokitjs 解决前端开发中的跨域问题
  17. HyperLedger Fabric 1.4 交易流程(6.3)
  18. 孤荷凌寒自学python第四十天python 的线程锁RLock
  19. HTMLParser使用详解(2)- Node内容
  20. HTML-虚线框3例

热门文章

  1. 封装boto3 api用于服务器端与AWS S3交互
  2. Windows下安装Memcached服务及安装PHP的Memcached扩展
  3. 自定义word快捷键,设置插入图片快捷键
  4. JZYZOJ1371 青蛙的约会 扩展欧几里得 GTMD数论
  5. [CF843D]Dynamic Shortest Path
  6. Linux下KVM虚拟机基本管理及常用命令(转)
  7. Delphi DevExpress下载
  8. Netty游戏服务器之六服务端登录消息处理
  9. 用python生成基于lombok 和 hibernate 生成javabean
  10. JS的join方法