第二篇: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开发领域的技术实力。