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
3.在struts.xml配置
<action name="order" class="cn.itcast.struts2.demo4.OrderAction"/>