zoukankan      html  css  js  c++  java
  • JavaEE SSH集成框架(两) struts2 本地加载dtd文件,action组态

    1. 载入中struts2的dtd文件。使struts.xml网络无法验证,和eclipse有技巧

    在src在创建struts.xml:

      <?

    xmlversion="1.0"encoding="UTF-8"?

    >

    <!DOCTYPE strutsPUBLIC

        "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"

        "http://struts.apache.org/dtds/struts-2.3.dtd">

    解压struts2/lib下的core.jar。

    找到struts-2.3.dtd,解压出来。

    eclipse > 首选项 > xml > xml catalog > user specified entries> add

     location 选择本地dtd文件。key type为选uri;uri为 http://struts.apache.org/dtds/struts-2.3.dtd



    2. <struts></struts>中的元素为:

      <beans />  <constant /> <include /> <package /> <unknown-handler-stack />

      经常使用的常量constant

    <!-- 开发模式为true时,即时生效。改动struts配置文件时不用又一次部署 -->

    <constant name="struts.devMode" value="true"/>

    <!-- 动态方法调用 默认关闭的 听说不安全 调用时匹配规则:actionName!methodName.action  后缀.action可省略-->

    <constant name="struts.enable.DynamicMethodInvocation" value="true"/>

     

    package的使用:

    <!-- 

    在struts-default.xml中定义了一个package名为 struts-default 

    extends继承自struts-default 

    namespace:表示訪问时的url地址前缀 即訪问路径为:/appName/abc/xxx.action   .action能够省略

    -->

    <package name="test1" extends="struts-default" namespace="/abc"> <action/></package>


    3. package中的元素顺序为:

      result-types
      interceptors
      default-interceptor-ref
      default-action-ref
      default-class-ref
      global-results
      global-exception-mappings
      action*(全部action放到最后)

     不遵循该顺序会xml验证会报错


    4. action配置

    4.1 直接跳转

    <action name="forward">
        <result>/WEB-INF/test.jsp</result>
    </action>

        訪问地址:http://.../appName/forward.action     .action能够省略


    4.2 依据action-class的返回值进行跳转

      

    <!-- 
    class 是一个含有详细action方法的类。未指明method属性时。默认调用execute方法 -->
    <action name="TestAction" class="com.stone.action.MyAction">
    <!-- result 为方法的返回值 -->
        <result name="success">/WEB-INF/test.jsp</result>
    </action>

      訪问地址:http://.../appName/TestAction      运行com.stone.action.MyAction的 execute方法。返回值为success则跳转到对应页面


    4.3 指明action-class的method

        

    <!-- class 是一个含有详细action方法的类, 指定了方法 
    Struts2在依据action元素的method属性查找方法时有两种途径:
      1.查找与method属性值全然一致的方法.    方法名为methodAction
      2.查找doMethod()形式的方法           或方法名为doMethodAction
    -->
    <action name="methodAction"class="com.stone.action.MyAction" method="testMethod">
       <result name="test2">/WEB-INF/test2.jsp</result>
    </action>

       訪问地址:http://.../appName/methodAction    运行com.stone.action.MyAction的testMethod或者是doTestMethod方法,其返回值与result-name匹配


    4.4 不指明action-class的method。依据訪问的形式进行Action的动态方法调用

      须要先开启动态方法调用,即配置相关常量。

      

    <action name="testDynamic" class="com.stone.action.EditAction">
        <result name="add">/WEB-INF/edit_add.jsp</result>
        <result name="delete">/WEB-INF/edit_delete.jsp</result>
    </action>

      訪问地址:http://.../appName/testDynamic!add  运行com.stone.action.EditAction的add方法  

               若訪问地址为  .../testDynamic!delete 则运行EditAction的delete方法。


    4.5 通配符和占位符匹配 

    4.5.1  通配符* 表示随意字符

    <action name="edit*" class="com.stone.action.EditAction" method="add">
        <result name="add" type="redirect">http://www.baidu.com</result>
    </action>
      訪问地址:http://.../appName/edit后接随意字符 运行com.stone.action.EditAction的add方法

              方法返回add时,重定向到baidu


    4.5.2 通配符和占位符一起使用,class中有占位符

    <action name="news*" class="com.stone.action.News{1}Action">
         <result name="{1}" type="dispatcher">/WEB-INF/jsp/News_{1}.jsp</result>
    </action>
    {1}即表示第1个通配符*所代表的字符串  如有多个通配符 即 {1}  {2} {3} ...
       訪问地址:http://.../appName/newsAdd  运行com.stone.action.NewsAddAction的execute方法 

               方法返回Add时,跳转到/WEB-INF/jsp/News_Add.jsp

      注意:当前占位符放在class中时。可能会出现找不到class定义的情况,这时通过定义struts的全局异常处理

           也是没有作用的。

    由于全局异常处理,仅仅是处理action 中的异常。

           所以一般不要在class中使用占位符进行匹配


    4.5.3 通配符和占位符一起使用 method中有占位符

    <action name="book_*" class="com.stone.action.BookAction" method="{1}">
        <result name="{1}" type="dispatcher">/WEB-INF/jsp/book_{1}.jsp</result>
    </action>
       訪问地址:http://.../appName/book_add 运行com.stone.action.BookAction的add方法

               方法返回add时,跳转到/WEB-INF/jsp/book_add.jsp

      注:该action。假设訪问的是以book_开头。可是method訪问不到。 则适用action中出异常这样的情况,能够由struts捕获处理





    版权声明:本文博客原创文章,博客,未经同意,不得转载。

  • 相关阅读:
    理解HTTP协议
    节点操作,节点属性的操作及DOM event事件
    jQuery的属性,事件及操作
    jQuery中的选择器及筛选器
    javascipt中的DOM对象
    javascript中的BOM对象
    javascript中的Date对象和Math对象
    javascript中的字符串对象
    javascript基础
    CSS核心内容之浮动
  • 原文地址:https://www.cnblogs.com/lcchuguo/p/4734980.html
Copyright © 2011-2022 走看看