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捕获处理

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

JavaEE SSH集成框架(两) struts2 本地加载dtd文件,action组态的更多相关文章

  1. Android 如何本地加载pdf文件

    大部分app打开pdf文件是通过intent调起手机中能打开pdf文件的工具,来查看pdf文件,如果需求是,用户在app内下载好pdf文件后,不通过第三方的工具,本地打开. 这样的需求要怎么实现呢?上 ...

  2. 两种动态加载JavaScript文件的方法

    两种动态加载JavaScript文件的方法 第一种便是利用ajax方式,第二种是,动静创建一个script标签,配置其src属性,经过把script标签拔出到页面head来加载js,感乐趣的网友可以看 ...

  3. iOS 本地加载js文件

    #import "RootViewController.h" @interface RootViewController ()<UIWebViewDelegate> @ ...

  4. struts2设置加载非默认路径的struts.xml文件解决方案

    方案一:   首先我们要明白struts2加载配置文件都是从它自己的jar包和\WEB-INF\classes两个默认的位置加载的,如果你想改变strusts2中的文件的默认加载路径,可以在web项目 ...

  5. 关于MATSIM中,如何关闭自动加载dtd的问题

    有用过MATSIM做交通仿真的朋友应该都知道,在创建Scenario时,会默认加载matsim官网的netword的dtd文件,然后因为网络的问题,加载往往会报错,从而造成系统异常退出,如图所示: 根 ...

  6. JavaEE互联网轻量级框架整合开发(书籍)阅读笔记(12):XML配置自动扫描包,自动加载*.properties文件

    一.XML和注解组合使用 前几篇的测试案例都是在Java类中配置,现在换一种使用方式,在XML中配置,使Spring IoC容器在启动之后自动去扫描配置的包路径,扫描加载指定路径下的propertie ...

  7. Yaf框架下类的自动加载

    前面两篇博客分别讲述了PHP自带的类加载和composer中类的自动加载,其实Yaf框架也实现了基于PSR0和PSR4的类的自动加载.根据我对Yaf下类的自动加载方式的理解写下这篇博客.由于接触Yaf ...

  8. c#两种方式调用google地球,调用COM API以及调用GEPLUGIN 与js交互,加载kml文件,dae文件。将二维高德地图覆盖到到三维谷歌地球表面。

    网络上资源很多不全面,自己在开发的时候走了不少弯路,在这里整理了最全面的google全套开发,COM交互,web端交互.封装好了各种模块功能. 直接就可以调用. 第一种方式:调用COMAPI实现调用g ...

  9. Tensorflow 2 Cifar10离线数据集手动下载、离线安装、本地加载、快速读取

    Tensorflow 2 Cifar10离线数据集手动下载.离线安装.本地加载.快速读取 商务合作,科技咨询,版权转让:向日葵,135-4855__4328,xiexiaokui#qq.com   查 ...

随机推荐

  1. Embedded Linux Primer----嵌入式Linux基础教程--前言

    APractical,Real-WorldApproach ChristopherHallinan 计算机无处不在. 事实上,当然了,对于那些大约在过去25年期间没有生活在洞穴中的人来说没有什么惊奇的 ...

  2. tasklet和workqueue的选择

    linux内核设计与实现page127中有个比較,内容比較多.概括一下就是1. tasklet不能休眠, 2. 不须要休眠tasklet效率更高 3.有休眠仅仅能workqueue (1)假设不须要休 ...

  3. WeText项目的服务端

    WeText项目的服务端 在<WeText项目:一个基于.NET实现的DDD.CQRS与微服务架构的演示案例>文章中,我介绍了自己用Visual Studio 2015(C# 6.0 wi ...

  4. 浏览器url传参中文时得到null的解决方法

    在写一个中文参数需求的时候遇到了以下问题,经过半天的测试和各种编码,以及网上一些有用没用的资料尝试终于解决    比如下面的url地址:http://travel.widget.baike.com:8 ...

  5. 【Gapps】安装GooglePlay引发一系列问题

    再次感谢小海的支持,感谢大家的支持! 从安装CM至如今GooglePlay,小海为我提供了非常多方案,能够说是全面支持.仅仅是出于隐私不便公开他的个人信息,仅提供一个他的博客地址http://luha ...

  6. java 调用mysql的存储过程(简单示例)

    首先我在mysql的test数据库里定义了一个student表: create table student4( id   int   primary key, sanme char(5) ); 插入几 ...

  7. 每个线程分配一个stack,每个进程分配一个heap;heap没有结构,因此寻址慢(转)

    学习编程的时候,经常会看到stack这个词,它的中文名字叫做"栈". 理解这个概念,对于理解程序的运行至关重要.容易混淆的是,这个词其实有三种含义,适用于不同的场合,必须加以区分. ...

  8. Java调用摄像头截图

    使用webcam-capture替换JMF调用摄像头 最近有个需要通过java调用摄像头,并截图的需求,在网上找了下资料,大部分是用一个叫jmf的库,但是jmf已经几百年没有更新,用起来各种问题.后来 ...

  9. C 一个字符串有三段,第一段原样输出,第二段为要输出字符串的长度,第三段为依据第二段长度补齐第一段

    C 一个字符串有三段,第一段原样输出.第二段为要输出字符串的长度,第三段为依据第二段长度补齐第一段 比如:输入abc 11 12.输出abc12121212 #include<stdio.h&g ...

  10. devstack安装使用openstack常见问题与解决的方法

    声明: 本博客欢迎转发,但请保留原作者信息! 博客地址:http://blog.csdn.net/halcyonbaby 内容系本人学习.研究和总结.如有雷同,实属荣幸! 安装执行create-sta ...