### Struts2教程知识点概述
#### 一、Struts2框架简介
- **框架类别**:
- **MVC框架**:Struts2属于MVC(Model-View-Controller)框架,这类框架主要包括Struts、WebWork、SpringMVC等。
- **事件驱动框架**:如JSF(JavaServer Faces)、Tapestry等。
- **Struts2的历史背景**:
- **Struts1的兴起**:2001年5月发布的Struts1因其优秀的开源特性迅速获得了开发者们的青睐,成为了当时最流行的MVC框架之一。
- **WebWork的发展**:虽然WebWork在技术架构方面优于Struts1,但由于发布时间晚于Struts1(2002年3月发布),因此知名度不如后者。
- **Struts2的诞生**:2005年12月,Struts和WebWork两个项目合并,形成新的框架Struts2。这个新框架继承了Struts1的部分特性(约占30%)以及WebWork的大部分特性(约占70%)。
- **版本演进**:最新的Struts2版本为2.1.x GA,标志着该框架不断成熟和完善的过程。
#### 二、Struts1与Struts2的主要区别
- **配置组件**:
- **Struts1**:使用ActionServlet作为入口点,并通过struts-config.xml进行配置。
- **Struts2**:采用StrutsPrepareAndExecuteFilter作为过滤器,并通过struts.xml文件进行配置。
- **Action类的设计**:
- **Struts1**:Action类是单例模式且必须保证线程安全,这限制了Action的功能。
- **Struts2**:Action类被设计为可创建多个实例的Bean,这使得Action可以更加灵活地处理不同的请求。
- **数据绑定**:
- **Struts1**:依赖于Action和FormBean之间的紧密耦合,导致维护难度增加。
- **Struts2**:Action作为受管理的Bean与框架解耦,简化了数据绑定的过程。
- **表单验证与数据转换**:
- **Struts1**:在FormBean中手动处理日期类型的转换,过程繁琐。
- **Struts2**:通过内置的转换器机制轻松实现数据类型转换。
#### 三、Struts2的开发流程示例
- **添加Struts2支持**:
- 在myEclipse中添加Struts2支持,主要是在web.xml中配置过滤器`StrutsPrepareAndExecuteFilter`。这与Struts1配置ActionServlet有所不同。
- 配置示例:
```xml
<filter>
<filter-name>struts2</filter-name>
<filter-class>
org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
```
- 其中`/*`表示过滤所有请求,确保所有HTTP请求都能经过Struts2的处理。
- **创建HelloWorld示例**:
- 在项目中创建HELLO.jsp页面,用于展示简单的“Hello World”信息。
- JSP示例代码:
```jsp
<%@ page language="java" contentType="text/html;charset=utf-8" %>
<%@ taglib prefix="s" uri="/struts-tags" %>
<html>
<head>
<title>StrutsDemoHelloWorld</title>
</head>
<body>
<s:text message="helloWorld"/>
</body>
</html>
```
以上内容涵盖了Struts2框架的基础概念、Struts1与Struts2的主要差异以及如何搭建一个简单的Struts2项目。这些知识点对于理解Struts2的工作原理及其应用场景至关重要,对于初学者来说是非常宝贵的资源。