接收页面传来的参数方法

1、第一种:在action中设置相应的变量  

  在相应的action中设置与将要传进来的参数名相同的变量

  eg: 页面传给后台两个参数 name=chance & age = 1,

那么后台的action中 要设定这样的变量:private String name; private int age;同时,必须设置setXXX()和 getXXX()方法

     那么在访问action过程中,struts会自动的为action中的这两个变量设置前台传来的值 

2、第二种:DomainModule

  domainmodule 中文解释:域模型

domainmodule接收参数的方式就是:在action中设一个module对象(即实体对象)

  eg: 一个bbs系统,实现用户注册模块,我们会相应的建立一个 User类

  分析下为什么要用DomainModule来接收参数,我们从页面向后台的action中传递参数,action做的处理无非是紧接着再把这个参数传递给对应的module,那么假如我们的module有100个变量,那么我们用第一种方法接收参数时就要在action中设置100个变量,但如果我们用domainmodule的话就简单的多

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

    我们可以这么处理,首先在相应的action中设一个实体对象private User user;(假如我们已经有了User这个实体类了),

那么前台传递参数的时候可以这么来写 action?user.name=chance&user.password=123

  注意:需要给user设置 set,get方法

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

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

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

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

  搞定!

第三种: ModuleDriven

  这个不是很常用,但是这个思想很重要,直接贴上代码

较特殊,它是Struts2种独有的一种接收用户输入的机制,想在项目中使用模型驱动

(ModelDriven)需要让Action实现com.opensymphony.xwork2.ModelDriven 接口,使用它

的getModel()方法来通知Struts2要注入的属性类型,并且声明属性时一定要实例化,但不需get,

set方法(这是与第二种方式的区别)。

public class UsersAction extends SuperAction implements ModelDriven<Users> {

/**
*
*/
private static final long serialVersionUID = 1L;
private Users user = new Users();

public String login() {
UsersDAO udao = new UsersDAOImpl();
if (udao.usersLogin(user)) {
// 在session中保存登录成功的用户名
session.setAttribute("loginUserName", user.getUsername());
return "login_success";
} else {
return "login_failure";
}
}

// 用户注销方法
public String logout() {
if (session.getAttribute("loginUserName") != null) {
session.removeAttribute("loginUserName");
}
return "logout_success";
}

@Override
public Users getModel() {
// TODO Auto-generated method stub
return this.user;
}

}

Action接收页面传来的参数方法的更多相关文章

  1. spring controller接口中,用pojo对象接收页面传递的参数,发现spring在对pojo对象赋值时,有一定顺序的问题

    1.我的项目中的实体类都继承了基类entityBase,里面封装了分页的一些属性,pageindex.pagesize.pagerownum等. 2.思路是页面可以灵活的传递分页参数,比如当前页pag ...

  2. js通过location.search来获取页面传来的参数

    这篇文章主要介绍了通过window.location.search来获取页面传来的参数,经测试是OK的 ? 1 2 3 4 5 function GetQueryString(name) { var ...

  3. 通过location.search来获取页面传来的参数

    获取页面传来的参数 <div> <script> function GetQueryString(name) { var reg = new RegExp("(^|& ...

  4. struts2中的session、request 、和action往页面中传值的方法

    ActionContext.getContext().put("list", list); ActionContext.getContext().getValueStack().p ...

  5. ASP.NET 页面之间传递参数方法

    1.通过URL链接地址传递 (1) send.aspx代码 protected void Button1_Click(object sender, EventArgs e) { Request.Red ...

  6. struts2 Action 接收参数的三种方法

    刚学Struts2 时 大家可能遇到过很多问题,这里我讲一下Action 接收参数的三种方法,我曾经在这上面摔过一回.所以要警醒一下自己..... 第一种:Action里声明属性,样例:account ...

  7. Struts2学习---基本配置,action,动态方法调用,action接收参数

    首先我们先来直接配置,然后再来讲原理: 第一步:jar包的引入: 我们可以到struts2的官网上下载: http://struts.apache.org/download.cgi#struts251 ...

  8. Struts2中Action接收参数的方法主要有以下三种:

    Struts2中Action接收参数的方法主要有以下三种: 1.使用Action的属性接收参数(最原始的方式):     a.定义:在Action类中定义属性,创建get和set方法:     b.接 ...

  9. Struts2中Action接收参数的方法

    详见:http://blog.yemou.net/article/query/info/tytfjhfascvhzxcyt112 Struts2中Action接收参数的方法主要有以下三种: 1.使用A ...

随机推荐

  1. https SSL主流数字证书都有哪些格式?

    主流数字证书都有哪些格式? 一般来说,主流的Web服务软件,通常都基于两种基础密码库:OpenSSL和Java. Tomcat.Weblogic.JBoss等,使用Java提供的密码库.通过Java的 ...

  2. Android防止按钮连续点击

    为了防止用户或者测试MM疯狂的点击某个button,写个方法防止按钮连续点击. public class Utils { private static long lastClickTime; publ ...

  3. 在JS中设置Select和radio选中

    <select id="Gender" name="Gender"> <option value="1">男< ...

  4. sap 怎么导出sap的各种表

    其实方法很简单,只是以前一直没用过! 进入事务码se84

  5. xcode 编译器在各个arch下面默认宏

    $ clang -dM -E -arch armv7 -x c /dev/null #define OBJC_NEW_PROPERTIES 1 #define __APCS_32__ 1 #defin ...

  6. 求s=a+aa+aaa+aaaa+aa...a的值,其中a是一个数字。

    import java.util.Scanner; /** * 题目:求s=a+aa+aaa+aaaa+aa...a的值,其中a是一个数字. * 2+22+222+2222+22222(此时共有5个数 ...

  7. 更换TFS账户

    1.通过命令行启动“rundll32.exe keymgr.dll, KRShowKeyMgr"2.更改TFS账户3.重新启动VS2005

  8. 水晶报表设置FiledObject支持HTML格式的数据

    经常遇见把数据拼接成html格式后,然后在水晶报表中按照这种格式进行展现. 这就需要我们对次FiledObject设置成html文本: 设置方式: 格式编辑器->段落->文本解释,然后选择 ...

  9. swift 如何删除subviews

    scrollView.subviews.map { (var view) -> () in if (view is UIButton) { view.removeFromSuperview() ...

  10. 【Math】余弦相似度 和 Pearson相关系数

    http://cucmakeit.github.io/2014/11/13/%E4%BF%AE%E6%AD%A3%E4%BD%99%E5%BC%A6%E7%9B%B8%E4%BC%BC%E5%BA%A ...