【strust2】Action的配置
来源:互联网 发布:算法导论吧 编辑:程序博客网 时间:2024/06/07 10:09
Action只是一个逻辑控制器,它并不生成任何响应,因此,Action处理完用户请求后,Action需要将指定的视图资源呈现给用户,因此配置Action时需要配置逻辑视图和物理视图之间的的对应关系.下面就是一个Action配置片段
<package name="tgb" extends="struts-default"><action name="Action" class="tgb.action.Action" ><result name="input">/login.jsp</result><result name="error">/error.jsp</result><result name="success">/success.jsp</result> </action></package>
在同一个表单中我们可能会遇到这样的一个问题,同一个表单中不同的按钮需要Action的不同方法来处理,但是我们知道一个表单的提交只会提交到一个Action中.面对这种情况我们可以使用动态方法调用,让一个Action包含多个处理逻辑,这便是动态方法调用,下面我们就来看看Action是如何实现动态方法调用的.
制定method
动态方法调用是指表单元素的Action并不是直接等于某个Action,而是以如下形式来指定表单的action属性.
<!--action属性为actionName!methodName的形式,其中ActionName指定提交到那个Action,而methodName指定提交到指定的方法-->action="ActionName!methodName"
除了使用上面的方法,我们还可以使用method属性来让Action调用指定的方法.而不是使用默认的execute方法来处理用户请求
<!-- 定义url为login时,处理请求的为loginAction中的login方法--><action name="login" class="tgb.action.LoginAction" method="login"></action>
使用通配符
在Action的配置中,我们有时会发现很多的Action在配置时其实配置文件基本上是相同的,可见这样就非常的冗余,为了解决这个问题,struts2提供了另一种形式的动态方法调用:通配符。
在配置<action.../>元素时,允许在指定name属性时使用模式字符串(即用“*”代表一个或多个任意字符),接下来就可以在Class、method属性及<rresult.../>中使用{N}来代表第N个星号(*)所匹配的字串。
<struts><package name="tgb" extends="struts-default"><action name="*Action" class="tgb.action.LoginRegistAction" method="{1}"><result name="input">/login.jsp</result><result name="error">/error.jsp</result><result name="success">/success.jsp</result> </action></package></struts>在上面的Action配置中,如果我们的请求地址为LoginAction,则说明 星号代替的是字符Login,所以{1}处的属性值为Login,也由此说明该请求将使用LoginRegistAction中的Login方法处理该请求。
请求的判断
当我们使用通配符来配置Action的时候,可以会出现用户请求的URL同时匹配多个Action,这个时候要用那个Action来处理用户请求呢?
假设有URL为abcAction.action的请求,在struts.xml中配置了如下三个Action,name值为abcAction、*Action、*,这个请求将用abcAction来请求。如果请求地址为defAction,则按先后顺序来决定那个Action来处理用户请求。
配置默认Action和默认Action处理类
当用户请求找不到对应的Action时,可以通过<default-action-ref.../>使用默认的Action即将处理用户请求,该元素包含一个name属性,该属性指向容器中另一个有效的Action,该Action将成为默认的Action
下面配置了一个默认的Action,
<package name="tgb" ><!--配置一个默认的Action,--><default-action-ref name="Action"/><action name="Action" class="tgb.action.Action" ><result name="input">/login.jsp</result><result name="error">/error.jsp</result><result name="success">/success.jsp</result> </action></package>
同样的道理,我们也可以配置默认的Action的默认处理类,配置Action的默认处理类使用<default-class-ref.../>配置时只需指定一个class属性,该Action属性指定的类就是Action的默认处理类。
<package name="tgb" ><!--配置一个默认的Action处理类,--><default-class-ref class="tgb.action.ActionSupport"/></package>
通过上面的总结,我们可以看到Action的配置其实很简单的,我们只需要在struts.xml文件中配置action标签的几个属性,struts2就可以帮助我们处理我们的请求。
- 【strust2】Action的配置
- strust2配置action的完整过程
- strust2 Action scope属性 配置
- Strust2 的result配置
- strust2 action之间的传值
- Strust2+JSON的配置详解
- Strust2配置
- strust2 action跳转问题
- Strust2 Action设置的session如何在porlet获取
- 由Strust2 action执行两次发现的问题
- redirectAction新旧版配置的区别-Strust2
- Strust2 constant 配置
- 日常小结-strust2配置
- strust2 配置讲解
- strust2 配置和学习
- 整合strust2和spring的关键点(为action注入service)
- strust2的“No result defined for action cn.xx.xxxAction and result input”错误
- 页面传输Json对象至Action(Strust2)
- 总结9
- java ftp 断点下载,异常重连
- 比特币、区块链技术和应用DECENT
- HIbernate原生sql查询简单案例
- Codeforces 724C Ray Tracing
- 【strust2】Action的配置
- Android系统getprop、dumpsys等相关命令的理解
- mysql-5.7.15-winx64免安装版使用方法
- 算法——希尔排序
- PHP读取文本文档,文档内容以空格为分界符。
- Android Studio 设置签名。
- 直方图基础
- AngularJS(一)理论篇
- C# 高级编程——Func 委托