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框架的大量常量,开发者可以通过改变这些常量来满足应用的需求。

【常量的修改】

要修改这些常量,可以在【文件】中重新配置,覆盖默认的值(后加载的配置文件常量,可以对先加载配置文件进行覆盖).

posted @ 2017-06-06 22:49  池世武  阅读(82)  评论(0)    收藏  举报