一、struts2所依赖的jar包
struts2-core-2.x.x.jar :Struts 2框架的核心类库
xwork-2.x.x.jar :XWork类库,Struts2在其上构建
ognl-2.6.x.jar :对象图导航语言(Object Graph Navigation Language),Struts2框架使用的一种表达式语言
freemarker-2.3.x.jar :Struts2的UI标签的模板使用FreeMarker编写
commons-logging-1.1.x.jar :ASF出品的日志包,Struts 2框架使用这个日志包来支持Log4J和JDK 1.4+的日志记录。
commons-fileupload: 文件上传
二、struts2框架的启动
在web.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>
在struts2中,该框架是通过filter启动的,在filter的init()方法中将会读取struts.xml完成初始化操作。
strusts2在读取了struts.xml的内容后,将内容封住进javabean对象并放在内存中,对于用户的每次请求将使用在内存中的数据。
三、struts2的主要配置文件
1. 两个xml配置文件
struts-default.xml------ 配置框架组件但不含ation(Struts2框架预设的)
这个文件是struts2框架默认加载的配置文件。它定义struts2一些核心的bean和拦截器。其中定义名为struts-default的package通常需在struts.xml中被继承。
struts.xml---------配置Action等(该为用户自定义的)
主要负责管理应用中的Action映射以及该Action所包含的result和拦截器的定义等。
2. 两个properties配置文件
default.properties------框架预设的环境参数
定义了struts2框架的初始全局环境参数,可以被覆盖。
struts.properties----------用户配置的环境参数
可以通过改变这些属性来改变struts2框架的预设初始定义值,满足应用的需求;如改变action访问url扩展名:struts.action.extention=do
3.修改环境参数的两种方式】
方式一:在struts.properties中
struts.action.extention=do
方式二:在struts.xml中
<constantname="strus.action.extension" value="do"/>
四、配置文件的加载顺序:(覆盖关系)
1、struts-default.xml
2、struts-plugin.xml
3、default.properties
4、struts.xml
5、struts.properties
6、web.xml
若在多个文件中配置了同一个参数,其顺序为后者覆盖前者的参数配置。
五、一些重要的环境变量参数
常量名 | 默认值 | 说明 |
1、struts.i18n.encoding | UTF-8 | 指定默认编码集,作用于HttpServletRequest的setCharacterEncoding方法 和freemarker 、velocity的输出 |
2、struts.action.extension | action | Struts 2处理的请求后缀,即所有匹配*.xxx的请求都由Struts2处理,如可改为.do |
3、struts.configuration.xml.reload | false | 配置文件修改后,系统是否自动重新加载该文件,开发环境建议true |
4、struts.devMode | false | 建议开发模式下打开,这样可以打印出更详细的错误信息 |
5、struts.objectFactory | 无 | 与spring集成时,指定由负责action对象的创建 ,值设为spring |
6、struts.ui.theme | xhtml | 标签库的输出样式,默认会生成多余html代码造成多余换行。此时,可改为simple |
7、struts.ognl.allowStaticMethodAccess | false | 默认不支持静态方法调用,可改为true |