Struts框架基础:配置与组件详解
发布时间: 2023-12-18 22:53:04 阅读量: 11 订阅数: 5
### 1. 第一章:Struts框架简介
#### 1.1 Struts框架概述
#### 1.2 Struts框架的历史和发展
#### 1.3 Struts框架的优势和应用场景
### 2. 第二章:Struts框架配置
2.1 Struts框架配置文件详解
2.2 配置Action映射
2.3 配置视图解析器和全局异常处理器
### 2.1 Struts框架配置文件详解
在Struts框架中,配置文件扮演着至关重要的角色,它们用于配置整个应用程序的行为,包括请求到处理的映射、视图解析器、异常处理等。常见的配置文件主要包括struts-config.xml、struts-default.xml、struts-plugin.xml等。其中,struts-config.xml文件是最常用的配置文件,用于配置Action映射、全局异常处理、国际化等。
```xml
<!-- 示例:struts-config.xml -->
<struts-config>
<form-beans>
<!-- 配置表单Bean -->
</form-beans>
<global-exceptions>
<!-- 配置全局异常处理 -->
</global-exceptions>
<global-forwards>
<!-- 配置全局跳转页面 -->
</global-forwards>
<action-mappings>
<!-- 配置Action映射 -->
<action path="/login" type="com.example.LoginAction" name="loginForm" validate="true" scope="request">
<forward name="success" path="/welcome.jsp"/>
<forward name="failure" path="/login.jsp"/>
</action>
<!-- 更多Action映射配置 -->
</action-mappings>
<message-resources>
<!-- 配置国际化资源文件 -->
</message-resources>
</struts-config>
```
在上述示例中,展示了struts-config.xml配置文件中的部分内容,包括表单Bean的配置、全局异常处理配置、全局跳转页面配置、Action映射配置以及国际化资源文件配置。这些配置可以帮助开发者定义处理请求的行为,以及实现国际化等功能。
**代码总结**:配置文件是Struts框架中至关重要的一部分,通过合理的配置,可以实现灵活而强大的功能扩展。
**结果说明**:合理的配置文件可以帮助开发者实现更加灵活和强大的功能扩展,例如定义请求处理的映射关系、实现全局异常处理、国际化等功能。
## 第三章:Struts框架中的Action
在Struts框架中,Action是一个关键的组件,用于处理用户请求并执行相应的业务逻辑。本章将详细介绍Action的作用、类型、结构和使用方法,以及如何与表单数据进行交互。
### 3.1 Action的作用与类型
Action作为Struts框架中的控制器组件,负责接收用户请求并调用相应的业务逻辑进行处理。根据不同的需求,可以将Action分为普通Action和带参数的Action。普通Action用于处理无需参数的请求,而带参数的Action则可以接收并处理包含参数的请求。
### 3.2 Action类的结构和使用方法
在Struts框架中,一个Action类通常继承自ActionSupport类,并覆写execute方法来实现请求的处理逻辑。同时,可以利用依赖注入机制来获取表单数据,并通过ActionContext来设置响应结果。
```java
public class LoginAction extends ActionSupport {
private String username;
private String password;
public String execute() {
if ("admin".equals(username) && "123456".equals(password)) {
return "success";
} else {
return "error";
}
}
// 省略getter和setter方法
}
```
以上是一个简单的登录Action的示例,通过继承ActionSupport类并覆写execute方法,实现了用户登录的逻辑判断,并返回不同的结果视图。
### 3.3 Action与表单数据的交互
在Struts框架中,可以通过模型驱动或属性驱动的方式来将表单数据传递给Action类。模型驱动需要实现ModelDriven接口,并覆写getModel方法来返回一个模型对象;而属性驱动则使用Action类的属性来直接接收表单数据。
```java
public class UserAction extends ActionSupport implements ModelDriven<User> {
private User user = new User();
public String execute() {
// 使用模型驱动获取表单数据
System.out.println("用户名:" + user.getUsername());
System.out.println("密码:" + user.getPassword());
return "success";
}
@Override
public User getModel() {
return user;
}
}
```
以上示例演示了使用模型驱动方式来获取表单数据,并在execute方法中使用用户输入的用户名和密码进行逻辑处理。
### 4. 第四章:Struts框架的视图层
#### 4.1 Struts视图层技术概述
在Struts框架中,视图层扮演着展示数据和与用户交互的重要角色。通常情况下,Struts使用JSP作为页面展示的主要技术,同时结合Struts标签库来简化页面的开发和数据展示。此外,还可以使用Velocity等模板引擎来实现页面的模板化和国际化。
#### 4.2 JSP页面与Struts标签库
JSP是Java的一种服务器端的技术,通过在页面中嵌入Java代码和特殊的标记,实现了动态网页的生成。在Struts中,可以使用JSP页面来展示数据,并通过Struts标签库来简化数据的输出和表单的处理。例如,可以使用`<s:property>`标签来输出页面数据,`<s:form>`标签来处理表单提交等。
```java
<%@ taglib prefix="s" uri="/struts-tags" %>
<html>
<head>
<title>Struts页面示例</title>
</head>
<body>
<h1>Welcome to Struts</h1>
<s:property value="message" />
<s:form action="submitForm">
<s:textfield name="userName" label="User Name" />
<s:password name="password" label="Password" />
<s:submit value="Login" />
</s:form>
</body>
</html>
```
在上述示例中,`<s:property>`标签用于输出`message`的值,`<s:form>`标签用于处理表单的提交,并包含了用户名和密码的输入框。
#### 4.3 页面模板与国际化
Struts框架也支持页面模板和国际化的特性。通过使用Struts标签库和资源文件,可以实现页面的模板化和国际化的处理。这种模式下,页面的结构和展示样式可以与具体的数据内容分离,实现了代码和样式的解耦。
```java
<%@ taglib prefix="s" uri="/struts-tags" %>
<html>
<head>
<title><s:text name="welcome.title" /></title>
</head>
<body>
<h1><s:text name="welcome.heading" /></h1>
<p><s:text name="welcome.message" /></p>
</body>
</html>
```
在上述示例中,`<s:text>`标签用于从资源文件中读取文本内容,实现了页面标题、标题和消息的国际化处理。
### 第五章:Struts框架中的验证与拦截器
在Struts框架中,验证和拦截器是非常重要的组件,能够帮助我们处理用户输入的数据并进行必要的验证,同时也能够在请求处理的前后执行一些额外的逻辑。本章将深入介绍Struts框架中的验证和拦截器相关内容。
#### 5.1 表单验证的配置与使用
在Struts框架中,可以通过配置XML文件来定义表单验证的规则,这些规则可以用于验证用户提交的表单数据,确保数据的合法性和正确性。具体步骤包括:
1. 在`struts.xml`配置文件中定义表单验证规则:
```xml
<validators>
<field name="username">
<field-validator type="requiredstring">
<param name="trim">true</param>
<message>用户名不能为空</message>
</field-validator>
</field>
<field name="password">
<field-validator type="requiredstring">
<message>密码不能为空</message>
</field-validator>
<field-validator type="stringlength">
<param name="minLength">6</param>
<param name="maxLength">20</param>
<message>密码长度必须在6到20个字符之间</message>
</field-validator>
</field>
</validators>
```
2. 在Action类中使用`validate()`方法进行数据验证:
```java
public class LoginAction extends ActionSupport {
private String username;
private String password;
// 省略其他代码
public void validate() {
if (username == null || username.trim().isEmpty()) {
addFieldError("username", "用户名不能为空");
}
if (password == null || password.isEmpty()) {
addFieldError("password", "密码不能为空");
} else if (password.length() < 6 || password.length() > 20) {
addFieldError("password", "密码长度必须在6到20个字符之间");
}
}
}
```
#### 5.2 Struts的拦截器配置和原理
拦截器是Struts框架中的一个重要组件,通过拦截器可以在请求的处理过程中执行额外的逻辑,例如日志记录、权限验证等。在Struts框架中,可以自定义拦截器并将其配置到拦截器栈中,具体步骤包括:
1. 定义自定义拦截器类并实现`Interceptor`接口:
```java
public class LoginInterceptor extends AbstractInterceptor {
@Override
public String intercept(ActionInvocation invocation) throws Exception {
// 在Action执行前执行的逻辑
// 可以进行登录验证、日志记录等操作
String result = invocation.invoke(); // 执行下一个拦截器或Action
// 在Action执行后执行的逻辑
// 可以进行资源释放、日志记录等操作
return result;
}
}
```
2. 配置拦截器栈,将自定义拦截器加入到拦截器栈中:
```xml
<interceptors>
<interceptor name="loginInterceptor" class="com.example.interceptor.LoginInterceptor"/>
<interceptor-stack name="myStack">
<interceptor-ref name="loginInterceptor"/>
<interceptor-ref name="defaultStack"/>
</interceptor-stack>
</interceptors>
```
3. 将拦截器栈应用到特定的Action中:
```xml
<action name="login" class="com.example.action.LoginAction" method="execute">
<interceptor-ref name="myStack"/>
<result name="success">/success.jsp</result>
<result name="input">/login.jsp</result>
</action>
```
#### 5.3 自定义拦截器的实现方法
除了使用Struts框架提供的预定义拦截器外,还可以通过实现`Interceptor`接口来定义自定义的拦截器,以满足特定的业务需求。自定义拦截器可以在拦截器栈中使用,或者直接应用到特定的Action中。
## 第六章:Struts框架中的组件及扩展
Struts框架提供了丰富的组件和扩展点,可以帮助开发者更灵活地构建Web应用。本章将详细介绍Struts框架中的组件及扩展的相关内容,包括组件的使用方法、插件和扩展点的介绍,以及Struts框架与其他技术的整合方法。
### 6.1 Struts组件的使用方法
在Struts框架中,有许多重要的组件可以帮助开发者构建Web应用,比如Action、Interceptor、Result等。这些组件可以通过配置文件进行声明和配置,然后在应用中进行调用和使用。下面是一个简单的示例,展示了如何使用Struts中的Action组件:
```java
public class HelloWorldAction extends ActionSupport {
private String message;
public String execute() {
setMessage("Hello, Struts!");
return "success";
}
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
}
```
在上面的示例中,我们定义了一个继承自ActionSupport的Action类,其中包含了一个execute方法和一个message属性。在execute方法中,我们设置了message的值为"Hello, Struts!",并且返回了"success"作为执行结果。
### 6.2 插件和扩展点的介绍
Struts框架提供了丰富的插件机制,可以帮助开发者扩展框架的功能。开发者可以通过编写自定义的插件,并将其配置到Struts框架中,以实现特定的需求。常见的插件包括数据验证插件、安全认证插件、日志记录插件等。通过插件机制,开发者可以更加灵活地定制框架的行为。
### 6.3 Struts框架与其他技术的整合
Struts框架与其他流行的技术和框架(如Spring、Hibernate等)整合是Web应用开发中常见的需求。在实际开发中,开发者通常会将Struts框架与其他技术进行整合,以实现更强大的功能和更灵活的开发流程。例如,结合Spring框架可以实现依赖注入和面向切面编程,而与Hibernate整合可以实现持久化操作的简化。
总之,Struts框架中的组件和扩展机制为开发者提供了丰富的功能和灵活的扩展方式,同时与其他技术的整合也为开发者提供了更强大的开发选择。开发者可以根据实际需求选择合适的组件和扩展方式,以及与其他技术的整合方案,来构建高效、功能丰富的Web应用程序。
**以上是第六章内容的详细说明。**
0
0