Strut2学习(四)---------3种参数接收

通过action的属性接收参数

struts2.xml

<struts>
	<constant name="struts.devMode" value="true" />
	<constant name="struts.configuration.xml.reload" value="true"/>
	<constant name="struts.enable.DynamicMethodInvocation" value="true"></constant>
	<package name="user" extends="struts-default" namespace="/user">
	
		<action name="user" class="xidianlili.struts2.user.action.UserAction">
			<result>/Useradd_success.jsp</result>
		</action>
	</package>
</struts>

 

自定义的action类UserAction类如下:

package xidianlili.struts2.user.action;

import com.opensymphony.xwork2.ActionSupport;


public class UserAction extends ActionSupport {
	private String name;
	private int age;
	
	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public int getAge() {
		return age;
	}

	public void setAge(int age) {
		this.age = age;
	}

	public String add() {
		System.out.println("name:"+name);
		System.out.println("age:"+age);
		return SUCCESS;
	}
	
	
}

在这个action类中有两个属性,可以用来接收参数值,struts2自动调用set get方法

在inedx.jsp可以直接传递参数 user!add动态调用方法?后面跟参数

<html>
  <head>
    <base href="<%=basePath%>"/>
 
    <title>My JSP 'index.jsp' starting page</title>
	<meta http-equiv="pragma" content="no-cache">
	
  </head>
  
  <body>
       使用action参数自动调用setget方法属性接受参数<a href="user/user!add?name=lili&age=18">添加用户</a>
  </body>
</html>

使用域模型接收参数

这样不用把参数都放在action类中,定义一个model包,创建model类User,把属性和get,set方法加入

package xidianlili.struts2.user.model;

public class User {
	private String name;
	private int age;
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public int getAge() {
		return age;
	}
	public void setAge(int age) {
		this.age = age;
	}
	
}

此时,action类可以修改为下图所示,加入一个model类,加入setget model类的方法

package xidianlili.struts2.user.action;

import com.opensymphony.xwork2.ActionSupport;

import xidianlili.struts2.user.model.User;

public class UserAction extends ActionSupport {
	private User user;
	

	public User getUser() {
		return user;
	}

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

	public String add() {
		System.out.println("name:"+user.getName());
		System.out.println("age:"+user.getAge());
		return SUCCESS;
	}
		
}

对应修改index.jsp如下:可以直接用model类.属性进行值接收,struts2自己给我们创建User对象

<body>
 使用action参数自动调用setget方法属性接受参数
<a href="user/user!add?user.name=lili&user.age=18">添加用户</a>
</body>

直接输入参数可能和域模型中定义的参数不能一一匹配,所以可以通过中间传递类,一般叫做VO,DO,DTO类

 

使用ModelDriven接收参数

url传递参数是直接用参数名字:http://localhost:8088/Struts2_0900_ModelDrivenParamInput/user/user!add?name=a&age=8

action类如下:

package com.bjsxt.struts2.user.action;

import com.bjsxt.struts2.user.model.User;
import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.ModelDriven;

public class UserAction extends ActionSupport implements ModelDriven<User>{
	
	private User user = new User();
	
	public String add() {
		System.out.println("name=" + user.getName());
		System.out.println("age=" + user.getAge());
		return SUCCESS;
	}

	@Override
	public User getModel() {
		return user;
	}
	
}

这个时候action类实现了ModelDriven接口,这个接口叫模型驱动接口,重写其中的getModel()方法,这个时候uesr对象必须自己构建,使用这个接口驱动的体现了MVC思想,V就是view,视图,M就是model,接受到请求参数以后都是交给model来处理,C是控制,这里struts2的action就是控制器的作用,控制接受参数用哪个model处理,以及处理结果加入到哪个model

最常用的就是第二种

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值