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受理的请求扩展名问题:

  • 相关阅读:
    Java Object part1
    StringBuffer StringBuilder append
    Java equal
    java Classloader
    Java NIO
    Oracle中Blob和Clob
    Java8 Lambda 表达式
    HashMap分析 + 哈希表
    android自定义控件之滚动广告条
    android自定义控件之模仿优酷菜单
  • 原文地址:https://www.cnblogs.com/cn-chy-com/p/7535241.html
Copyright © 2011-2022 走看看