Struts2提供了JavaBean属性,JavaBean对象,ModelDriven对象三种方式来保存HTTP请求中的参数。下面通过一个最常见的
登录的例子来看下这三种数据转移方式。页面代码很简单,提交表单中包含有用户名和密码,在Action中得到这两个参数从而
验证用户是否登录成功。
一、JavaBean属性
<%@ page contentType="text/html;charset=UTF-8" %>
<html>
<head></head>
<body>
<h1>登录页</h1>
<form action="/cdai/login" method="post">
<div>
<label for="username">名称:</label>
<input id="username" name="username" type="textfield"/>
</div>
<div>
<label for="password">密码:</label>
<input id="password" name="password" type="password"/>
</div>
<div>
<label for="rememberMe">
<input id="rememberMe" name="rememberMe" type="checkbox"/> 记住我
</label>
<input type="submit" value="登录"></input>
</div>
</form>
</body>
</html>
package com.cdai.web.ssh.action;
import com.cdai.web.ssh.request.LoginRequest;
import com.cdai.web.ssh.service.UserService;
import com.opensymphony.xwork2.Action;
import com.opensymphony.xwork2.ModelDriven;
public class LoginAction implements Action {
private String username;
private String password;
private UserService userService;
@Override
public String execute() {
System.out.println("Login action - " + request);
return SUCCESS;
}
public String getUsername() {
return request;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return request;
}
public void setPassword(String Password) {
this.Password = Password;
}
}
这种方式比较简明,直接将表单中的参数保存到Action中的属性中。Action在验证时可能还需要将用户名和密码再封装成Dto的
形式传给Service层进行验证。所以为什么不更进一步,直接将用户名和密码保存到Dto中。
二、JavaBean对象
<%@ page contentType="text/html;charset=UTF-8" %>
<html>
<head></head>
<body>
<h1>登录页</h1>
<form action="/cdai/login" method="post">
<div>
<label for="username">名称:</label>
<input id="username" name="request.username" type="textfield"/>
</div>
<div>
<label for="password">密码:</label>
<input id="password" name="request.password" type="password"/>
</div>
<div>
<label for="rememberMe">
<input id="rememberMe" name="rememberMe" type="checkbox"/> 记住我
</label>
<input type="submit" value="登录"></input>
</div>
</form>
</body>
</html>
package com.cdai.web.ssh.action;
import com.cdai.web.ssh.request.LoginRequest;
import com.cdai.web.ssh.service.UserService;
import com.opensymphony.xwork2.Action;
import com.opensymphony.xwork2.ModelDriven;
public class LoginAction implements Action {
private LoginRequest request;
private UserService userService;
@Override
public String execute() {
System.out.println("Login action - " + request);
return SUCCESS;
}
public LoginRequest getRequest() {
return request;
}
public void setRequest(LoginRequest request) {
this.request = request;
}
}
这样就可以很方便地直接调用Service层了。但是有一个小缺点就是这样加深了页面参数名的深度,只有为参数名加上request
前缀(Action中的属性名)才能使Struts2通过OGNL将表单中的参数正确保存到request对象中。
三、ModelDriven对象
<%@ page contentType="text/html;charset=UTF-8" %>
<html>
<head></head>
<body>
<h1>登录页</h1>
<form action="/cdai/login" method="post">
<div>
<label for="username">名称:</label>
<input id="username" name="username" type="textfield"/>
</div>
<div>
<label for="password">密码:</label>
<input id="password" name="password" type="password"/>
</div>
<div>
<label for="rememberMe">
<input id="rememberMe" name="rememberMe" type="checkbox"/> 记住我
</label>
<input type="submit" value="登录"></input>
</div>
</form>
</body>
</html>
package com.cdai.web.ssh.action;
import com.cdai.web.ssh.request.LoginRequest;
import com.cdai.web.ssh.service.UserService;
import com.opensymphony.xwork2.Action;
import com.opensymphony.xwork2.ModelDriven;
public class LoginAction implements Action, ModelDriven<LoginRequest>
{
private LoginRequest request = new LoginRequest();
private UserService userService;
@Override
public String execute() {
System.out.println("Login action - " + request);
return SUCCESS;
}
@Override
public LoginRequest getModel() {
return request;
}
}
这种方式要多实现一个ModelDriven接口,将ModelDriven提供的对象也保存到ValueStack上,从而使前台页面可以直接通过
username和password属性名来定义表单的参数名了。
三种方式具体采用哪种不能一概而论,还是看项目的具体需求再自己定吧!
分享到:
相关推荐
5.1 数据转移和类型转换:Web应用程序领域的常见任务 85 5.2 OGNL和Struts 2 85 5.2.1 OGNL是什么 85 5.2.2 OGNL如何融入框架 87 5.3 内建的类型转换器 89 5.3.1 立即可用的类型转换器 89 5.3.2 使用OGNL表达式从...
主要介绍了详解Java的Struts2框架的结构及其数据转移方式,Struts框架是Java的SSH三大web开发框架之一,需要的朋友可以参考下
struts2框架的标签库分为三类: 用户标签:生成HTML元素 非用户标签:数据访问、逻辑控制等。 AJAX标签:支持AJAX技术。 用户界面标签又分两类: 表单标签:生成HTML页面的from元素 非表单标签:生成页面上的...
optiontransferselect标签:创建两个选项以及转移下拉列表项,该标签生成两个下拉列表框,同时生成相应的按钮,这些按钮可以控制选项在两个下拉列表之间移动、排序。 radio标签:单选框。 optgroup标签:生成一个...
2. 深入 STRUTS架构..................................................................................37 2.1. 随便谈谈......................................................................................
交易系统和数据网格的Struts 杠杆是一个用于编写事务系统(特别是用于内存中数据)的库。 它由各个部分组成: index :索引和查找结构stats :统计结构sync :事务系统的同步原语table :由事务算法支持的各种KV表...
13.1 使用Struts Bean标签保存与传输数据小实例 15 第14章 Struts Logic标签库 15 14.1 如何使用Logic标签进行基于值的条件显示 15 14.1 如何使用Logic标签进行字符串匹配 15 14.1 如何使用Logic标签来检测值是否...
2. 深入STRUTS 架构..................................................................................37 2.1. 随便谈谈.......................................................................................
到帐确认 当职工的缴交公积金总金额转到银行帐号后,银行将汇缴和支取情况提交资金中心确认,从而产生中心的内部业务数据。 销户 当职工因各种原因不在交纳公积金(如:出国、死亡等原因)已不再缴交公积金时的处理...
Struts is a set of cooperating classes, servlets, and JSP tags that make up a reusable MVC 2 design. This definition implies that Struts is a framework, rather than a library, but Struts also contains...
条件:数据不会被第三方修改、数据大小在可接受范围、数据更新频率低、同一数据被系统频繁使用、非 关键数据 c) 第三方缓存的实现 5. Hibernate的查询方式 Sql、Criteria,object comptosition Hql: 1、 属性查询 ...
由于Spring通过代理Hibernate完成数据层的操作,所以原Hibernate的配置文件hibernate.cfg.xml的信息也转移到Spring的配置文件中: 代码 4 Spring中有关Hibernate的配置信息 1. 2. !-- 数据源的配置 //--> 3. ...
本资源为基于Java的execl导入的一个小Demo,这里采用的主要开发框架是Struts2,但这个execl导入功能也是能够轻松转移到其他开发框架的,要注意的是其中的jar包。本Demo中的实体类中所声明的字段,就是要导入的数据...
要求视窗服务器 2012 R2 假设有一个正确配置的 Salt Master,包括: 盐云提供商盐云配置文件盐云地图文件Struts数据还假定云负载均衡器作为前端的故障转移工具。地点设置位置时,您必须在 Pillar 中为每个位置创建一...
ArrayList 和Vector都是使用数组方式存储数据,此数组元素数大于实际存储的数据以便增加和插入元素,它们都允许直接按序号索引元素,但是插入元素要涉及数组元素移动等内存操作,所以索引数据快而插入数据慢,...
ArrayList和Vector都是使用数组方式存储数据,此数组元素数大于实际存储的数据以便增加和插入元素,它们都允许直接按序号索引元素,但是插入元素要涉及数组元素移动等内存操作,所以索引数据快而插入数据慢,Vector...
人道协调厅预期行动框架 (AAF) 包括三个预先商定的Struts:资金、活动和触发器。 触发器定义了框架应响应的特殊冲击(原因和影响)。 当预测表明冲击可能会实现时,该框架就会激活。 然后Swift拨付资金并实施干预...
另外,对Struts 1.x的支持被独立成 'spring-webmvc-struts.jar'。 注意:经常被使用的的Spring的DispatcherServlet也是Spring Web MVC框架中的一部分。因此,就算你只是为了远程访问(例如,暴露Hessian或者 HTTP...