Struts 1.3.8 实战开发教程

本文还有配套的精品资源,点击获取 menu-r.4af5f7ec.gif

简介:Struts 1.3.8 是一款 Java Web 应用程序框架,本教程将深入讲解其关键概念和技术。涵盖 MVC 模式、配置文件、Action 类、表单 Bean、ActionForward、Tiles 插件、国际化、异常处理、JSP 标签库、ActionServlet、工具支持和源码阅读等要点。通过本教程,开发者将掌握 Struts 1.3.8 的实际应用,提升 Web 应用开发技能。

1. MVC 模式实战

1.1 MVC 模式概述

MVC(Model-View-Controller)模式是一种设计模式,它将应用程序分为三个主要组件:模型、视图和控制器。模型负责应用程序的数据和业务逻辑,视图负责显示数据,控制器负责处理用户交互并协调模型和视图之间的通信。

2. 配置文件实战

2.1 struts-config.xml 文件结构

struts-config.xml 文件是 Struts 配置的核心文件,它定义了 Struts 框架的配置信息,包括 Action 映射、Form Bean 映射和 Tiles 视图映射。

struts-config.xml 文件的结构如下:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts-config PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 1.3//EN"
    "http://struts.apache.org/dtds/struts-config_1_3.dtd">

<struts-config>
  <form-beans>
    <!-- Form Bean 映射 -->
  </form-beans>

  <action-mappings>
    <!-- Action 映射 -->
  </action-mappings>

  <tiles-definitions>
    <!-- Tiles 视图映射 -->
  </tiles-definitions>
</struts-config>

2.2 配置 Action 映射

Action 映射定义了请求路径和 Action 类之间的对应关系。当用户提交一个请求时,Struts 框架会根据请求路径查找对应的 Action 映射,然后实例化并执行相应的 Action 类。

<action-mappings>
  <action path="/login" type="com.example.LoginAction" name="loginForm" scope="request">
    <forward name="success" path="/success.jsp" />
    <forward name="failure" path="/failure.jsp" />
  </action>
</action-mappings>

在这个示例中,当用户访问 "/login" 路径时,Struts 框架会实例化 com.example.LoginAction 类,并将 Action 实例的名称设置为 "loginForm",作用域设置为 "request"。如果 Action 执行成功,则会转发到 "/success.jsp" 页面;如果 Action 执行失败,则会转发到 "/failure.jsp" 页面。

2.3 配置 Form Bean 映射

Form Bean 映射定义了请求参数和 Form Bean 类之间的对应关系。当用户提交一个表单时,Struts 框架会根据请求参数查找对应的 Form Bean 映射,然后实例化并填充相应的 Form Bean 类。

<form-beans>
  <form-bean name="loginForm" type="com.example.LoginForm">
    <form-property name="username" type="java.lang.String" />
    <form-property name="password" type="java.lang.String" />
  </form-bean>
</form-beans>

在这个示例中,当用户提交一个表单时,Struts 框架会实例化 com.example.LoginForm 类,并将表单中的 "username" 和 "password" 参数分别填充到 Form Bean 的 "username" 和 "password" 属性中。

2.4 配置 Tiles 视图映射

Tiles 视图映射定义了视图文件和布局文件之间的对应关系。当 Action 执行完成后,Struts 框架会根据 Action 的结果查找对应的 Tiles 视图映射,然后渲染相应的视图文件。

<tiles-definitions>
  <definition name="main" template="/layout.jsp">
    <put name="title" value="Struts 1.3.8 学习笔记" />
    <put name="content" value="/content.jsp" />
  </definition>
</tiles-definitions>

在这个示例中,当 Action 执行完成后,Struts 框架会渲染 "/layout.jsp" 布局文件,并将 "title" 属性设置为 "Struts 1.3.8 学习笔记",将 "content" 属性设置为 "/content.jsp" 视图文件。

3. Action 类实战

3.1 Action 类概述

Action 类是 Struts 框架中的核心组件,负责处理用户请求并生成响应。它是一个 JavaBean,继承自 org.apache.struts.action.Action 类。Action 类包含以下几个关键属性:

  • mapping: ActionMapping 对象,描述了 Action 的配置信息,例如 Action 的路径、方法和参数。
  • request: HttpServletRequest 对象,包含了客户端请求的信息。
  • response: HttpServletResponse 对象,用于向客户端发送响应。
  • application: ServletContext 对象,包含了应用程序的全局信息。
  • session: HttpSession 对象,包含了客户端会话的信息。

3.2 Action 类生命周期

