Struts2是一个强大的MVC框架,它为Java Web应用程序提供了模型-视图-控制器(MVC)架构。本文将详细讲解如何手动创建一个简单的Struts2应用程序,包括环境搭建、配置以及基本操作。
我们需要建立一个Web工程。在这个例子中,我们将工程命名为`Struts2Demo1`。这通常涉及在IDE如Eclipse或IntelliJ IDEA中创建一个新的Dynamic Web Project,并设置相应的项目结构。
接着,我们创建一个`login.jsp`文件,作为前端界面。这个文件包含一个表单,用于用户输入用户名和密码。表单字段通常会用HTML的`<form>`标签定义,例如:
```html
<form action="login.action" method="post">
用户名:<input type="text" name="userName" />
密码:<input type="password" name="password" />
<input type="submit" value="登录" />
</form>
```
然后,我们需要从Apache Struts官方网站下载Struts2框架的库文件。在这个示例中,下载的是`struts-2.2.1.1`版本。下载完成后,将必要的JAR文件添加到项目的`WEB-INF/lib`目录下,这些文件包括`struts2-core-2.0.11.1.jar`、`xwork-2.0.4.jar`、`commons-logging-1.0.4.jar`、`freemarker-2.3.8.jar`、`ognl-2.6.11.jar`,以及对于2.1之后的版本,还需要`commons-io-1.3.2.jar`、`commons-fileupload-1.2.1.jar`和`javassist-3.7.ga.jar`。
接下来,配置`web.xml`文件,这是Web应用程序的部署描述符。在这里,我们定义了一个名为`struts2`的过滤器,该过滤器负责处理所有请求,确保Struts2框架能够介入并处理表单提交。以下是`web.xml`的部分内容:
```xml
<web-app>
...
<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>
...
<welcome-file-list>
<welcome-file>login.jsp</welcome-file>
</welcome-file-list>
...
</web-app>
```
我们需要在`src`目录下创建一个Action类,比如`LoginAction`。Action类是Struts2的核心组件,它实现了业务逻辑。在这个例子中,我们定义了两个属性`userName`和`password`,并提供了对应的getter和setter方法。此外,还有一个`execute()`方法,这是Struts2执行流程中的关键,返回的结果字符串决定了后续视图的跳转。例如:
```java
package com;
public class LoginAction {
private String userName;
private String password;
// getters and setters
public String execute() throws Exception {
// 这里可以添加业务逻辑,例如验证用户名和密码
return "success"; // 如果登录成功,返回'success',对应一个成功的视图
}
}
```
当用户在`login.jsp`页面填写完信息并点击提交时,Struts2框架会接收到请求,通过`struts2`过滤器找到对应的Action类(在这个例子中是`LoginAction`),调用其`execute()`方法。根据`execute()`返回的结果,Struts2会决定展示哪个结果页面。在这个简单示例中,如果`execute()`返回`"success"`,那么通常会跳转到一个显示登录结果的页面,例如`success.jsp`。
总结起来,Struts2的添加过程包括创建Web工程、构建前端页面、下载并引入Struts2库文件、配置`web.xml`以及编写Action类。这个过程只是Struts2框架应用开发的基础,实际开发中还需要涉及更多配置、拦截器、结果类型、国际化、异常处理等方面的知识。Struts2的强大之处在于它提供了一套完整的解决方案,帮助开发者更高效地构建复杂的Web应用程序。