struts2配置的详解
1. <package>详解
l package标签:
功能:用来定义不同的模块,管理和配置Action,并且实现包内配置复用 (通过包继承实现 )
name属性:包的名称,在struts容器中具有唯一性(在开发中可以用模块名称作为包名)
extends属性:继承父package中的功能,通常都继承struts-default。由于该默认包内定义了大量结果集类型和拦截器,所以struts强制你继承struts- default。
namespace属性:名称空间用来标识一个路径,来区分不同action的访问路径。
Action的访问路径= namespace包名称空间 + action的name属性 默认为“”
【注意点一】
在不同的package中,可以存放相同name的action,在访问的时候通过namaspace进行区分
如果namespace是/XXX,那么就可以通过、/XXX/*.action的方式访问这个action
如果namespace是/XXX/YYY,那么久可以通过/XXX/YYY/*.action的方式访问这个action
在项目实际开发过程中,namespace可以写成模块名字
【注意点二】
访问action的时候,struts有个内部规律(了解) 如果你访问的路径中,没有定义action,会自动向上层路径寻找。 http://localhost:8080/struts_day01/aa/bb/cc/hello.action 先在aa/bb/cc/找hello.actionw找到就ok,找不到,继续:aa/bb/中找hello.action……..一直找到/找hello.action其实最终会找到“”下的hello.action如果最终还是没有找到,就会报错
缺点:代码可读性不好。
Struts示例代码
<?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> <!--这是一个包,功能类似于java中的包,在同一个保内,action的name必须唯一; 在不同的包内(包名不同),可以设置同名的Action的 namespace:跟访问路径相关 exetends:继承struts-default package: --> <package name="default" extends="struts-default" namespace="/" > <!-- action:配置页面模型Action name:Action的标识,访问路径,在同一个包内,必须唯一 class:Action对应的完整的包路径 --> <action name="hello" class="cn.itcast.a_hello.HelloAction"> <!-- 配置响应的结果视图与页面的关系 name:响应的结果 值:结果页面的URL地址 --> <result name="success">/a_hello/result.jsp</result> </action> </package> <!-- 在不同的package中,可以存放相同name的action,在访问的时候通过namaspace进行区分 如果namespace是/XXX,那么就可以通过、/XXX/*.action的方式访问这个action 如果namespace是/XXX/YYY,那么久可以通过/XXX/YYY/*.action的方式访问这个action 在项目实际开发过程中,namespace可以写成模块名字 --> <package name="mypackage" extends="struts-default" namespace="/xxx/yyy"> <action name="hello" class="cn.itcast.b_config.HelloAction"> <result>/b_config/result.jsp</result> </action> </struts>
2. <action>详解
action标签:用来管理具体的Action,负责接收客户端的请求,进行处理,并且完成响应
1.name属性:action的名字,用于配置请求的URL路径。
2.class属性:action对应的完整包路径,该类编写了action具体业务逻辑代码。
3.找到action之后,系统会默认会执行Action类中的execute方法。
4.若没有class属性,系统会默认执行ActionSupport中execute方法,而ActionSupport的execute会默认返回 success逻辑视图,这种处理方式在struts-default.xml 文件已经进行了规定。
当访问的Action不存在的时候,我们可以自行设定默认执行的Action。在操作中,当系统访问不到对应请求的action的时候,会执行我们自行设定默认执行的action,这种方式需要我们在struts.xml文件中提前进行相关配置。
3. <result>详解
result标签:结果集视图,标签内的值是响应的地址。
name属性:结果集视图的名字,action会根据该名字跳转到对应的地址。result的name属性默认值为“success”。
1. 局部结果集:局部结果集只能给当前的action使用,只对当前Action有效
2. 全局结果集。在包的标签中<global-results>中配置,作用范围:对package内所有Action生效
<?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> <constant name="struts.enable.DynamicMethodInvocation" value="false" /> <constant name="struts.devMode" value="true" /> <package name="test" extends="struts-default" namespace="/"> <!-- 配置全局结果集--> <global-results> <result name="success">/t1.jsp</result> </global-results> <!-- 局部结果集,默认success的情况下, name可以忽略--> <action name="hello" class="cn.ita.action.HelloAction"> <result>/t1.jsp</result> </action> <!-- 配置全局结果集--> <action name="global" class="cn.ita.action.GlobalAction"> </action> </package> </struts>
3. 结果集类型
作用:控制响应的方式(转发、重定向),
配置<result> 元素时, name是逻辑视图名称, type是结果集类型。
Struts2提供的常用结果集类型都定义在struts-default.xml 中:


<?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> <constant name="struts.enable.DynamicMethodInvocation" value="false" /> <constant name="struts.devMode" value="true" /> <package name="test" extends="struts-default" namespace="/"> <!-- 局部结果集,默认success的情况下, name可以忽略,dispatcher默认--> <action name="hello" class="cn.ita.action.HelloAction"> <result name="success" type="dispatcher">/t1.jsp</result> </action> <action name="global" class="cn.ita.action.GlobalAction"> <!-- chain跳转到Action名 <result type="chain">hello</result> 重定向 <result type="redirect">/t1.jsp</result> 重定向Action <result type="redirectAction">hello</result> --> </action> </package> </struts>
4. <constant>常量配置
在项目开发的过程中,struts2默认定义了很多变量,比如上传文件的大小、项目的字符集编码等等信息,这些信息在某些情况下,无法满足我们的实际需求,这时候就需要通过配置文件来修改这些默认配置。
default.properties定义了struts2框架的大量常量,开发者可以通过改变这些常量来满足应用的需求。
【常量的修改】
要修改这些常量,可以在【文件】中重新配置,覆盖默认的值(后加载的配置文件常量,可以对先加载配置文件进行覆盖).

浙公网安备 33010602011771号