接收页面传来的参数方法
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接收页面传来的参数方法的更多相关文章
-
spring controller接口中,用pojo对象接收页面传递的参数,发现spring在对pojo对象赋值时,有一定顺序的问题
1.我的项目中的实体类都继承了基类entityBase,里面封装了分页的一些属性,pageindex.pagesize.pagerownum等. 2.思路是页面可以灵活的传递分页参数,比如当前页pag ...
-
js通过location.search来获取页面传来的参数
这篇文章主要介绍了通过window.location.search来获取页面传来的参数,经测试是OK的 ? 1 2 3 4 5 function GetQueryString(name) { var ...
-
struts2中的session、request 、和action往页面中传值的方法
ActionContext.getContext().put("list", list); ActionContext.getContext().getValueStack().p ...
-
ASP.NET 页面之间传递参数方法
1.通过URL链接地址传递 (1) send.aspx代码 protected void Button1_Click(object sender, EventArgs e) { Request.Red ...
-
struts2 Action 接收参数的三种方法
刚学Struts2 时 大家可能遇到过很多问题,这里我讲一下Action 接收参数的三种方法,我曾经在这上面摔过一回.所以要警醒一下自己..... 第一种:Action里声明属性,样例:account ...
-
Struts2学习---基本配置,action,动态方法调用,action接收参数
首先我们先来直接配置,然后再来讲原理: 第一步:jar包的引入: 我们可以到struts2的官网上下载: http://struts.apache.org/download.cgi#struts251 ...
-
Struts2中Action接收参数的方法主要有以下三种:
Struts2中Action接收参数的方法主要有以下三种: 1.使用Action的属性接收参数(最原始的方式): a.定义:在Action类中定义属性,创建get和set方法: b.接 ...
-
Struts2中Action接收参数的方法
详见:http://blog.yemou.net/article/query/info/tytfjhfascvhzxcyt112 Struts2中Action接收参数的方法主要有以下三种: 1.使用A ...
-
struts2中的jsp值传到后台action接收的三种方法
struts2中的Action接收表单传递过来的参数有3种方法: 如,登陆表单login.jsp: <form action="login" method="pos ...
随机推荐
-
Hibernate-chapter two
又见面啦!!!经过上一章的学习,我们大概对Hibernate框架有所了解.接下来进入我们的第二阶段——实战! ======准备数据库====== 这里使用MySQL作为示范. 创建一个名为Hibern ...
-
ARMLinux下Alignment trap的一些测试 【转自 李迟的专栏 CSDN http://blog.csdn.net/subfate/article/details/7847356
项目中有时会遇到字节对齐的问题,英文为“Alignment trap”,如果直译,意思为“对齐陷阱”,不过这个说法不太好理解,还是直接用英文来表达. ARM平台下一般是4字节对齐,可以参考文后的给出的 ...
-
把页面上的图表导出为pdf文件,分享一种请求下载文件的方法
最近客户提出一个需求,就是把页面上的图表导出为pdf文件. 找了很多资料.终于有了点头绪.最主要是参考了HighCharts的做法.http://www.hcharts.cn/ 实现原理:把页面图表的 ...
-
辗转相除法_欧几里得算法_java的实现(求最大公约数)
辗转相除法,又被称为欧几里德(Euclidean)算法, 是求最大公约数的算法. 当然也可以求最小公倍数. 算法描述 两个数a,b的最大公约数记为GCD(a,b).a,b的最大公约数是两个数的公共素因 ...
-
PL/SQL 一个数据对象一个事务(rollback,submit)
/*********************************************** 一个数据对象一个事务(且记录错误信息到处理对象) ************************** ...
-
docker入门(二)容器与镜像的理解
10张图带你深入理解Docker容器和镜像 申明:此篇文章是转载的(原文地址http://dockone.io/article/783),今天意外发现已经有人转载了(复制了),希望大家关注原创 原本打 ...
-
[Swift]LeetCode594. 最长和谐子序列 | Longest Harmonious Subsequence
We define a harmonious array is an array where the difference between its maximum value and its mini ...
-
linux入门--类UNIX系统详解
有人说,这个世界上只有两种操作系统: UNIX 和类 UNIX 操作系统: 其它操作系统. 类 UNIX 系统(英文 Unix-like)既包括各种传统的 UNIX 系统,比如 FreeBSD.Ope ...
-
python字典与集合操作
字典操作 字典一种key - value 的数据类型,使用就像我们上学用的字典,通过笔划.字母来查对应页的详细内容. 语法: info = { 's1': "jack", 's3' ...
-
Redis集群环境使用的是redis4.0.x的版本,在用java客户端jedisCluster启动集群做数据处理时报java.lang.NumberFormatException: For input string: ";7003@17003";问题解决
java.lang.NumberFormatException: For input string: "7003@17003" at java.lang.NumberFormatE ...