struts2请求参数的接收
HelloWorld.java:
package blog.action; public class HelloWorld { 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 execute(){ return "success"; } public String add(){ return "message"; } }
struts-employee.xml:
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" "http://struts.apache.org/dtds/struts-2.0.dtd"> <struts> <package name="employee" extends="struts-default" namespace="/control/employee"> <action name="add_*" class="blog.action.HelloWorld" method="{1}" > <result name="success">/WEB-INF/page/addEmployee.jsp</result> <result name="message">/WEB-INF/page/message.jsp</result> </action> </package> </struts>
直接通过URL访问方式:http://localhost:8080/struts2/control/employee/add_add.action?name=xxxx&age=34535
还可以通过jsp的方式为属性赋值http://localhost:8080/struts2/control/employee/add_execute
<body> <form action="<%=request.getContextPath() %>/control/employee/add_add.action"> 姓名:<input type="text" name="name"><br/> 年龄:<input type="text" name="age"><br/> <input type="submit" value="提交"> </form> </body>
回馈页面内容如下:
<body> 姓名:${name }<br/> 年龄:${age } </body>
当然也可以为符合类型赋值,但是jsp页面就必须加上复合类了:
比如HelloWorld中有一个Person类型的复合类,则jsp页面必须改为person.name和person.age
struts2是通过反射的方法为请求参数赋值的,因此必须提供属性的set方法,如果要显示值还必须提供get方法,此外,对于复合类型的属性,复合类必须有一个默认的无参构造方法,否则会报错。