"细说常量定义,主要探讨在Struts框架中如何配置和使用常量,以及Struts2框架的特性和优势。"
在Struts框架中,常量定义是一个重要的配置环节,用于设置框架的行为和参数。常量可以在两个主要的位置进行配置:`struts.xml`和`struts.properties`文件。推荐在`struts.xml`中配置常量,因为这样做更加灵活且易于管理和维护。例如,以下是在`struts.xml`中定义一个常量的示例:
```xml
<struts>
<constant name="struts.action.extension" value="do"/>
</struts>
```
在这里,`struts.action.extension`常量被设置为`do`,这意味着所有Action请求的默认扩展名将是`.do`。
同时,常量也可以在`struts.properties`文件中配置,如:
```properties
struts.action.extension=do
```
Struts2框架在启动时会按照特定的顺序加载常量配置文件,依次是`struts-default.xml`、`struts-plugin.xml`、`struts.xml`、`struts.properties`和`web.xml`。如果在多个文件中定义了相同的常量,后面的文件中的配置将覆盖前面文件的配置,这被称为"后写覆盖"原则。
Struts2是基于WebWork2发展起来的MVC框架,相比Struts1,它具有显著的优点。首先,Struts2采用无侵入式设计,应用可以独立于ServletAPI和StrutsAPI,降低了框架与应用程序的耦合度。例如,传统的Struts1 Action类需要继承`Action`基类并实现`execute`方法,而在Struts2中,Action类可以是任何实现了`execute`方法的普通Java类,无需直接继承框架类。
其次,Struts2引入了拦截器(Interceptor)机制,这是AOP(面向切面编程)的一个应用,可以方便地实现如权限控制、日志记录等功能,增加了代码的可复用性和模块化。
此外,Struts2还提供了类型转换器(Type Converter),自动将请求参数转换为期望的数据类型,减少了手动转换的工作。对于Struts1用户,这一特性大大简化了处理复杂数据类型的任务。
Struts2支持多种视图技术,如JSP、FreeMarker和Velocity,这使得开发者可以根据项目需求选择最适合的模板语言。输入验证方面,Struts2允许对特定方法进行校验,而不是在整个Action级别,提高了灵活性。
最后,Struts2的国际化支持更为强大,可以实现全局、包级和Action级别的资源文件管理,方便多语言环境下的应用开发。
要搭建Struts2的开发环境,需要获取相关依赖的jar文件,可以从Apache Struts官方网站下载。然后编写`struts.xml`配置文件,并在`web.xml`中添加Struts2的启动配置,完成基本的环境搭建工作。通过这些步骤,开发者就可以开始构建基于Struts2的Java Web应用了。