Struts2接收页面传递的参数

1.第一种方法,通过属性驱动的方式获取页面传递的参数。这里需要注意的是Action的属性名称需要与页面的参数名称保持一致。
Action示例代码:

public class LoginOneAction {
    
    
	
	private String userName;
	private String password;
	
	public String login(){
    
    
		System.out.println("userName="+userName);
		System.out.println("password="+password);
		if (userName.equals(password)) {
    
    
			return "success";
		}
		return "fail";
	}
	
	
	//=======setter AND getter方法==========
	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;
	}
}

在struts.xml配置中配置LoginOneAction,示例代码:

<package name="user-login" namespace="/userLogin" extends="struts-default">
	<!-- action name请求的Action名称 class Action处理类对应具体路径 -->
	<!-- method 指定默认的方法名,如果不指定就是execute方法 -->
	<action name="loginOneAction" class="com.gx.web.LoginOneAction">
		<result name="success" type="dispatcher">/jsp/successOne.jsp</result>
		<result name="fail">/jsp/fail.jsp</result>
	</action>
</package>

jsp页面代码(Action的属性名称需要与页面的参数名称保持一致):

<body>
   <form action="${ctx}/userLogin/loginOneAction!login.action" method="get">
	  	userName:<input type="text" name="userName">
	  	<br>
	  	password:<input type="password" name="password">
	  	<br>
	  	<button type="submit">登录</button>    	
   </form>
 </body>

2.第二种方法,与前面第一种方法相似,属性驱动还可以通过JavaBean的方式来获取页面传递的参数。首先需要封装对象,将页面参数封装到一个模型对象中,示例代码:

public class User implements Serializable{
    
    
	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	
	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;
	}
}

在Action中第一模型对象的属性,并写一个get和set方法,示例代码:

public class LoginTwoAction {
    
    
	private User user;
	
	//登录action方法
	public String login(){
    
    
		if (user.getUserName().equals(user.getPassword())) {
    
    
			return "success";
		}
		return "fail";
	}
	
	//======getter and  setter方法========
	public User getUser() {
    
    
		return user;
	}

	public void setUser(User user) {
    
    
		this.user = user;
	}
}

在struts.xml配置中配置LoginTwoAction,示例代码:

<package name="user-login" namespace="/userLogin" extends="struts-default">
	<action name="loginTwoAction" class="com.gx.web.LoginTwoAction">
		<result name="success">/jsp/successTwo.jsp</result>
		<result name="fail">/jsp/fail.jsp</result>
	</action>
</package>

Jsp页面的参数名称的写法与第一种方法不同,使用的是ognl表达式,示例代码:

<body>
   <form action="${ctx}/userLogin/loginTwoAction!login.action" method="get">
	   	userName:<input type="text" name="user.userName">
	   	<br>
	   	password:<input type="password" name="user.password">
	   	<br>
	   	<button type="submit">登录</button>
   </form>
 </body>

3.第三种方法,通过模型驱动的方式接受jsp页面传递的参数,实现方式:让Action实现一个ModelDriven的接口。这个接口需要我们实现一个 getModel的方法,这个方法返回的就是Action所使用的数据模型对象。这里使用的模型对象是第二个方法封装好的对象。示例代码:

public class LoginThreeAction implements ModelDriven<User> {
    
    
	private User user;

	@Override
	public User getModel() {
    
    
		if (user == null) {
    
    
			user = new User();
		}
		return user;
	}

	// 登录action方法
	public String login() {
    
    
		if (user.getUserName().equals(user.getPassword())) {
    
    
			return "success";
		}
		return "fail";
	}
	
	//========getter==========
	public User getUser() {
    
    
		return user;
	}
}

在struts.xml配置中配置LoginThreeAction,示例代码:

<package name="user-login" namespace="/userLogin" extends="struts-default">
	<action name="loginThreeAction" class="com.gx.web.LoginThreeAction">
		<result name="success">/jsp/successTwo.jsp</result>
		<result name="fail">/jsp/fail.jsp</result>
	</action>
</package>

Jsp页面的参数名称需要与模型对象的属性名称保持一致,示例代码:

<body>
   <form action="${ctx}/userLogin/loginThreeAction!login.action" method="get">
	   	userName:<input type="text" name="userName">
	   	<br>
	   	password:<input type="password" name="password">
	   	<br>
	   	<button type="submit">登录</button>
   </form>
 </body>

猜你喜欢

转载自blog.csdn.net/weixin_44547592/article/details/105773140