博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
10.Action中的method属性
阅读量:6658 次
发布时间:2019-06-25

本文共 2703 字,大约阅读时间需要 9 分钟。

转自:https://wenku.baidu.com/view/84fa86ae360cba1aa911da02.html

在struts1.x中我们知道通过继承DispatchAction可以实现把多个Action进行统一操作,在struts2中实现action的统一操作也很简单。我们以crud操作为例,把crud集中到一个Action中。

步骤一、建立CRUDAction,内容如下:
package com.asm;

import com.opensymphony.xwork2.ActionSupport;

public class CRUDAction extends ActionSupport {

       public String add() {

              return "success";

       }

       public String del() {

              return "success";

       }

       public String update() {

              return "success";

       }

       public String query() {

              return "success";

       }

}

步骤二、配置此Action,为了清晰明了,专为此Action,建立一个配置文件crud.xml,主要内容如下:

<struts>

       <package name="crud" extends="struts-default" namespace="/crud">

              <action name="add" class="com.asm.CRUDAction" method="add">

                     <result name="success">/crud/addSuccess.jsp</result>

              </action>

              <action name="del" class="com.asm.CRUDAction" method="del">

                     <result name="success">/crud/delSuccess.jsp</result>

              </action>

              <action name="update" class="com.asm.CRUDAction" method="update">

                     <result name="success">/crud/updateSuccess.jsp</result>

              </action>

              <action name="query" class="com.asm.CRUDAction" method="query">

                     <result name="success">/crud/querySuccess.jsp</result>

              </action>

       </package>

</struts>

分析:上面的method方法的值来源于CRUDAction中方法的名字,这样当我们访问上面的每一个Action时,它实质是和method指定的方法关联上。

步骤三、把crud.xml配置文件并入struts.xml中,只需增加如下代码:

<include file="jack.xml"></include>

步骤四、编写相应的jsp页面,在此略去crud文件夹下的四个跳转jsp页面(addSuccess.jsp等),重点是crud.jsp页面。内容如下:

<html>

<%

       String path=request.getContextPath();

%>

       <body>

              <a href="<%=path %>/crud/add.action">添加数据</a><br>

              <a href="<%=path %>/crud/del.action">删除数据</a><br>

              <a href="<%=path %>/crud/query.action">查询数据</a><br>

              <a href="<%=path %>/crud/update.action">修改数据</a><br>

       </body>

</html>

步骤五、发布测试。
补充扩展,动态调用DMI不使用method实现统一.我们在crud.xml中增加如下内容:
<action name="op" class="com.asm.CRUDAction">

                     <result name="success">/crud/op.jsp</result>

</action>

然后再在crud.jsp中定义如下链接:

<a href="<%=path %>/crud/op!add.action">添加数据</a><br>

<a href="<%=path %>/crud/op!del.action">删除数据</a><br>

<a href="<%=path %>/crud/op!query.action">查询数据</a><br>

<a href="<%=path %>/crud/op!update.action">修改数据</a><br>

注意查看上面的链接地址,它们都是针对op action,然后再加地上“!+CRUDAction中相应的方法名”,最后再写上.action即可以访问到统一页面op.jsp。这样做虽然能减少页面,但是由于它们实质用到的是同一个Action,所以这就意味着我们要使用的拦截器相同,相同的跳转result。实际中这种方式很少使用,在此略作了解。如果不想使用动态方法调用,我们可以通过常量来关闭,即在struts.xml中增加如下配置:

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

扩展2:在CRUDAction中使用do。举例:我们在CRUDAction中增加一个新的方法,内容如下:

       public String doMain(){

              return "success";

       }

然后再在在crud.xml中增加如下内容:

<action name="main" class="com.asm.CRUDAction" method="main">

                     <result name="success">/crud/main.jsp</result>

</action>

注意:配置中method属性值是doMain中去掉do后M小写。然后再在crud.jsp中增加如下链接:
<a href="<%=path %>/crud/main.action">main页面</a><br>

随后便可以访问到.../crud/main.jsp页面了。

转载地址:http://zgqto.baihongyu.com/

你可能感兴趣的文章
zabbix 监控nginx
查看>>
一些漂亮的界面设计。
查看>>
tomcat源码分析-Container初始化与加载
查看>>
LNMP源码安装(RHEL)
查看>>
不用“维护计划”实现mssql定期备份并压缩存档
查看>>
N-Queens LeetCode OJ
查看>>
尝试自己的Perl语言的包 TCP协议的再包装起到类似python语言装饰器的效果
查看>>
【centos】 error: command 'gcc' failed with exit status 1
查看>>
Oracle用户权限视图的相关信息
查看>>
saltstack(二)target
查看>>
我的友情链接
查看>>
一个开源「知乎日报」Android 客户端
查看>>
Java8 - Lambda表达式
查看>>
protobuf实例-PHP版
查看>>
Python 常用模块
查看>>
PL/SQL Developer 访问远程数据库(本机不包含oracle客户端)
查看>>
3.成员变量标准访问方法的实现(@property和@synthysize)
查看>>
SpringMVC的第一个入门案例
查看>>
Logstash使用介绍
查看>>
亿级商品详情页架构演进技术解密 | 高可用架构系列
查看>>