action 方法的访问

时间:2022-11-29 22:32:51

Action中的方法的访问:

访问Action的中的方法,默认情况下只能访问execute方法.那么多次请求就不能提交到一个Action.能不能一个模块的多次请求提交到一个Action中?

* 需要使用<action>标签中一个属性method:

<action name="book_add" class="cn.itcast.struts2.demo4.BookAction" method="add"/>

<action name="book_mod" class="cn.itcast.struts2.demo4.BookAction" method="mod"/>

<action name="book_del" class="cn.itcast.struts2.demo4.BookAction" method="del"/>

<action name="book_find" class="cn.itcast.struts2.demo4.BookAction" method="find"/>

* 编写Action的时候:

public class BookAction extends ActionSupport{

public String add() throws Exception {

System.out.println("添加图书...");

return NONE;

}

public String mod() throws Exception {

System.out.println("修改图书...");

return NONE;

}

public String del() throws Exception {

System.out.println("删除图书...");

return NONE;

}

public String find() throws Exception {

System.out.println("查询图书...");

return NONE;

}

}

***** 采用通配符的配置:

* 不使用通配符在配置Action的时候 需要配置很多次.使用了通配符的话,只配置一个就OK.

* 条件:

* 访问的路径和方法名存在某种关系就可以使用.

页面:

<h1>客户管理</h1>

<a href="${ pageContext.request.contextPath }/user_add.action">添加客户</a>

<a href="${ pageContext.request.contextPath }/user_mod.action">修改客户</a>

<a href="${ pageContext.request.contextPath }/user_del.action">删除客户</a>

<a href="${ pageContext.request.contextPath }/user_find.action">查询客户</a>

配置Action:

<action name="user_*" class="cn.itcast.struts2.demo4.UserAction" method="{1}"/>

*号代表是任意字符.{1}代表通配符中的第一个*号所代表的内容.

动态方法访问:

1.开启一个常量:

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

2.在页面中编写路径:

<a href="${ pageContext.request.contextPath }/order!add.action">添加订单</a>

<a href="${ pageContext.request.contextPath }/order!mod.action">修改订单</a>

<a href="${ pageContext.request.contextPath }/order!del.action">删除订单</a>

<a href="${ pageContext.request.contextPath }/order!find.action">查询订单</a>

***** 写法:  action的name!方法名.action

action 方法的访问

3.在struts.xml配置

<action name="order" class="cn.itcast.struts2.demo4.OrderAction"/>