Action中动态方法的调用
动态方法调用(Dynamic Method Invocation,DMI)
标识符:!
一、通过以下选中的文件来查看是否禁止调用动态方法
二、在我们自定义的action类中,我们不再单一的继承来自父类的方法,我们可以自定义自己的方法
1 package cn.jbit.booklist; 2 3 import com.opensymphony.xwork2.ActionSupport; 4 5 public class BookList extends ActionSupport { 6 @Override 7 public String execute() throws Exception { 8 System.out.println("booklist==========execute"); 9 return SUCCESS;10 }11 12 public String edit() throws Exception {13 System.out.println("booklist==========edit");14 return "edit";15 }16 17 public String list() throws Exception {18 System.out.println("booklist==========list");19 return "list";20 }21 22 }
三、配置我们抽离出来的booklist.xml
1 2 56 7 8 9 2510 14 15/WEB-INF/myinter/list.jsp 11/WEB-INF/myinter/login.jsp 12 1316 18 19 20/WEB-INF/myinter/edit.jsp 1721 23 24/WEB-INF/myinter/list.jsp 22
四、将抽离出来的booklist.xml被struts.xml引用
1 2 56 7 8 9 10 11 27 2812 1913 14 15 1816 17 20 21 22 23 25 26/WEB-INF/myinter/login.jsp 2429 30
Action中通配符的使用
1 package cn.jbit.action; 2 3 import com.opensymphony.xwork2.ActionSupport; 4 5 public class BookAction extends ActionSupport{ 6 7 /** 8 * 添加 9 * */10 public String add() throws Exception{11 System.out.println("add");12 return "add";13 }14 15 /**16 * 修改17 * */18 public String update() throws Exception{19 System.out.println("update");20 return "update";21 }22 23 /**24 * 查询25 * */26 public String list() throws Exception{27 System.out.println("list");28 return "list";29 }30 31 }
1 package cn.jbit.action; 2 3 import com.opensymphony.xwork2.ActionSupport; 4 5 public class UserAction extends ActionSupport{ 6 7 /** 8 * 添加 9 * */10 public String add() throws Exception{11 System.out.println("add");12 return "add";13 }14 15 /**16 * 修改17 * */18 public String update() throws Exception{19 System.out.println("update");20 return "update";21 }22 23 /**24 * 查询25 * */26 public String list() throws Exception{27 System.out.println("list");28 return "list";29 }30 31 }
在地址栏输入
Result的配置
默认情况下是转发
下面我们来一道测试
1 2 56 7 8 9 10 11 21 2212 15 16/User/list.jsp 13/User/update.jsp 1417 19 20/Book/add.jsp 18
1 package cn.jbit.action; 2 3 import javax.servlet.http.HttpServletRequest; 4 5 import org.apache.struts2.ServletActionContext; 6 7 import com.opensymphony.xwork2.ActionSupport; 8 9 public class UserAction extends ActionSupport{10 11 /**12 * 添加13 * */14 public String add() throws Exception{15 System.out.println("add");16 return "add";17 }18 19 /**20 * 修改21 * */22 public String update() throws Exception{23 System.out.println("update");24 return "update";25 }26 27 /**28 * 查询29 * */30 public String list() throws Exception{31 System.out.println("list");32 HttpServletRequest request = ServletActionContext.getRequest();33 request.setAttribute("uname", "我是转发,我可以携带数据");34 35 return "list";36 }37 38 }
在地址栏中输入请求地址
重定向到视图页面我们就不做展示,下面我们直接介绍重定向到一个action地址
在地址栏请求
再来说转发到一个action