Action 类有一个生命周期,它从用户请求到达时开始,到响应发送给客户端时结束。生命周期包括以下几个阶段:

  1. 初始化: Action 类被实例化并设置其属性。
  2. 验证: Action 类验证用户输入,例如检查必填字段是否填写。
  3. 执行: Action 类执行业务逻辑,例如处理用户请求或查询数据库。
  4. 结束: Action 类生成响应并将其发送给客户端。

3.3 Action 方法的编写

Action 类中的方法用于处理用户请求。每个 Action 类可以有多个方法,每个方法对应一个特定的请求路径。方法的签名如下:

public ActionForward execute(ActionMapping mapping, HttpServletRequest request, HttpServletResponse response) throws Exception;

execute() 方法接收三个参数:

  • mapping: ActionMapping 对象,描述了 Action 的配置信息。
  • request: HttpServletRequest 对象,包含了客户端请求的信息。
  • response: HttpServletResponse 对象,用于向客户端发送响应。

execute() 方法返回一个 ActionForward 对象,它指定了下一个要执行的动作。 ActionForward 对象可以是:

  • 一个视图: 一个 JSP 页面或其他类型的视图,用于向客户端呈现响应。
  • 另一个 Action: 另一个 Action 类,用于处理进一步的请求。
  • 一个错误: 一个错误页面或其他类型的错误响应。

以下是一个示例 Action 类:

public class LoginAction extends Action {

    @Override
    public ActionForward execute(ActionMapping mapping, HttpServletRequest request, HttpServletResponse response) throws Exception {
        String username = request.getParameter("username");
        String password = request.getParameter("password");

        if (username.equals("admin") && password.equals("admin")) {
            return mapping.findForward("success");
        } else {
            return mapping.findForward("failure");
        }
    }
}

这个 Action 类处理一个登录请求。它从请求中获取用户名和密码,然后检查它们是否与预期的值匹配。如果匹配,则返回一个 "success" 视图,否则返回一个 "failure" 视图。

代码逻辑分析:

  1. request.getParameter("username") :从请求中获取 "username" 参数的值。
  2. request.getParameter("password") :从请求中获取 "password" 参数的值。
  3. username.equals("admin") && password.equals("admin") :检查用户名和密码是否与预期的值匹配。
  4. mapping.findForward("success") :如果匹配,则返回一个 "success" 视图。
  5. mapping.findForward("failure") :如果匹配,则返回一个 "failure" 视图。

4. Form Bean 实战

4.1 Form Bean 概述

Form Bean 是 Struts 框架中用于处理表单数据的 Java Bean。它是一个普通的 Java 类,用于封装表单中的数据,并提供对这些数据的访问和验证。Form Bean 必须实现 org.apache.struts.action.ActionForm 接口。

4.2 Form Bean 的属性和方法

Form Bean 的属性和方法用于访问和修改表单中的数据。属性通常与表单中的输入字段相对应,而方法用于验证和处理数据。

4.2.1 属性

Form Bean 的属性通常是私有字段,并通过 getter 和 setter 方法访问。getter 方法用于获取属性的值,而 setter 方法用于设置属性的值。例如:

private String username;

public String getUsername() {
    return username;
}

public void setUsername(String username) {
    this.username = username;
}

4.2.2 方法

Form Bean 可以定义自定义方法来验证和处理数据。这些方法通常以 validate() process() 命名。

4.2.2.1 validate() 方法

validate() 方法用于验证表单中的数据。它返回一个 ActionErrors 对象,其中包含任何验证错误。如果 validate() 方法返回非空 ActionErrors 对象,则 Struts 框架将不会继续处理该请求。

4.2.2.2 process() 方法

process() 方法用于处理表单中的数据。它通常执行诸如保存数据到数据库或发送电子邮件之类的操作。

4.3 Form Bean 的验证

Struts 框架提供了多种验证 Form Bean 的方法,包括:

4.3.1 内置验证器

Struts 框架提供了内置的验证器,用于验证常见的数据类型,例如字符串、数字和日期。这些验证器可以通过在 Form Bean 的属性上使用 @Validator 注解来使用。

4.3.2 自定义验证器

除了内置验证器之外,还可以创建自定义验证器来验证更复杂的数据。自定义验证器必须实现 org.apache.struts.validator.Validator 接口。

4.3.3 Validation Framework

Struts 框架还与 Validation Framework 集成,这是一个用于验证 Java 对象的第三方库。Validation Framework 提供了更高级的验证功能,例如嵌套验证和组验证。

4.4 Form Bean 的使用

要使用 Form Bean,需要在 struts-config.xml 文件中配置它。配置包括指定 Form Bean 的类名和与之关联的 Action。例如:

<form-beans>
    <form-bean name="userForm" type="com.example.struts.UserForm" />
</form-beans>

在 Action 类中,可以使用 ActionForm 对象来访问和修改表单数据。例如:

