1. 采用基本类型接受请求参数(get/post)
action:
public class GetparamAction extends ActionSupport {
private int age;
private String name;
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 get() {
System.out.println( "age=" + age + "name=" + name);
return "get";
}
}
JSP:
<a href="${pageContext.request.contextPath }/getparam/GetparamAction.action?name=aa&age=11">请求GetparamAction</a>
说明:看了别人写的,“在Action类中定义与请求参数同名的属性,struts2便能自动接收请求参数并赋予给同名的属性。”,其实这句话是不对的,这会让人误以为action属性名必须和请求参数名一样,其实action类中的属性名不一定要和请求参数同名,可以试验一下。Struts2是通过反射技术调用了set方法来获取请求参数的。
如:请求参数str=aa,那么就会去调用action中的
public void setStr(String 参数名){
this.name=参数名;//但是不推荐这样写,这样没约定好,可读性差
//这样同样能接收到参数
}
请求参数名要和set***方法中的***匹配,这样就会调用相应的set方法。
2. 采用复合类型接受请求参数
action:
public class DomainModelAction extends ActionSupport {
private Person person;//Person类
public Person getPerson() {
return person;
}
public void setPerson(Person person) {
this.person = person;
}
public String test() {
System.out.println("name:" + person.getName());
System.out.println("age:" + person.getAge());
return "test";
}
}
jsp:
<a href="${pageContext.request.contextPath }/getparam/DomainModelAction.action?person.age=22&person.name=aa">请求DomainModelAction</a>
转到get.jsp
获取属性<s:property value="person.name"/>
<s:property value="person.age"/>