Action接受参数的方式
方式1:
链接:
<a href="<%=basePath %>javaee/user!add?name=jack&&age=21">添加用户</a>
struts.xml:
<package name="default" namespace="/javaee" extends="struts-default">
<action name="user" class="cn.edu.hpu.action.UserAction">
<result name="success">/User_Add_success.jsp</result>
</action>
</package>
UserAction(写法相当于一个JavaBean):
package cn.edu.hpu.action;
public class UserAction {
private String name;
private int age;
public String add(){
System.out.println("name="+name);
System.out.println("age="+age);
return "success";
}
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;
}
}
User_Add_success.jsp:
<html>
<head>
<title>My JSP 'User_Add_success.jsp' starting page</title>
</head>
<body>
User Add success! <br>
</body>
</html>
原理:?name=jack&&age=21为什么能把值传给JavaBean,并且在add方法中可以看到传过来的参数值?
答:当new这个Action的时候,struts会自动的把javaBean的各种“属性”从“参数”中拿出来帮你设置好(struts自己调用JavaBean的set和get方法)。
方法2:使用DomainModel(域模型DML)
struts.xml:
<package name="default" namespace="/javaee" extends="struts-default">
<action name="user2" class="cn.edu.hpu.action.UserAction2">
<result name="success">/User_Add_success.jsp</result>
</action>
</package>
User.java:
package cn.edu.hpu.mode;
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;
}
}
UserAction2(写法相当于一个JavaBean):
package cn.edu.hpu.action;
import cn.edu.hpu.mode.User;
public class UserAction2 {
private User user;
public String add(){
System.out.println("name="+user.getName());
System.out.println("age="+user.getAge());
return "success";
}
public User getUser() {
return user;
}
public void setUser(User user) {
this.user = user;
}
}
链接:
使用Domain Model传递参数<a href="<%=basePath %>javaee/user2!add?user.name=tom&&user.age=12">添加用户</a><br/>
User_Add_success.jsp:
<html>
<head>
<title>My JSP 'User_Add_success.jsp' starting page</title>
</head>
<body>
User Add success! <br>
</body>
</html>
方法3:继承ModelDriven接口(不推荐使用)
略(就是直接接收一个Form表单对应的实体类)
有关中文参数乱码的问题:
如果不在struts中指定web应用的默认编码集的话,传参时会出现乱码的情况
所以要在struts.xml中设置默认编码集,设置网页的编码方式(下面的例子设置为UTF-8)
<constant name="struts.i18n.encoding" value="UTF-8"></constant>
转载请注明出处:http://blog.csdn.net/acmman/article/details/44158499