【转-整理】Struts2中package,action,result,method配置详解
1 <?xml version="1.0" encoding="UTF-8"?> 2 <!DOCTYPE struts PUBLIC 3 "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN" 4 "http://struts.apache.org/dtds/struts-2.3.dtd"> 5 <struts> 6 <!-- /primer/helloWorldAction.action 7 package:包 8 * name:包名,唯一的,必选项 9 * namespace:命名空间,唯一的,相当于房间号。可选项,省略情况下是"/"。页面中请求连接的前半部分 10 * extends:继承 11 * extends="struts-default":struts2框架底层提供的核心包struts2-core-2.3.3.jar下的struts-default.xml文件 12 * 为什么要继承这个struts-default.xml文件? 13 * 因为struts2框架底层提供的struts-default.xml声明了所有的拦截器和拦截器栈, 14 知道在struts2框架运行时执行struts-default.xml文件中的拦截器栈。 15 * 如果不继承struts-default.xml文件,就没有办法使用struts2框架提供的所有拦截器 16 --> 17 <package name="primer" namespace="/primer" extends="struts-default"> 18 19 <!-- 20 如果找不到对应的action名的时候,配置默认要执行的action 21 * name:指定action的名称 22 --> 23 <default-action-ref name="helloWorldAction" /> 24 25 <!-- 26 action: 27 * name:对应页面中请求连接的后面半部分 28 * class:对应要执行的类的完整路径 29 --> 30 <action name="helloWorldAction" class="cn.yht.primer.HelloWorldAction"> 31 <!-- 32 result:结果类型 33 * name:对应的是执行的类的方法的返回值 34 public String execute() throws Exception { 35 System.out.println("HelloWorldAction ************* execute()"); 36 return "success"; 37 } 38 * 后半部分的文本内容:要转向到的页面 39 --> 40 <result name="success">/primer/success.jsp</result> 41 </action> 42 <!-- 43 没有为action指定class 44 * 在struts2框架底层的struts-default.xml文件中,配置了默认执行的类 45 com.opensymphony.xwork2.ActionSupport 46 public String execute() throws Exception { 47 return SUCCESS; 48 } 49 * 实际上,默认执行的是底层提供的ActionSupport类的execute()方法 50 * result结果类型,默认是根据struts2框架底层提供的ActionSupport类的execute()方法返回值,进行跳转 51 --> 52 <action name="actionNoClass"> 53 <result name="success">/primer/success.jsp</result> 54 </action> 55 </package> 56 </struts>
为Action配置method属性:
将Action类中的每一个处理方法都定义成一个逻辑Action方法。
1 <!DOCTYPE struts PUBLIC 2 3 "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" 4 5 "http://struts.apache.org/dtds/struts-2.0.dtd"> 6 7 <struts> 8 9 <package name="my" extends="struts-default" namespace="/manage"> 10 11 <action name="userLogin" class="org.qiujy.web.struts2.action.LoginAction" method="login"> 12 13 <result name="success">/success.jsp</result> 14 15 <result name="error">/error.jsp</result> 16 17 </action> 18 19 20 21 <action name="userRegist" class="org.qiujy.web.struts2.action.LoginAction" method="regist"> 22 23 <result name="success">/success.jsp</result> 24 25 <result name="error">/error.jsp</result> 26 27 </action> 28 29 </package> 30 31 </struts>
如上,把LoginAction中的login和regist方法都配置成逻辑Action。要调用login方法,则相应的把index.jsp中表单元素的action设置为"manage/userLogin.action";要调用regist方法,把regist.jsp中表单元素的action设置为"manage/userRegist.action"。
3.3. 使用通配符映射(wildcard mappings)方式:
在struts.xml文件中配置<action…>元素时,它的name、class、method属性都可支持通配符,这种通配符的方式是另一种形式的动态方法调用。
当我们使用通配符定义Action的name属性时,相当于用一个元素action定义了多个逻辑Action:
<action name="user_*"class="org.qiujy.web.struts2.action.UserAction" method="{1}"><result name="success">/success.jsp</result><result name="error">/error.jsp</result></action>{1}为配置参数,意思为如: user_*时,则执行时,使用的是方法*, user_a时,则执行时,使用的是方法a。
如上,<action name=”user_*”>定义一系列请求URL是user_*.action模式的逻辑Action。同时method属性值为一个表达式{1},表示它的值是name属性值中第一个*的值。例如:用户请求URL为user_login.action时,将调用到UserAction类的login方法;用户请求URL为user_regist.action时,将调用到UserAction类的regist方法。
4. 处理结果
Struts2的Action处理完用户请求后,将返回一个普通字符串,整个普通字符串就是一个逻辑视图名。Struts2通过配置逻辑视图名和物理视图资源之间的映射关系,一旦系统收到Action返回的某个逻辑视图名,系统就会把对应的物理视图资源呈现给浏览者。
4.1. 配置处理结果:
Struts2的Action处理用户请求结束后,返回一个普通字符串-逻辑视图名,必须在struts.xml文件中完成逻辑视图和物理视图资源的映射,才可让系统转到实际的视图资源。
Struts2通过在struts.xml文件中使用<result …/>元素来配置结果。Struts2提供了两种结果。
l 局部结果:将<result …/>作为<action …>元素的子元素配置。
l 全局结果:将<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(global-results)有很多时候一个<result>可供很多<action>使用,这时可以使用<global-results>标签来定义全局的<result>l。执行顺序:当一个Action返回的String没有相应的<result>与之对应,Struts2就会查找全局的<result>。
转载于:https://www.cnblogs.com/Nouno/p/5683447.html
【转-整理】Struts2中package,action,result,method配置详解相关推荐
- Struts2中 Result类型配置详解
一个result代表了一个可能的输出.当Action类的方法执行完成时,它返回一个字符串类型的结果码,框架根据这个结果码选择对应的result,向用户输出. 在com.opensymphony.xwo ...
- Vue-cli中 vue.config.js 的配置详解
1. Vue-cli2 升级到 Vue-cli3+ 1.1 卸载旧版本 Vue CLI 的包名称由 vue-cli 改成了 @vue/cli. 如果你已经全局安装了旧版本的 vue-cli (1.x ...
- VScode 插件中 package.json 文件 activationEvents 字段详解
一.activationEvents 插件在 VScode 中默认是没有激活的,通过 activationEvents 来进行配置: onLanguage:${language} onCommand: ...
- AndroidStudio安卓原生开发_Activity_中Activity显示/隐式启动Action和Category配置详解---Android原生开发工作笔记84
- Linux中的cron计划任务配置详解
cron来源于希腊单词chronos(意为"时间"),指Linux系统下一个自动执行指定任务的程序(计划任务) ####1. crontab命令选项 代码如下: #crontab ...
- nginx服务器查看日志文件,nginx服务器中access_log日志分析与配置详解
前言 nginx的log日志分为:access log 和 error log 其中access log 记录了哪些用户,哪些页面以及用户浏览器.ip和其他的访问信息 error log 则是记录服务 ...
- vscode中setting.json配置详解
vscode中的setting.json配置文件配置详解 话不多说上配置文件 大家按需复制到自己的setting.json配置文件中即可 [{// 控制是否在编辑器中显示 CodeLens." ...
- Struts2中的action类
Struts2中的action类 action类在Struts2中承担了Model(模型)的角色,主要用于处理业务逻辑并存放HTTP请求处理过程中各个变量的值. 在Struts2里面,Action充当 ...
- Struts2中的Action
多数的MVC框架中的Control层,都是一个Java对象.按照惯例,我们通常会把这个层次上面的Java对象统称为Action层.本篇文章,我们就来简单介绍一下Struts2中Action的相关内容. ...
- shell181网格划分_【2017年整理】ANSYS中SHELL181单元理解和参数详解.docx
[2017年整理]ANSYS中SHELL181单元理解和参数详解 ANSYS中SHELL181单元参数详解 SHELL181单元说明: SHELL181单元适合对薄的到具有一定厚度的壳体结构进行分析. ...
最新文章
- mysql的安装胚子_Mysql安装
- 浅析商城网站建设需要注意哪些细节内容呢?
- 本地连接出来的很慢解决方法
- 类C编译器 C代码实现
- 【pytorch】pytorch自定义训练vgg16和测试数据集 微调resnet18全连接层
- boost::detail::yield相关的测试程序
- cmd长ping记录日志和时间_Gin 框架系列 — 路由中间件:日志记录
- NYOJ - 78 圈水池 【凸包】
- 爬虫-11-伪造电脑访问构建一个请求头
- Trie 树内存消耗问题
- linux配置路径PATH问题
- 如何在苹果Mac上的多个空间中工作?
- Android转场动画深度解析(3)
- 不同产品类型、不同应用、产能、产量、销量、需求量及销售收入-外置固态硬盘
- java无法找到加载主类是什么意思,在Java程序运行时遇到的“Could not find or load main class(无法找到或者加载主类)”是什么意思?...
- 经典鸡兔同笼同类型问题
- Nature Aging | 复旦大学冯建峰/程炜揭示每晚睡7小时刚刚好,睡过多或过少都有损大脑和心理健康...
- ssl.SSLCertVerificationError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed问题解决
- hive谓词与cbo的一些奇葩事
- 博弈游戏之三大博弈---bashWythoffNimm
热门文章
- 如果你没去 GDD,那可真是一种遗憾!
- c 语言 二进制 十进制,C 语言实例 – 二进制与十进制相互转换 - C 语言基础教程...
- XTU 2016上学期《程序设计实践》练习-1 题解
- 制作验证码使用到的函数
- Top的VIRT是什么
- EGS5在linux系统下安装过程
- 动画演示 Delphi 2007 IDE 功能[6] - 快速查看 Delphi 所有的核心数据类型
- iOS C++ 关于深度学习(机器学习) (一)学习概览
- k8s踩坑记第2篇--3个IP折磨人的故事
- 读Zepto源码之Callbacks模块