- 浏览: 1053494 次
文章分类
最新评论
-
cjh_android:
我想你是对的,至少对于现实是对的,不过对于技术岗位竞争越来越激 ...
程序员的思考--终于确定了自己的技术发展方向 -
dongbiying:
现在情况如何 。。
创业,不能兼职 -
jackyrong:
ie 9 下时,老显示关闭窗口提示,有办法去掉么,就是关闭掉那 ...
jquery右下角弹窗效果 -
lmaxjj:
加点班如果都称得上是累,只能说明还没体会到真正的生活。。
IT男的进化论 -
馨雨轩:
IT男要进化需要先穿越
IT男的进化论
Struts2 中 Action 充当着一个关键的角色。它解决了如何把 JSP 页面上的数据根据实际开发项目中具体的业务逻辑来进行处理的问题。
技术要点
本节代码使用登录功能作为例子,详细解析 LoginAction 类。
= 如何使用 Execute 方法处理业务逻辑。
= 如何处理 Form 表单数据。
= HTTP 的 session 对象在 Action 主要使用方式。
= ActionMapping 对象配置文件中处理流程。
演示代码
<!------------------------------------------- 文件名: LoginAction .java-------------------------------->
public class LoginAction {
// Action 类公用私有变量,用来做页面导航标志
private static String FORWARD = null;
// 用户名属性
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() throws Exception {
username = getUsername(); // 属性值即 JSP 页面上输入的值
password = getPassword(); // 属性值即 JSP 页面上输入的值
try {
// 判断输入值是否是空对象或没有输入
if (username != null && !username.equals("") && password != null
&& !password.equals("")) {
ActionContext.getContext().getSession().put("user", getUsername());
// 根据标志内容导航到操作成功页面
FORWARD = "success";
} else {
// 根据标志内容导航到操作失败页面
FORWARD = "input";
}
} catch (Exception ex) {
ex.printStackTrace();
}
return FORWARD;
}
}
Action 类映射配置。
<!------------------------------------------- 文件名: struts.xml-------------------------------->
<action name="Login" class="com.example.struts.action.LoginAction">
<result name="input">/jsp/login.jsp</result>
<result name="success">/jsp/success.jsp</result>
</action>
代码解释
( 1 ) Struts2 中每一具体的 Action 类其实都是将 Struts1 中的 FormBean 类和 Action 类代码都放在一起,所以看起来就是一个简单的 JavaBean 类(按照现在流行说法是 POJO , Plains Ordinary Java Object 。无格式普通 Java 对象)。比如代码中用户名和密码两个变量都是字符串类型变量,使用 get , set 方法可以从 JSP 页面上得到输入的值内容。
( 2 ) Action 类中最主要的方法为 execute 方法, Struts1 中它一共有四个参数。返回一个 ActionForward 对象。而在 Struts2 中为了不侵入 Servlet 的类和方法,同时为了更好的解耦,符合现在 Web 项目松耦合开发理念,所以这四个参数都已经不用了。 Struts2 中返回的也是一个普通字符串,此字符串内容就是之前所述的导航页面的唯一标识。
( 2 )代码中用户名和密码两个变量通过 get 方法得到 JSP 页面上输入的值内容,然后判断这两个变量是否为空对象或者字符串内容为“”,即没有输入任何数据。如果为空或者没有输入任何数据则 mapForward 赋值为“ input ”,这样就导航到错误页面。反之,则 mapForward 赋值为“ success ”,导航到成功页面。
细心的读者可以发现 LoginAction 类中给它赋的 “ success ”、“ input ”两个值在 struts.xml 中 <action> 元素的 < result > 属性中都有定义。这就是之前所说的唯一标识指向 URL 中的 JSP 页面。
注意:之所以操作失败后 mapForward 赋值为“ input ”,而不是“ error ”或“ failure ”是为了 Struts2 校验使用考虑,具体原因见下节。
( 3 )用户名变量的值在实际项目中有可能会被用到,因此把它放入 session 属性里。注意:该 session 和 hibernate 中的 session 是两回事情,它是 HTTP 请求中的 session 对象, getAttribute 方法和 setAttribute 方法是开发中经常用到的。它的应用范围是整个当前 HTTP 请求中,所以当用 setAttribute 方法将对像值放入后,可以在任何业务逻辑需要使用对象值时候用 getAttribute 方法取出。至于 hibernate 中的 session 我们在之后章节中另外具体讲述。在代码里 Struts2 把 session 也封装起来。通过 Struts2 包里自带的 ActionContext 类来调用,首先先得到当前 HTTP 应用中内容,然后通过 getSession 方法得到 Sessions 对象,但 Struts2 是用一个 map 对象来标识,也就是说 getSession 方法得到是一个 Sessions 对象封装处理后的结果。所以代码中可以使用 put 等 map 的方法,而不是 setAttribute 方法来将用户名变量值放入 session 。
( 4 ) Action 类的每一个实例都是和 struts.xml 中每一个 <action> 元素对应。这些 struts.xml 中的配置信息其实都是在系统开始运行时候读入内存,以供系统运行时候使用。比如此代码中通过 name 中的“ Login ”提交请求信息, control 层将信息传递给 LoginAction 处理, LoginAction 实例的 execute 方法被调用,将所对应的 Form 数据传入 LoginAction, 然后进行相应业务逻辑处理。
更多信息请查看 java进阶网 http://www.javady.com
发表评论
-
Struts之拦截器
2012-05-16 17:16 1537今天看了看拦截器,不由得想对拦截器做个描述,在我们进 ... -
struts第一篇:struts诞生记
2012-04-23 22:29 1181Struts是一个开源框架,学Struts有一段时间 ... -
Struts2教程 - 5.4.4 debug标签使用介绍
2012-04-16 21:23 1058技术要点 本节代码具体介绍 debug 数据 标签的使 ... -
Struts2教程 - 5.4.3 date标签使用介绍
2012-04-16 21:23 1178技术要点 本节代码具体介绍 date 数据 标签的使用 ... -
Struts2教程 - 5.2 OGNL表达式语言介绍
2012-04-14 21:15 2172在进行 Struts2 的标签库介绍之前,有必要着重对 ... -
Struts2教程 - 4.1 拦截器在Struts2中的缺省应用
2012-04-09 10:11 1170通过前几章介绍,读者应该明白在 Web 项目中,客户先在视图界 ... -
Struts2教程 - 使用Action类控制导航业务数据
2012-04-09 10:10 1300Struts2 中 Action 充当着一个关键的角色。它解决 ... -
Struts2教程 - 3.4 使用ActionSupport进行校验
2012-04-08 09:04 1581如果 From 数据操作有误,比如输入不是我们需要的数据, ... -
Struts2教程 - 5.4.8--10 url标签使用介绍
2012-04-16 21:24 10905.4.8 url 标签使用介绍 ... -
Struts2教程 - 5.4.6-7push、set标签使用介绍
2012-04-16 21:23 1248技术要点 本节代码具体介绍 push ... -
Struts2教程 - 5.4.5 include标签使用介绍
2012-04-16 21:23 1244技术要点 本节代码具体介绍 inclu ... -
Struts2教程 - 5.4.4 debug标签使用介绍
2012-04-17 23:46 1046技术要点 本节代码具体介绍 debug ... -
Struts2教程 - 5.4.3 date标签使用介绍
2012-04-17 23:46 1161技术要点 本节代码具体介绍 date ... -
Struts2教程 - 5.4.2 bean标签使用介绍
2012-04-15 22:57 872技术要点 本节代码具体介绍 bean ... -
Struts2教程 - 5.4.1 action标签使用介绍
2012-04-15 22:57 1166技术要点 本节代码具体介绍 actio ... -
Struts2教程 - 5.3.7 subset标签使用介绍
2012-04-15 22:57 12325.3.7 subset 标签使用介绍 ... -
Struts2教程 - 5.3.5-6 merge、sort标签使用介绍
2012-04-15 22:57 10835.3.5 merge 标签使用介绍 ... -
Struts2教程 - 5.3.4 iterator标签使用介绍
2012-04-14 21:14 1113技术要点 本节代码具体介绍 itera ... -
Struts2教程 - 5.3.3 if、else、elseif标签使用介绍
2012-04-14 21:14 1338技术要点 本节代码具体介绍 if 、 ... -
Struts2教程 - 5.3.2 generator标签使用介绍
2012-04-14 21:14 970技术要点 本节代码具体介绍 gener ...
相关推荐
在Java Web开发中,Struts2、Spring和Hibernate是三个非常重要的框架,它们分别负责MVC(Model-View-Controller)模式中的控制层、业务逻辑层和服务数据访问层。这三者结合可以构建出高效、可维护的Web应用。下面...
- **3.3 使用Action类控制导航业务数据** - **知识点**: 介绍了如何在Action类中处理业务逻辑。 - **核心内容**: - Action类是处理业务逻辑的关键组件,负责与数据库交互、数据处理等任务。 - 通过定义不同的...
3.3 使用Action类控制导航业务数据 40 3.4 使用ActionSupport进行校验 42 第4章 另一Struts2核心技术:拦截器 47 4.1 拦截器在Struts2中的缺省应用 47 4.2 拦截器原理实现 50 4.3 在Struts2中配置自定义的拦截器 53 ...
- **3.3 使用Action类控制导航业务数据** - **编写Action类**:创建一个实现`Action`接口的类,重写`execute()`方法来处理具体的业务逻辑。 - **返回结果**:通过调用`Action`接口中的`SUCCESS`、`ERROR`等常量来...
OGNL(Object-Graph Navigation Language,对象图导航语言)是Struts2使用的强大表达式语言,可以方便地访问JavaBean的属性。例如: - `#request.username`:访问请求中的`username`属性。 - `#session.user`:访问...
- **3.3 使用Action类控制导航业务数据** - **知识点**: Action类是Struts2中处理用户请求的核心类,包含了具体的业务逻辑处理。 - **重要性**: 设计良好的Action类可以有效分离业务逻辑和表示层。 - **3.4 使用...
- `ActionForward`类用于表示控制器返回的结果,可以指定重定向或转发到的资源。 - **2.4.3 ActionMapping类** - `ActionMapping`类用于定义一个请求到`Action`实例的映射关系,包括路径、名称等信息。 **2.5 ...
本书还提供了使用Struts开发实际Web应用的具体步骤和示例,包括如何搭建开发环境、编写Action类、配置文件等内容。 **2.3. 为什么需要框架** 这部分内容解释了在没有框架支持的情况下进行Web开发时常见的问题,...
- **3.3 ActionMapping类**:用于映射请求URL到具体的Action,同时也存储了Action执行后的转发规则。 - **3.4 Action类**:实现具体业务逻辑的接口,负责处理请求,更新模型,并返回一个表示下一个视图的Action...
8. **创建视图**:通常使用JSP页面展示数据,通过Struts2标签库与Action进行交互。 在"分页功能的实现"部分,我们需要理解如何在SSH框架中添加分页查询。这通常涉及到: 1. **添加分页参数**:在Action类中添加...
在教程中,学员会了解到如何定义Action类,配置struts.xml文件,以及使用Tiles进行视图管理。通过Struts,开发者可以构建出结构清晰、易于扩展的Web应用。 Oracle数据库是企业级应用中常用的数据库系统,本教程中...
20.7.2 定义对宠物商品信息进行数据库操作的业务逻辑类ThingsBuy 370 20.8 显示宠物新闻模块的实现 373 20.8.1 对应宠物新闻的实体类News 374 20.8.2 定义对宠物新闻进行数据库操作的业务逻辑类NewsBuy 374 20.8.3 ...
5. **Struts框架**:Struts框架是MVC设计模式的具体实现,通过ActionForm对象接收用户请求,Action类处理业务逻辑,然后转发到指定的JSP页面展示结果。它的配置文件(struts-config.xml)定义了URL到Action的映射,...
Struts通过定义一系列的Action类来处理请求,并利用配置文件(如struts.xml)来管理这些Action的映射关系。 #### 2. Spring框架 Spring框架是一个轻量级的开源Java平台,提供了广泛的基础设施支持,包括但不限于...
- **编写Action类**:实现Struts Action。 - **配置Struts环境**:定义Action映射。 - **编写Hibernate实体类**:定义数据模型。 - **配置Hibernate环境**:定义映射关系。 - **编写Spring Bean**:定义Spring管理的...