您的位置:首页 > 编程语言 > Java开发

struts2-通配符和动态方法调用

2013-05-15 00:43 274 查看
通配符举例--BookAction

public class BookAction extends ActionSupport {

public String execute() throws Exception {
System.out.println("BookAction ********** execute()");
return null;
}
/*
* 显示图书添加页面
*/
public String add(){
System.out.println("显示图书添加页面");
return "add";
}
}


通配符举例--struts-pattern.xml

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

<!-- method:指定执行调用action中的方法,如果不加该属性,默认调用action中的execute()方法 -->

<action name="BookAction" class="cn.itcast.pattern.BookAction" method="add">
<result name="add">/pattern/BookAction.jsp</result>
</action>
</package>
</struts>


通配符举例—BookAction如何自定义方法

在action中增加新的方法的要求:

• 方法最好要用public修饰
• 方法的名称自定义
• 方法没有参数
• 方法的返回值为String

要定义的方法就是与execute方法的方法名称不同,其他的都一样,只有这样的定义方法struts2才识别

通配符映射

  













动态方法调用-这种方式不常用

•动态方法调用: 通过 url 动态调用 Action 中的方法
  如果Action中存在多个方法时,我们可以使用!+方法名调用指定方法

默认情况下, Struts 的动态方法调用处于激活状态, 若想禁用该功能, 则可以在 struts.xml 文件中添加如下 constant 元素:
  <constant name="struts.enable.DynamicMethodInvocation" value="false"/>

  Jsp页面的代码:

动态方法调用!形式:<br>
<a href="${pageContext.request.contextPath}/pattern/BookAction!add.action">图书添加</a><br>
<a href="${pageContext.request.contextPath}/pattern/BookAction!delete.action">图书删除</a><br>


Action代码:

import com.opensymphony.xwork2.ActionSupport;

@SuppressWarnings("serial")
public class BookAction extends ActionSupport {
public String add(){
System.out.println("BookAction...add()");
return "add";
}
public String delete(){
System.out.println("BookAction...delete()");
return "success";
}
}


  Action配置:

<action name="BookAction" class="cn.zengfansheng.struts.pattern.BookAction">
<result name="add">/pattern/BookAction.jsp</result>
<result name="success">/pattern/success.jsp</result>
</action>


使用通配符定义action-相对于动态方法调用,开发中比较常用这种方式调用action中的方法

  jsp页面代码:

动态方法调用!形式:<br>
<a href="${pageContext.request.contextPath}/pattern/BookAction!add.action">图书添加</a><br>
<a href="${pageContext.request.contextPath}/pattern/BookAction!delete.action">图书删除</a><br>


  Action配置:

<action name="*_*" class="cn.zengfansheng.struts.pattern.{1}" method="{2}">
<result name="add">/pattern/{1}.jsp</result>
<result name="success">
<param name="location">/pattern/success.jsp</param>
</result>
</action>


全局结果

  当多个action中都使用到了相同result,这时我们应该把result定义为全局结果

<package ....>
<global-results>
<result name="message">/message.jsp</result>
</global-results>
</package>


  注:局部的会覆盖全局-但全局和局部同时存在时,局部的会覆盖全局的。

全局结果和局部结果的区别:
  * 全局结果:对该包下所有的action配置起作用
  * 局部结果:只对当前的action起作用

  Struts2中 应用范围内action的实例,每个请求都会创建一个action实例-也就是对于每一个请求都会new一个Action对象。刷新或者回车
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: