Struts2文档
需积分: 0 82 浏览量
更新于2007-12-20
收藏 1.23MB DOC 举报
### Struts2框架详解
#### 一、Struts2简介
**Apache Struts2** 是一个基于MVC(Model-View-Controller)架构模式的开源Java Web应用框架,旨在简化Web应用的开发过程。它继承了原Struts框架的一些优点,并结合了WebWork框架的特点,提供了更为强大的功能和更加灵活的配置选项。Struts2的设计理念是让开发者能够快速地构建、部署和维护企业级应用。
Struts2的核心组件包括Action、Interceptor、Result以及配置文件等,它们共同协作以实现Web应用的功能需求。
#### 二、Struts2体系结构
Struts2采用了模块化的设计方式,其核心组件主要包括:
1. **DispatcherFilter**:作为前端控制器,负责接收HTTP请求并将其分发到相应的Action处理。
2. **Action**:封装了业务逻辑处理,执行具体的业务操作。
3. **Interceptor**:类似于AOP(面向切面编程),可以在Action执行前后进行拦截操作,如数据验证、事务管理等。
4. **Result**:定义了Action执行完成后如何响应客户端的请求,比如返回HTML页面、JSON数据等。
5. **Configuration**:配置文件(struts.xml)用于配置各种组件及其行为,如Action映射、拦截器配置等。
#### 三、Struts2的工作流程
1. **Web浏览器发起请求**:用户通过浏览器发送HTTP请求,请求路径中包含特定的Action标识(例如`/mypage.action`)。
2. **DispatcherFilter接收到请求**:Struts2的前端控制器`DispatcherFilter`接收到请求后,根据配置信息找到对应的Action。
3. **Interceptor链执行**:在Action执行之前,会先经过一系列的Interceptor进行预处理,比如设置线程局部变量、验证数据等。
4. **Action执行**:当所有Interceptor处理完毕后,Action的`execute()`方法被调用,执行业务逻辑。
5. **返回Result**:Action执行完毕后返回一个Result对象,该对象决定了如何向客户端响应,比如返回HTML页面、JSON数据等。
6. **Response响应客户端**:根据Result的配置,生成响应内容并发送给客户端。
#### 四、Struts2标签库
Struts2提供了一套丰富的标签库,可以帮助开发者减少代码量,提高Web页面的可维护性和可读性。主要标签包括:
1. **s:textfield**:用于生成文本输入框。
2. **s:password**:用于生成密码输入框。
3. **s:textarea**:用于生成多行文本输入框。
4. **s:submit**:用于生成提交按钮。
5. **s:checkbox**:用于生成复选框。
6. **s:select**:用于生成下拉列表。
7. **s:radio**:用于生成单选按钮。
#### 五、示例代码对比
##### 无框架示例
```html
<%User user = ActionContext.getContext()%>
<form action="Profile_update.action" method="post">
<table>
<tr>
<td align="right"><label>Firstname:</label></td>
<td><input type="text" name="user.firstname" value="<%=user.getFirstname()%>"/></td>
</tr>
<tr>
<td>
<input type="radio" name="user.gender" value="0" id="user.gender0" <%if(user.getGender()==0){%>checked="checked"%> <%}%>/>
<label for="user.gender0">Female</label>
</td>
</tr>
</table>
</form>
```
##### 使用Struts2标签的示例
```html
<s:form action="Profile_update" validate="true">
<s:textfield label="Username" name="username"/>
<s:password label="Password" name="password"/>
<s:password label="(Repeat)Password" name="password2"/>
<s:textfield label="FullName" name="fullName"/>
<s:textfield label="FromAddress" name="fromAddress"/>
<s:textfield label="ReplyToAddress" name="replyToAddress"/>
<s:submit value="Save" name="Save"/>
<s:submit action="Register_cancel" value="Cancel" name="Cancel" onclick="form.onsubmit=null"/>
</s:form>
```
可以看出,使用Struts2标签不仅减少了代码量,还提高了代码的可读性和可维护性。
#### 六、Struts2配置文件
Struts2的核心配置文件是`struts.xml`,它定义了应用程序的行为和结构,包括Action的映射、拦截器的配置等。
```xml
<struts>
<package name="default" extends="struts-default">
<action name="Logon" class="mailreader2.Logon">
<result name="success">/login_success.jsp</result>
<result name="input">/login.jsp</result>
</action>
</package>
</struts>
```
以上示例展示了如何配置一个简单的登录Action,其中`mailreader2.Logon`是Action类的全限定名,`/login_success.jsp`和`/login.jsp`分别是成功和失败时跳转的页面。
### 总结
Struts2是一个强大而灵活的Java Web应用框架,它通过简洁的API和丰富的标签库极大地提高了开发效率,同时也降低了维护成本。无论是初学者还是有经验的开发者,都能从中受益。通过深入理解其体系结构和工作原理,可以更好地利用Struts2来构建高质量的Web应用程序。