Struts入门实践
需积分: 0 72 浏览量
更新于2007-12-12
收藏 48KB DOC 举报
### Struts入门实践知识点详解
#### 一、Struts框架简介
Struts 是一款基于 Java 的开源 MVC(Model-View-Controller)框架,主要用于构建 Web 应用程序。它简化了开发过程,使得开发者能够更加关注业务逻辑而非底层技术细节。Struts 1.x 版本是一个成熟且广泛使用的框架,而 Struts 2.x 则引入了许多新特性,并与 Spring 和 Hibernate 等其他 Java 框架更好地集成。
#### 二、Struts框架安装与环境搭建
本例中提到的版本为 Struts 1.2.9。安装步骤如下:
1. **下载Struts**: 访问官方网站或通过 Maven 仓库下载指定版本。
2. **解压Struts**: 将下载好的 Struts 包解压至所需的目录中。
3. **部署示例应用**: 将 `struts-blank.war` 文件重命名为 `strutstest.war`,并放置于 Tomcat 的 `webapps` 目录下。
4. **启动Tomcat**: 启动服务器,访问示例应用进行测试。
#### 三、Struts架构关键组件详解
##### 1. ActionForm 实现类
**ActionForm** 类作为模型层的一部分,用于封装用户的输入数据。通常包含一系列的 get 和 set 方法,以实现对数据的存取操作。
- **示例代码**:
```java
package cn.com.chengang.sms;
import org.apache.struts.action.*;
public class UserForm extends ActionForm {
private String userId = null;
private String password = null;
public String getUserId() {
return userId;
}
public void setUserId(String userId) {
this.userId = userId;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}
```
- **功能解析**:
- **属性封装**: `userId` 和 `password` 属性分别对应用户的用户名和密码。
- **数据验证**: 在 `ActionForm` 类中可以进行简单的数据验证,如检查是否为空等。
##### 2. Action 实现类
**Action** 类负责处理用户请求并决定应用程序的行为流程。每个 `Action` 类都必须实现 `execute` 方法,此方法接收 `HttpServletRequest` 和 `HttpServletResponse` 参数,并返回一个 `ActionForward` 对象,指示下一步的操作。
- **示例代码**:
```java
package cn.com.chengang.sms;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.action.ActionMessages;
public class LogonAction extends Action {
public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception {
// 从request中获取ActionForm对象
UserForm userForm = (UserForm) form;
String userId = userForm.getUserId();
String password = userForm.getPassword();
// 进行登录验证
if ("admin".equals(userId) && "123456".equals(password)) {
// 登录成功
HttpSession session = request.getSession();
session.setAttribute("userId", userId);
return mapping.findForward("success");
} else {
// 登录失败
ActionMessages messages = new ActionMessages();
ActionMessage am = new ActionMessage("LogonAction.fail.userId", userId);
messages.add("userId", am);
// 添加密码错误消息
am = new ActionMessage("LogonAction.fail.password");
messages.add("password", am);
saveErrors(request, messages);
return mapping.getInputForward();
}
}
}
```
- **功能解析**:
- **处理请求**: 通过 `execute` 方法处理来自用户的请求。
- **数据验证与业务逻辑**: 在 `execute` 方法内部进行数据验证及登录逻辑处理。
- **错误消息处理**: 使用 `ActionMessages` 来管理错误消息,并通过 `ActionMessage` 定义具体的错误提示信息。
- **转向页面**: 根据不同的处理结果,返回不同的 `ActionForward` 对象,以实现页面跳转。
##### 3. MessageResources.properties 文件
- **作用**: 配置项目的提示信息,支持国际化。
- **示例配置**:
```
LogonAction.fail.userId=username{0} is not exist!
LogonAction.fail.password=password is wrong!
```
- **使用方式**:
- 在 `Action` 类中使用 `ActionMessage` 类引用这些配置项。
- 通过 `{0}` 等占位符传递参数值。
#### 四、Struts工作流程
- **请求处理**: 用户发起 HTTP 请求至服务器。
- **分发请求**: Struts 的控制器(`ActionServlet`)拦截请求,并调用相应的 `Action` 类。
- **执行Action**: `Action` 类执行业务逻辑,返回 `ActionForward` 对象。
- **页面渲染**: 根据 `ActionForward` 指定的路径,显示相应的 JSP 页面。
#### 五、总结
通过本篇内容的学习,我们不仅了解了 Struts 框架的基本概念及其核心组件的作用,还深入了解了如何利用这些组件实现简单的用户登录验证功能。Struts 的强大之处在于它为开发者提供了一套完善的框架,极大地简化了 Web 应用程序的开发过程。对于初学者而言,掌握 Struts 的基本用法是非常重要的第一步。
richardchenzhd
- 粉丝: 0
- 资源: 8
最新资源
- Python实现HTML压缩功能
- 完结26章Java主流分布式解决方案多场景设计与实战
- ECSHOP模板堂最新2017仿E宠物模板 整合ECTouch微分销商城
- Pear Admin 是 一 款 开 箱 即 用 的 前 端 开 发 模 板,提供便捷快速的开发方式,延续 Admin 的设计规范
- 51单片机仿真摇号抽奖机源程序12864液晶显示仿真+程序
- 家庭用具检测21-YOLO(v5至v11)、COCO、Paligemma、TFRecord、VOC数据集合集.rar
- Intel-633246-eASIC-PB-006-N5X-Product-Brief .pdf
- Avue.js是基于现有的element-plus库进行的二次封装,简化一些繁琐的操作,核心理念为数据驱动视图,主要的组件库针对table表格和form表单场景,同时衍生出更多企业常用的组件,达到高复
- STM32F401,使用ST-link时候,不能识别,显示ST-LINK USB communication error
- 快速排序算法Python实现:详解分治法原理与高效排序步骤