zoukankan      html  css  js  c++  java
  • Struts2.xml的配置

    框架初始知识:

    Servlet  VS   Filter

    Filter的性能更强,因为Servlet能实现的,Filter都能实现。

    Filter还有拦截资源的作用 是Servlet所不能实现的。

    Filter有FilterChain API,而Servlet没有对应的API。

    1.包配置(package):

    常用属性有:

    name:必填属性,用来指定包名,以 name的值来调用此包

    extends:可选属性,用来指定该包继承其他包,可以继承其他包中的Action定义、拦截器定义等。通常继承struts-default包

    namespace:可选属性,用来指定该包的命名空间,如果某个包没有指定namespace属性,则该包使用默认的命名空间,默认的命名空间为"/"。

    Action的搜索:http://localhost:8080/当前web应用名/namespace_value/Action_name.action

     

    eg.  <package  name=""  extends=""  namespace="">

    <!-- 定义处理请求url为login.action的Action -->

    <action  name="login"  class="">

    <!-- 定义处理结果字符串和资源之间的映射关系 -->

    result一共有两个属性,type和name

    常用的type属性值:默认是dispatcher(转发)

    chain:转发到一个action

    redirectAction:重定向到一个action

    dispatcher:转发,则只能通过添加<param></param>的方式实现,不能通过便捷方式实现

    redirect:重定向

     <!--   result元素中,name就是result元素的逻辑视图名称,如果省略了name属性,系统就将采用默认的name属性值,默认的name值是SUCCESS。结果类型有如下几种:(引用自慕课网)

    Struts2通过在struts.xml文件中使用<result …/>元素来配置结果。Struts2提供了两种结果。
     局部结果:将<result …/>作为<action …>元素的子元素配置。
     全局结果:将<result …/>作为<global-results …>元素的子元素配置。
    在package元素中配置<global-results>子元素:

     

    <global-results>
     <result name="error">/Error.jsp</result>
     <result name="invalid.token">/Error.jsp</result>
     <result name="login" type="redirect-action">Logon!input</result>
    </global-results>

    -->

    <result  name="login">/login.jsp</result>

    </action>

    </package>

    2.解决struts.xml中内容过多的问题:将一个配置文件分解为多个配置文件,那么在struts.xml中必须包含其他xml文件(include):

    <struts>

    <include file="struts-user.xml"></include>

    <include file="struts-book.xml"></include>

        .

       .

       .

    </struts>

    3.Action:action必须放在一个指定的包空间下定义,action代表一个struts2的请求,name属性相当于一个servlet  path

     Action的搜索顺序:

    4.动态方法调用:动态方法调用解决了一个包空间内action过多的问题,一个action可以对应多个请求的处理

    注意:要使用动态方法调用,必须设置struts.enable.DynamicMethodInvocation常量来完成,该常量属性的默认值是true。

    4.1  感叹号方式:

    4.2  通配符方式:把method的属性指定为{数字}的形式,其他属性中包含method属性的可使用此来代替,其中{数字}表示它的值是name属性值中第几(数字)个*的值。在struts.xml文件中配置<action…>元素时,它的name、class、method属性都可支持通配符。

    使用前:

    <struts>

    <package>

    <action name="user_save"   class="cn.save.User"   method="save">

    <result name="save">/save.jsp</result>

    </action>

    </package>

    </struts>

    使用后:

    <struts>

    <package>

    <action name="user_* "   class="cn.{1}.User"   method="{1}">

    <result name="{1}">/{1}.jsp</result>

    </action>

    </package>

    </struts>

    总结:通配符映射规则,若找到多个匹配,将选择没有通配符的那个进行执行。

    若找到多个带有通配符的匹配,则按先后顺序进行选择

     5.struts2的请求和响应过程:

    6.常量配置:

    Struts2框架有两个核心配置文件,其中struts.xml文件主要负责管理应用中的Action映射, 及Action处理结果和物理资源之间的映射关系。除此之外,Struts2框架还包含了一个struts.properties文件,该文件定义了Struts2框架的大量常量属性。但通常推荐也是在struts.xml文件中来配置这些常量属性。

    <struts>

    <constant   name=""   value=""  ></constant>

    </struts>

    struts2受理的请求扩展名问题:

  • 相关阅读:
    241. Different Ways to Add Parentheses java solutions
    89. Gray Code java solutions
    367. Valid Perfect Square java solutions
    46. Permutations java solutions
    116. Populating Next Right Pointers in Each Node java solutions
    153. Find Minimum in Rotated Sorted Array java solutions
    判断两颗树是否相同
    求二叉树叶子节点的个数
    求二叉树第k层的结点个数
    将二叉排序树转换成排序的双向链表
  • 原文地址:https://www.cnblogs.com/cn-chy-com/p/7535241.html
Copyright © 2011-2022 走看看