public class UserAction extends Action {

    public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) {
        UserForm userForm = (UserForm) form;
        String username = userForm.getUsername();
        // ...
    }
}

5. ActionForward 实战

5.1 ActionForward 概述

ActionForward 是 Struts 中用于控制请求转发的一个重要类。它封装了转发目标的路径和转发类型等信息,用于将请求从一个 Action 转发到另一个 Action 或视图。

5.2 ActionForward 类型

ActionForward 有两种类型:

  • RedirectActionForward: 用于重定向请求,会将响应发送到客户端,并包含一个新的 URL,浏览器会根据新的 URL 重新发送请求。
  • ForwardActionForward: 用于转发请求,不会将响应发送到客户端,而是直接将请求转发到另一个 Action 或视图,从而避免了浏览器重新发送请求。

5.3 ActionForward 的使用

在 Action 类中,可以使用以下方法创建 ActionForward 对象:

// 创建一个重定向转发对象
ActionForward redirect = new RedirectActionForward("/success.jsp");

// 创建一个转发转发对象
ActionForward forward = new ForwardActionForward("/success.jsp");

在 ActionForward 对象创建后,可以使用以下方法将请求转发到目标:

// 重定向到目标 URL
return redirect;

// 转发到目标视图
return forward;

代码逻辑分析:

  • RedirectActionForward ForwardActionForward 类的构造函数接收一个字符串参数,该参数指定转发目标的路径。
  • return redirect 语句将请求重定向到指定的 URL,浏览器会重新发送请求。
  • return forward 语句将请求转发到指定的视图,不会重新发送请求。

参数说明:

  • path :转发目标的路径,可以是绝对路径或相对路径。

代码示例:

public class LoginAction extends Action {

    public ActionForward execute() {
        // 验证登录信息
        if (isValidLogin()) {
            // 登录成功,转发到成功视图
            return new ForwardActionForward("/success.jsp");
        } else {
            // 登录失败,重定向到登录页面
            return new RedirectActionForward("/login.jsp");
        }
    }
}

Mermaid 流程图:

sequenceDiagram
participant User
participant Server
User->Server: Send login request
Server->Server: Validate login information
Server->Server: If login successful
Server->User: Forward to success view
Server->Server: Else
Server->User: Redirect to login page

6. Tiles 插件实战

6.1 Tiles 插件概述

Tiles 插件是 Struts 框架中用于实现视图模板化的插件。它允许开发人员将页面布局和内容分离,从而提高代码的可维护性和可重用性。Tiles 插件通过定义模板文件来实现视图模板化,模板文件包含占位符,这些占位符将被实际的内容填充。

6.2 Tiles 定义文件

Tiles 定义文件是 XML 格式的文件,用于定义模板文件和占位符。它通常位于 WEB-INF/tiles-defs.xml 文件中。下面是一个示例 Tiles 定义文件:

<?xml version="1.0" encoding="UTF-8"?>
<tiles-definitions>
  <definition name="baseLayout" template="/WEB-INF/layouts/baseLayout.jsp">
    <put-attribute name="title" value="Struts 1.3.8 学习笔记" />
    <put-attribute name="header" value="/WEB-INF/tiles/header.jsp" />
    <put-attribute name="content" value="/WEB-INF/tiles/content.jsp" />
    <put-attribute name="footer" value="/WEB-INF/tiles/footer.jsp" />
  </definition>
</tiles-definitions>

在这个示例中,我们定义了一个名为 baseLayout 的模板文件,它包含了页面的基本布局。模板文件 baseLayout.jsp 中包含四个占位符: title header content footer 。这些占位符将被实际的内容填充。

6.3 Tiles 布局文件

Tiles 布局文件是 JSP 文件,用于定义页面的布局。它通常位于 WEB-INF/layouts 目录下。下面是一个示例 Tiles 布局文件:

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
  <title><tiles:insertAttribute name="title" /></title>
</head>
<body>
  <div id="header">
    <tiles:insertAttribute name="header" />
  </div>
  <div id="content">
    <tiles:insertAttribute name="content" />
  </div>
  <div id="footer">
    <tiles:insertAttribute name="footer" />
  </div>
</body>
</html>

在这个示例中,我们定义了一个名为 baseLayout.jsp 的布局文件,它包含了页面的基本布局。布局文件中包含了四个占位符: title header content footer 。这些占位符将被实际的内容填充。

6.4 Tiles 模板文件

Tiles 模板文件是 JSP 文件,用于定义页面的内容。它通常位于 WEB-INF/tiles 目录下。下面是一个示例 Tiles 模板文件:

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<h1>Struts 1.3.8 学习笔记</h1>
<p>本笔记将详细介绍 Struts 1.3.8 框架的使用,包括 MVC 模式、配置文件、Action 类、Form Bean、ActionForward 和 Tiles 插件等内容。</p>

