Struts2-配置文件
来源:互联网 发布:linux 启动网络服务 编辑:程序博客网 时间:2024/06/07 05:54
struts.xml配置文件
struts.xml文件通常放在项目的WEB-INF/classes目录下,在该目录下的struts.xml文件可以被Strtus2框架自动加载。在Eclipse中,由于编译时,Ecplise会自动将src路径下的strtus.xml文件编译后放到WEB-INF/classes路径下,所以,直接将其放到src路径下即可。
在struts.xml文件中,struts元素是根元素,所有其他元素都放在struts中。struts的子元素有constant,include,package。(把鼠标放到struts标签上,按F2就会显示出该标签的包含的元素,和元素的使用顺序。以逗号分隔体现了先后顺序,以|分隔,是或者的意思.)
constant
constant用来配置常量,这些常量的默认配置和使用用法在struts2-core-2.3.15.3.jar的org.apache.struts2包的default.properties中都有说明。比如
### Used by the DefaultActionMapper### You may provide a comma separated list, e.g. struts.action.extension=action,jnlp,do### The blank extension allows you to match directory listings as well as pure action names### without interfering with static resources, which can be specified as an empty string### prior to a comma e.g. struts.action.extension=, or struts.action.extension=x,y,z,,struts.action.extension=action,,
默认以.action结尾扩展名 和 不写扩展名 都会分发给 Action。
可以在default.properties中更改配置信息,但一般都不这样做。可以在struts.xml中配置,因为struts.xml是在default.properties之后被读取的,struts.xml中配置的信息会覆盖前者配置的信息。
常用的配置有
<!--提供详细报错页面,修改struts.xml后不需要重启服务器 --><constant name="struts.devMode" value="true" /> <!--标签主题,简单风格 --><constant name="struts.ui.theme" value="simple"></constant>
package
用来管理action和拦截器。
package的属性
- name:必填属性,指定该包的名字,此名字是该包被其他包引用的key,必须是唯一的
- namespace:可选属性,该属性定义该包的命名空间(与action标签的name属性合并确定了访问action的路径)默认值是
“”
- extends:可选属性,它指定该包继承自其他包。继承其他包,可以继承其他包中的Action定义,拦截器定义等。(该属性值通常都设置为struts-default,这样该包中的Action就具有了Strtus2框架默认的拦截器等功能,其中对struts-default包的具体定义在struts2-core-2.3.15.3.jar中的struts-default.xml文件中)
- abstract:可选属性,指定该包是否是一个抽象包,抽象包中不能包含Action定义。显示指定一个包是抽象包,可以为该package元素增加abstract=”true”属性
package的子元素: interceptors, default-interceptor-ref, global-results, action,default-action-ref
interceptors
子元素为(interceptor | interceptor-stack)
<interceptors> <interceptor name="loginInterceptor" class="com.itheima.crm.web.interceptor.LoginInterceptor"></interceptor> <interceptor-stack name="loginStack"> <interceptor-ref name="defaultStack"></interceptor-ref> <interceptor-ref name="loginInterceptor"> <param name="excludeMethods">login</param><!--设置login方法不拦截--> </interceptor-ref> </interceptor-stack></interceptors>
interceptor:定义拦截器。属性为name:指定拦截器的名称,class属性指定拦截器的实现类。interceptor的子元素为param,param的属性为name。有时在定义拦截器时需要传入参数,这时可以用param标签。其中name属性指定参数的名称,paramValue表示参数的值。
defaultStack对这个拦截器栈的定义在struts-default.xml中
<interceptor name="intercepterName" class="interceptorClass"> <param name="paramName">paramValue</param></interceptor>
interceptor-stack:在开发中,经常需要在Action执行前同时执行多个拦截动作,这时,可以把多个拦截器组成一个拦截器栈。在使用时,可以将栈内的多个拦截器当成一个整体来引用。属性为name,来指定栈名。子元素为interceptor-ref用来引用其他拦截器或拦截器栈,属性为name。子元素为param可以给拦截器传递参数。
default-action-ref
配置了这个,当访问的路径,其它的action处理不了时,就会执行name指定的名称的action
<default-action-ref name="action的名称" />
default-class-ref
在action配置时,如果class不写。默认情况下是 com.opensymphony.xwork2.ActionSupport。如果设置了,那么在当前包下,默认处理action请的的处理类就为class指定的类.
<default-class-ref class="cn.itcast.action.DefaultAction"/>
default-interceptor-ref
如果想对包下的Action使用相同的拦截器或拦截器栈,则需要为该包中的每个Action都重复指定同一个拦截器,这样写过于繁琐。可以使用默认拦截器。每一个包下只能定义一个默认拦截器,如果需要多个拦截器作为默认拦截器,则可以将这些拦截器定义为一个拦截器栈,再将这个拦截器栈作为默认拦截器即可。
<default-interceptor-ref name="loginStack"></default-interceptor-ref>
global-results
global-results:当多个Action使用同一个result时,当前包中的action都可以用,这个时候就可以使用global-results标签配置全局result;当Action返回的字符串没有相应的result,Struts2会在package中查找global-result
<global-results> <result name="login">/WEB-INF/pages/login.jsp</result></global-results>
action
将一个请求的URL映射到一个action类
- name:必填属性,标识Action,指定了Action所处理的请求的URL
- class:可选属性,指定Action对应的实现类(默认值是ActionSupport)
- method:可选属性,指定请求Action时调用的方法(默认值是execute)
- converter:可选属性,指定类型转换器的类
<package name="sta" namespace="/" extends="common"> <action name="staffAction_*" class="com.itheima.crm.staff.web.action.StaffAction" method="{1}"> <result name="success" type="redirectAction">staffAction_home</result> <result name="home">/WEB-INF/pages/frame.jsp</result> <result name="findAll">/WEB-INF/pages/staff/listStaff.jsp</result> </action></package>
action的子元素
result:配置逻辑视图和物理视图之间的映射(可以映射到JSP页面或action)。name属性,指定逻辑视图的名称,默认值为success(与action中的方法的返回值做对比,确定跳转路径)。type:可选属性,指定返回的视图资源的类型。默认值为dispatcher。
result指定实际资源位置时,可以使用绝对路径,可可以使用相对路径。绝对路径以斜杠开头,相当于当前Web应用程序的上下文路径;相对路径不以斜杠开头,相当于当前执行的action的路径
预定义的结果类型(在struts-default.xml文件中有)
- dispatcher:转发,一般用于从action跳转到页面
- redirect:重定向,一般用于从action跳转到页面
- redirectAction:重定向,从action跳转到另一个action
- chain:转发,一般用于从action跳转到另一个action
- stream:服务器返回的是一个流,用户下载
- freemarker:用来整合FreeMarker模板结果类型
interceptor-ref:引用action需要的拦截器或拦截器栈
使用通配符
在使用method属性时,由于在Action类中有多个业务逻辑处理方法,在配置Action时,就需要使用多个action元素。
<action name="userAction_*" class="cn.eaglezsx.action.UserAction" method="{1}"> <result>/index.jsp</result></action>
当客户端发送userAction_login.action这样的请求是,action元素的name属性就被设置成userAction_login,method属性就被设置成login。
其中method属性值中的数字1表示匹配第一个*。如果定义Action名称为*_*
时,class属性为action.{1},那么method属性值为{2}。如果定义Action名称为*时,表示可以匹配任意的Action。
对result元素也可以采用通配符配置,具体代码如下
<result>/{1}.jsp</result>
include
当在struts.xml配置了很多action和拦截器后会很乱,把这些action写到多个xml文件中,然后在struts.xml中用include引用一下。
<include file="struts/struts-staff.xml"></include>
在struts-staff.xml中正常写,只是需要继承一下struts.xml中的package
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN" "http://struts.apache.org/dtds/struts-2.3.dtd"><struts> <!-- 2 员工的配置 --> <package name="sta" namespace="/" extends="common"> <action name="staffAction_*" class="com.itheima.crm.staff.web.action.StaffAction" method="{1}"> <!-- 1 登录成功 --> <result name="success" type="redirectAction">staffAction_home</result> <!-- 2 没有登录成,需要登录 --> <!-- <result name="login">/WEB-INF/pages/login.jsp</result> --> <!-- 3 首页 --> <result name="home">/WEB-INF/pages/frame.jsp</result> <!-- 4查询所有 --> <result name="findAll">/WEB-INF/pages/staff/listStaff.jsp</result> </action> </package></struts>
- Struts2配置文件
- Struts2配置文件
- struts2配置文件
- struts2 配置文件
- struts2配置文件
- Struts2配置文件
- Struts2配置文件
- struts2配置文件
- Struts2配置文件
- Struts2配置文件
- struts2配置文件
- Struts2配置文件
- struts2配置文件
- Struts2配置文件
- struts2配置文件
- struts2 配置文件
- struts2配置文件
- struts2配置文件
- BZOJ1040
- codevs 1436 孪生素数 2
- Spring与Struts2整合
- short i =1; i=i+1与short i=1; i+=1的区别
- [python + pillow] 自制壁纸不完全教程
- Struts2-配置文件
- Qt使用QWT绘制科学图表和图形
- 二叉排序树
- spring的AOP(五)----Spring AOP 编程(AspectJ )
- bootstrap入门
- select下拉框
- D
- C++中重载、重写(覆盖)和隐藏的区别
- Usage scenarios