Struts2-初级配置与使用
———————
一.系统配置
1.首先是在IDEA中创建项目的时候,要选择Web Application,还要将下面的Struts2勾选,这样会默认帮你下载一下基础jar包
选择好之后创建项目,系统会默认帮你在web->WEB-INF->web.xml中填充好配置文件,也就是通过Filter来导入struts2,并且设置为全局,如果是其他项目没有填充的话,需要我们手动配置一下,配置文件如下
<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
<!--class里面的内容并不需要你全部打出,你只需要拼写出StrutsPrepareAndExecuteFilter,
系统就会通过提示引导你加载整个路径-->
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
<!--这里的”/*"代表全局作用的意思-->
</filter-mapping>
web.xml的配置文件配置好了之后,我们需要在src的根目录下面创建一个名为struts.xml的文件,这里的文件名必须为struts,创建好之后,我们需要给它配置一个基本标签头信息,这个信息需要我们去项目里的lib包中:按照路径为:lib->xwork-core-2.3.31.jar(这里也就是找xwork的核心包,版本可能会有不同)->xwork-validator-1.0.3.dtd(这里也是要选择最高版本),如下图所示
配置好信息之后,就可以开始使用了.
二.基本使用
1.关于请求后缀的修改.struts2默认的请求后缀为.action.而且默认配置里在JSP页面访问动作时可以不写action.
写到这里之前,下来说一下struts2的配置文件加载顺序
- a、default.properties : struts2-core**.jar org.apache.struts 包 [只看]
- b、struts-default.xml : struts2-core**.jar [只看]
- c、struts-plugin.xml :在插件的jar包 [只看]
- d、struts.xml : 在应用的构建路径顶端。自己定义的Struts配置文件(推荐)
- f、web.xml:配置过滤器时,指定参数。程序员可以编写(不推荐)
- 注意:顺序是固定的。后面的配置会覆盖前面的同名配置信息。
这里面修改请求后缀有三种写法,分别是:
(1).在struts.xml中添加语句,这里讲请求后缀改为了do,两个逗号的意思是在写请求时可以省略.do
<constant name="struts.action.extension" value="do,,"/>
(2)在src根目录下创建一个properties类型的文件,名字为struts,也就是struts.properties,里面的配置信息为:
struts.action.extension=do
(3)在web.xml中配置,在filter标签里,在Filter-class标签下面通过创建init-param标签来配置:
<init-param>
<param-name>struts.action.extension</param-name>
<param-value>do</param-value>
</init-param>
2.设置开发者模式
如果使用DevMode开发者模式,会默认重载配置文件为true.当打开它, xml.reload 也会变成true, 并且还会打印 详细的错误信息. 看default.properties.设置方式为:
<constant name="struts.devMode" value="true"/>
3.把默认配置打一个包,其他包来继承,就可以全局设置了
在package标签下有两个标签:
(1)<default-class-ref class=“" method=""/>
这里指的是当你在action标签中没有写class的时候,会让你默认跳转到一个action中,并执行其中的方法
这里可以创建一个类,并且创建一个方法,返回值必须为SUCCESS,然后在指定一个错误页面,这样就避免了执行默认操作的情况
<package name="AllDefault" extends="struts-default">
<!--如果class不写,默认路径是com.opensymphony.xwork2.ActionSupport-->
<!--这个默认路径的默认方法直接返回true,所以如果不写那么result必须是success-->
<!--method如果不写,默认执行execute,并且返回success-->
<!--可以有多个result,因为在action中会有判断,返回true就是success,返回FALSE就是error-->
<default-class-ref class="com.XXX.struts.error.ErrorAction"/>
</package>
这里为当没有指定class,也就是没写class的时候,会将class设置成这个路径
(2)<default-action-ref name="dispatcher" />
这里指的是当你在JSP页面请求action时候,找不到对应的action,也就是你的action名字写错,为了方便查看,这里可以设置一下到对应的方法里返回页面并提示action名错误
<package name="a" extends="struts-default">
<default-action-ref name="dispatcher" />
<action name="dispatcher" class="com.XXX.struts.error.ErrorAction" method="forgetClass"> <!-- dispatcher -->
<result type="dispatcher">
/errorAction.jsp
</result>
</action>
</package>
这里为当action名错误的时候,会跳转到error文件夹下的ErrorAction类,执行里面的forgetClass方法.
4.关于package
- name: 必须要有的. 配置 件中要唯 , 个名字
- extends: 是必须的. 指定 包. 会把 包中的配置内容继承下来. 般需要直接会间接 的继承 个叫做 “ struts-default “的包(该包在在 struts-default.xml 配置 件中 ), 如果 继承该包, 那么 struts2 中的核 功能 法使 .
- abstract: 是否是抽象包. 没有任何 action 元素的 package 可以声明为抽象包.
- namespace: 指定名称空间. 般以 “/“ 开头 . 该包中的动作访问 径: namespace+动 作名称 . 如果 namespace=““, 这是默认名称空间和 写该属性是 样的. 但与namespace= “/“ 同
5.关于命名空间