Struts入门实践

preview
需积分: 0 2 下载量 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 的基本用法是非常重要的第一步。