在这个示例中,我们定义了一个名为 content.jsp 的模板文件,它包含了页面的内容。模板文件中包含了 HTML 代码,这些代码将被填充到布局文件的占位符中。

7. 国际化实战

7.1 国际化概述

国际化是指软件能够适应不同国家或地区的用户,提供针对特定区域的语言、文化和习俗的定制化体验。它涉及到翻译文本、适应日期和时间格式、处理货币和数字格式等方面。

7.2 Struts 中的国际化实现

Struts 通过 struts-default.properties 文件和 struts.xml 配置文件来实现国际化。 struts-default.properties 文件包含了默认的国际化设置,而 struts.xml 配置文件可以覆盖这些默认设置。

7.3 国际化资源文件的创建和使用

创建国际化资源文件

国际化资源文件是包含翻译文本的文件,通常以 .properties 扩展名保存。例如,一个名为 messages.properties 的文件可以包含以下内容:

welcome.message=欢迎
error.message=错误

使用国际化资源文件

在 Struts 中,可以使用 getText() 方法从国际化资源文件中获取翻译文本。例如,在 Action 类中可以使用以下代码获取欢迎消息:

String welcomeMessage = getText("welcome.message");

覆盖默认国际化设置

struts.xml 配置文件中,可以使用 <message-resources> 元素来覆盖 struts-default.properties 文件中的默认国际化设置。例如,以下代码将覆盖 welcome.message 的默认翻译:

<message-resources key="welcome.message" value="你好" />

使用参数化消息

国际化资源文件还可以支持参数化消息,允许在翻译文本中插入动态值。例如,以下代码将创建一条包含用户名的欢迎消息:

welcome.message=欢迎,{0}

在 Action 类中,可以使用以下代码获取参数化欢迎消息:

String welcomeMessage = getText("welcome.message", username);

日期和时间格式化

Struts 提供了 DateTag TimeTag 标签来格式化日期和时间。这些标签使用 locale 属性来指定要使用的区域设置。例如,以下代码将以中文格式化日期:

<s:date name="date" format="yyyy年MM月dd日" locale="zh_CN" />

货币和数字格式化

Struts 提供了 NumberFormatTag 标签来格式化货币和数字。此标签使用 locale 属性来指定要使用的区域设置。例如,以下代码将以美元格式化数字:

<s:number name="number" format="#,###.##" locale="en_US" />

本文还有配套的精品资源,点击获取 menu-r.4af5f7ec.gif

简介:Struts 1.3.8 是一款 Java Web 应用程序框架,本教程将深入讲解其关键概念和技术。涵盖 MVC 模式、配置文件、Action 类、表单 Bean、ActionForward、Tiles 插件、国际化、异常处理、JSP 标签库、ActionServlet、工具支持和源码阅读等要点。通过本教程,开发者将掌握 Struts 1.3.8 的实际应用,提升 Web 应用开发技能。

本文还有配套的精品资源,点击获取 menu-r.4af5f7ec.gif

  • 28
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
智慧校园建设方案旨在通过融合先进技术,如物联网、大数据、人工智能等,实现校园的智能化管理与服务。政策的推动和技术的成熟为智慧校园的发展提供了基础。该方案强调了数据的重要性,提出通过数据的整合、开放和共享,构建产学研资用联动的服务体系,以促进校园的精细化治理。 智慧校园的核心建设任务包括数据标准体系和应用标准体系的建设,以及信息化安全与等级保护的实施。方案提出了一站式服务大厅和移动校园的概念,通过整合校内外资源,实现资源共享平台和产教融合就业平台的建设。此外,校园大脑的构建是实现智慧校园的关键,它涉及到数据中心化、数据资产化和数据业务化,以数据驱动业务自动化和智能化。 技术应用方面,方案提出了物联网平台、5G网络、人工智能平台等新技术的融合应用,以打造多场景融合的智慧校园大脑。这包括智慧教室、智慧实验室、智慧图书馆、智慧党建等多领域的智能化应用,旨在提升教学、科研、管理和服务的效率和质量。 在实施层面,智慧校园建设需要统筹规划和分步实施,确保项目的可行性和有效性。方案提出了主题梳理、场景梳理和数据梳理的方法,以及现有技术支持和项目分级的考虑,以指导智慧校园的建设。 最后,智慧校园建设的成功依赖于开放、协同和融合的组织建设。通过战略咨询、分步实施、生态建设和短板补充,可以构建符合学校特色的生态链,实现智慧校园的长远发展。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值