第一篇:struts2 从一个action 跳转到另一个action的两种方法(本站推荐)
从action1直接跳转到action2,有两种方法:
1.需要保存前一个action的属性信息时使用,保存住action1的request对象:
Struts.xml
Java代码
1.
2. 3. 7.
[java] view plain copy
print?
1. 2.
3. 7.
action1
Java代码
1.public class StrAction1 {
2.String a =“liminhappygirl”;3.public String getA(){ 4.return a;
5.}
6.public void setA(String a){ 7.this.a = a;8.}
9.public String sa1(){
10.HttpServletRequest request =(HttpServletRequest)ActionContext.getContext().get(ServletActionContext.HTTP_REQUEST);11.request.setAttribute(“limin”, “happygirl”);12.System.out.println(“sal已经执行”);13.return “sa2”;14.} 15.16.}
[java] view plain copy
print?
1.public class StrAction1 {
2.String a =“liminhappygirl”;3.public String getA(){ 4.return a;5.}
6.public void setA(String a){ 7.this.a = a;8.}
9.public String sa1(){
10.HttpServletRequest request =(HttpServletRequest)ActionContext.getContext().get(ServletActionContext.HTTP_REQUEST);11.request.setAttribute(“limin”, “happygirl”);12.System.out.println(“sal已经执行”);13.return “sa2”;14.} 15.16.}
action2
Java代码
1.public class StrAction2 { 2.public String sa2(){
3.HttpServletRequest request =(HttpServletRequest)ActionContext.getContext().get(ServletActionContext.HTTP_REQUEST);4.//当type=“chain” 时能保存住request对象
5.System.out.println(request.getAttribute(“limin”));6.return Action.SUCCESS;7.} 8.}
[java] view plain copy
print?
1.public class StrAction2 {
2.public String sa2(){
3.HttpServletRequest request =(HttpServletRequest)ActionContext.getContext().get(ServletActionContext.HTTP_REQUEST);4.//当type=“chain” 时能保存住request对象
5.System.out.println(request.getAttribute(“limin”));6.return Action.SUCCESS;7.} 8.}
第二篇:Struts2一个Action内包含多个请求处理方法
Struts2一个Action内包含多个请求处理方法
Struts2一个Action内包含多个请求处理方法的处理,method的使用方法,struts2中的路径问题,通配符映射
struts2的关于method=“{1}“意思详解
====== name= ”Login_* “ 代表这个action处理所有以Login_开头的请求 method= ”{1} “ 根据前面请求Login_methodname,调用action中的以methodname命名的方法 class= ”mailreader2.Login “ action的类名称
如jsp文件中请求Login_validateUser的action名称,根据上面配置,调用action类mailreader2.Login类中方法validateUser()又如:
对于Login_update请求,将会调用mailreader2.Login的update()方法。它的用法同webwork中的!符号的作用,相当于是一个通配符。
+++++++++++++++++++++++++++++++++++++++++++++++++++++++
Struts2 学习笔记4--Action Method--接收参数 文章分类:Java编程 struts2中的路径问题
注意:在jsp中”/”表示tomcat服务器的根目录,在struts.xml配置文件中”/”表示webapp的根路径,即MyEclipse web项目中的WebRoot路径。总结:
struts2中的路径问题是根据action的路径而不是jsp路径来确定,所以尽量不要使用相对路径。
虽然可以用redirect方式解决,但redirect方式并非必要。
解决办法非常简单,统一使用绝对路径。(在jsp中用request.getContextRoot方式来拿到webapp的路径)
或者使用myeclipse经常用的,指定basePath。Action Method 配置:
Action执行的时候并不一定要执行execute方法
1、可以在配置文件中配置Action的时候用method=来指定执行哪个方法(前者方法)
2、也可以在url地址中动态指定(动态方法调用DMI)(推荐)(后者方法)/user/userAdd“>添加用户
/user/user!add“>添加用户
前者会产生太多的action,所以不推荐使用。(注:<% String context = request.getContextPath();%>)再给个案例,大概介绍!使用动态调用DMI的方法,即通过!+方法名的指定方法: UserAction.java import com.opensymphony.xwork2.ActionContext;import java.util.Map;public class UserAction { private String userName;private String password;
public String getUserName(){ return userName;} public void setUserName(String userName){ this.userName = userName;} public String getPassword(){ return password;} public void setPassword(String password){ this.password = password;} public String execute(){ if(!userName.equals(”aa“)||!password.equals(”aa“)){ return ”error“;}else{ Map session=(Map)ActionContext.getContext().getSession();session.put(”userName“, userName);return ”success“;} }
public String loginOther(){ if(!userName.equals(”bb“)||!password.equals(”bb“)){ return ”error“;}else{ Map session=(Map)ActionContext.getContext().getSession();session.put(”userName“, userName);return ”success“;} } }
struts.xml
login_welcome.jsp <%@ page language=”java“ import=”java.util.*“ pageEncoding=”utf-8“%> <%@ taglib uri=”/struts-tags“ prefix=”s“ %>