第二篇:Struts - 探索Apache的Java MVC框架

364 阅读3分钟

第二篇:Struts - 探索Apache的Java MVC框架

1. 引言

1.1 Struts简介

Apache Struts是一个开源的Java MVC框架,用于构建Web应用程序。Struts通过提供一组标签库、配置文件和Java类来实现基于MVC模式的应用程序。它具有良好的可扩展性,可以与其他Java技术(如Hibernate、Spring等)轻松集成。

1.2 Struts与Spring MVC的比较

Struts和Spring MVC都是基于Java的MVC框架,但它们之间存在一些关键区别。Spring MVC是Spring框架的一部分,与Spring其他模块(如IoC容器、AOP等)紧密集成。而Struts是一个独立的框架,可以单独使用或与其他Java技术集成。在某些情况下,Struts的学习曲线可能更陡峭,而Spring MVC提供了更简洁、直观的开发体验。

2. Struts核心组件

2.1 Action

Action是Struts框架中的核心组件,用于处理用户请求并返回适当的结果。每个Action类都需要继承com.opensymphony.xwork2.ActionSupport类,并实现execute方法。

2.2 Interceptor

Interceptor是Struts中的一种拦截器,可以在Action执行之前或之后执行一些操作。例如,可以使用Interceptor实现日志记录、权限检查等功能。

2.3 Result

Result是Action执行后的输出结果。Struts支持多种Result类型,如JSP视图、重定向、JSON等。

2.4 ActionContext

ActionContext是一个与当前请求相关的上下文对象,用于存储请求参数、会话数据等。

2.5 ValueStack

ValueStack是一个存储Action属性值的特殊数据结构。在视图中,可以使用ValueStack来访问Action中的属性和方法。

3.开发一个简单的Struts应用

3.1 配置Struts

要创建一个基本的Struts应用,首先需要在项目中添加Struts相关的依赖。这里以Maven为例:

<dependencies>
    <dependency>
        <groupId>org.apache.struts</groupId>
        <artifactId>struts2-core</artifactId>
        <version>2.5.26</version>
    </dependency>
</dependencies>

接下来,在web.xml中配置Struts过滤器:

<filter>
    <filter-name>struts2</filter-name>
    <filter-class>org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter>
<filter-mapping>
    <filter-name>struts2</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>

3.2 创建Action类

创建一个名为HelloWorldAction的Action类,并实现execute方法:

public class HelloWorldAction extends ActionSupport {
    private String message;

    public String execute() {
        message = "Hello, Struts!";
        return SUCCESS;
    }

    public String getMessage() {
        return message;
    }

    public void setMessage(String message) {
        this.message = message;
    }
}

3.3 创建JSP视图

创建一个名为hello.jsp的视图文件,用于显示来自HelloWorldAction的消息:

<%@ taglib prefix="s" uri="/struts-tags" %>
<!DOCTYPE html>
<html>
<head>
    <title>Hello Struts</title>
</head>
<body>
    <h1><s:property value="message"/></h1>
</body>
</html>

3.4 配置Struts.xml

src/main/resources目录下创建struts.xml文件,用于配置Action和Result:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
        "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
        "http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
    <package name="default" extends="struts-default">
        <action name="hello" class="com.example.HelloWorldAction">
            <result name="success">/hello.jsp</result>
        </action>
    </package>
</struts>

3.5 运行和测试应用

部署应用到Web服务器(如Tomcat),然后访问http://localhost:8080/your-app/hello。您应该看到显示“Hello, Struts!”的页面。

4. Struts的高级功能

4.1 数据校验

Struts提供了一套内置的数据校验机制,可以在Action类中定义校验规则。例如,可以使用validate方法或XML配置文件来实现数据校验。

4.2 文件上传

要在Struts中实现文件上传功能,需要在Action类中定义特殊的属性和方法,然后在视图中使用<s:file>标签。

4.3 国际化

Struts支持国际化,可以使用ResourceBundle来管理多语言资源文件。在视图中,可以使用<s:text>标签显示国际化消息。

4.4 标签库

Struts提供了一套丰富的标签库,用于简化视图开发。例如,<s:form><s:textfield><s:select>等标签可以简化表单元素的创建。

4.5 集成Spring框架

Struts可以与Spring框架集成,实现更好的解耦和灵活性。为了实现集成,需要在项目中添加Struts和Spring的相关依赖,然后在struts.xml中配置Spring插件。

5. 总结

本文深入探讨了Apache Struts框架的特点、使用场景、优缺点以及实际应用案例。我们学习了如何使用Struts构建一个简单的Java Web应用程序,以及如何利用Struts的高级功能,如数据校验、文件上传、国际化等。希望本文能帮助您更好地理解和应用Struts框架,提高您在Java Web开发领域的技术实力。