接收页面传来的参数方法

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. C#中扩展StringBuilder支持链式方法

    本篇体验扩展StringBuilder使之支持链式方法. 这里有一个根据键值集合生成select元素的方法. private static string BuilderSelectBox(IDicti ...

  2. 取消vs2013在代码中的Reference数量功能

    继续吐槽.新增的自动统计reference数量的功能: 不爽的是总以为那是一行空行,可是鼠标放上去总是落空,遂我要干掉他. 这玩意有个好处就是有两个版本的程序有小修改的时候(尤其有很多重载方法的调用变 ...

  3. GTD时间管理(3)---梳理总结

    一:收集箱   1:灵感和想法 2:交代事情 3:任何困扰你的事     二:清单容器     1:通过行动性和非行动性原则 2:通过2分钟原则 3:通过人员性质原则  三:组织 (人,事,时 的组合 ...

  4. 如何在maven项目的pom.xml文件中添加jar包

    在使用maven进行项目开发时,我们需要在pom.xml文件中添加自己所需要的jar包.这就要求我们获取jar包的groupId和artifactId. 我们可以在一些maven仓库上搜索我们所需要的 ...

  5. C++ Data Member内存布局

    如果一个类只定义了类名,没定义任何方法和字段,如class A{};那么class A的每个实例占用1个字节的内存,编译器会会在这个其实例中安插一个char,以保证每个A实例在内存中有唯一的地址,如A ...

  6. 连接UI到代码

    本章,你将连接FoodTracker应用程序的UI到代码并定义一些可执行的动作.当你完成时,你的应用程序将是这个样子: 学习目标在课程结束时,你将能够:1.解释一个storyboard中的场景和vie ...

  7. blueImp/jQuery file upload 的正确用法(限制上传大小和文件类型)

    这个插件太出名了,几乎能完成所有能想象的到的效果,包括进度条.拖拽.甚至现在已经完美支持图片视频等的处理,三个字形容就是屌爆了.最近在做上传这一部分,发现网上对于上传文件大小的限制和类型检测等的方法都 ...

  8. java/.net-常用工具下载地址&常用学习网址&快捷键

    HTML5 HTML5:http://www.html5cn.org/ php常用网址 thinkphp框架:http://www.thinkphp.cn/ wampserver开发服务器:http: ...

  9. eclipse android logcat 只显示自己应用程序信息的设置方法

    1 elcipse 中往往会在logcat中显示 all message ,而这里面的信息太多,根本没有办法进行区分.如图: 2 我们想显示自己项目的 logcat .下面开始设置. 3 首先点击上面 ...

  10. DataTable添加行和列数据

    protected void Page_Load() { DataTable newdtb = new DataTable(); newdtb.Columns.Add("Id", ...