配置文件struts.xml和web.xml。
其实要使Struts2可以工作,配置很简单,套模板就好了。而且基本与版本无关。
如,只要struts2需要的基本jar包已经引入,那么直接配置一下web.xml和struts.xml文件。
web.xml中包含:
struts2
org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
struts2
/*
此处web.xml的简单加载struts2核心驱动(过滤器),没有其它配置。
只要满足以上格式即可。
好了,现在具体来说一说xml文件的配置项具体含义。
首先,web.xml
struts2
org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
定义filter,此处加载struts2过滤器。
struts2
/*
定义web服务器通知项,即,符合“/*”的URL请求都交给命名为“struts2”的过滤器(即,org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter)处理。
web.xml配置以上两个属性节点就可以加载struts2框架了。
然后,struts.xml,这个配置项比较多。
形如:
配置是否在每次HTTP请求到达时都重新加载资源文件,看到“i18n”我以为是编码或者国际化配置呢,默认为false,生产阶段也就需要false。设置为true之后,web服务器(tomcat)会缓存,启动是会抛出“couldn't clear tomcat cache”。
开发阶段配置,在web服务器出错时会尽量打印出来,一样也是生产阶段设置为false,避免后台结构被人发现。
此配置之后,所有访问都需要全路径。
大概就是以上的简单配置,哇,太多了。还有一些可能到网站关闭那天也用不到的配置,就没有列出来了。
然后,
在Struts2框架中是通过包来管理action、result、interceptor、interceptor-stack等配置信息的。
namespace:命名空间,影响访问的action请求路径,如namespace="/user",package下有login,register等action,那么访问login时需要/user/login来访问。
Struts2中如果没有为某个包指定命名空间,该包使用默认的命名空间,默认的命名空间总是""。
extends:继承,需要继承struts的struts-default。当一个包通过配置extends属性继承了另一个包的时候,该包将会继承父包中所有的配置,包括action、result、interceptor等。
由于包信息的获取是按照配置文件的先后顺序进行的,所以父包必须在子包之前被定义。
还有一个abstract属性,用于声明package属性为抽象包,然后其它package继承此package即可。
action:
name: 请求名称,加上namespace就是请求路径。
method: 接到请求后执行的方法,默认执行execute(此处表示没有method属性)。
class: 处理方法所在的类,默认为Action(如果没有配置此属性)。
还有一个不常用的属性,converter,Action的类型转换器。
result:
name: Action返回结果,默认为SUCCESS("success").
type: 返回的类型,默认为dispatcher。
action中可以使用通配符。
请求通配符和返回结果均可使用,如,
/{2}_page.jsp
此处只是举例,站点不宜这样配置请求。但是对于action的name配置很实用,不要奢望一个action配置完整个站点(虽然也可以实现,而且对于访问没有太多影响),十分不利于管理。
再列几个常用配置:
当我们在配置Action的时候,如果没有为某个Action指定具体的class值时,系统将自动引用
如果在请求一个没有定义过的Action资源时,系统就会抛出404错误。这种错误不可避免,但这样的页面并不友好。我们可以使用<default-action-ref>来指定一个默认的Action,如果系统没有找到指定的Action,就会指定来调用这个默认的Action。
具体配置项很多,用到再追加也可以。