struts2-11请求参数接收
2017-12-13 23:22
363 查看
接收请求参数:
采用基本类型接收请求参数(get/post)在action类中定义与请求参数同名的属性,struts2便能自动接收请求参数并赋予给同名属性。
请求路径:http://localhost:8080/test/hello.action?id=78
public class HelloAction(){ private Integer id ; public void setId(Integer id){//struts2通过反射技术调用与请求参数同名的属性的setter方法来获取请求参数值 this.id = id ; } public Integer getId(){return id;} }
采用复合类型接收请求参数
请求路径:http://localhost:8080/test/hello.action?user.id=78
public class HelloAction(){ private User user; public void setUser(User user){ this.user = user; } public User getUser(){return user;} }
struts2首先通过反射技术调用User的默认构造器创建User对象,然后再通过反射技术调用user中与请求参数同名的属性的setter方法来获取请求参数的值。
bean:
public class Person { private String name; private Integer id; public String getName() { return name; } public void setName(String name) { this.name = name; } public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } }
HelloWorldAction:
public class HelloWorldAction { private Integer id; private String name; private Person person; public Person getPerson() { return person; } public void setPerson(Person person) { this.person = person; } public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String addUI(){ return "success"; } public String execute() throws Exception{ return "success"; } }
index.jsp:
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>My JSP 'index.jsp' starting page</title> <meta http-equiv="pragma" content="no-cache"> <meta http-equiv="cache-control" content="no-cache"> <meta http-equiv="expires" content="0"> </head> <body> <form action="<%=request.getContextPath()%>/control/employee/list_execute.action" method="post"> id:<input type="text" name="person.id"><br/> name:<input type="text" name="person.name"><br/> <input type="submit" value="发送"/> </form> </body> </html>
add.jsp:
<%@ page language="java" import="java.util.*,java.net.URLDecoder" pageEncoding="UTF-8"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>My JSP 'employeeAdd.jsp' starting page</title> <meta http-equiv="pragma" content="no-cache"> <meta http-equiv="cache-control" content="no-cache"> <meta http-equiv="expires" content="0"> </head> <body> <%= URLDecoder.decode(new String(request.getParameter("username").getBytes("ISO8859-1"),"UTF-8"),"UTF-8") %> <form action="/xxx"> 姓名:<input type="text" name="xxx"> </form> </body> </html>
关于struts2.1.6接收中文请求参数乱码问题
struts2.1.6中存在一个bug,即接收到中文请求参数为乱码(以post方式提交),原因是struts2.1.6在获取并使用了请求参数才调用HttpServletRequest的setCharacterEncoding()方法进行编码设置,导致应用使用的就是乱码请求参数。该bug在2.1.8中已解决,如若解决,则可以这样做:新建一个filter,将这个filter放在struts的filter之前,然后在doFilter()方法里添加如下代码:public void doFilter(...){ HttpServletRequest req = (HttpServletRequest)request; req.setCharacterEncoding("UTF-8");//根据自己使用的编码替换成UTF-8; filterchain.doFilter(request,response); }
相关文章推荐
- struts2教程:11、请求参数接收
- Struts2_请求参数接收
- struts2之请求参数接收
- struts2之请求参数接收
- struts2请求参数的接收
- 传智Struts2笔记(8)接收请求参数
- Spring MVC如何接收浏览器传递来的请求参数--request--形参--实体类封装(类比Struts2模型驱动)
- Struts2:接收请求参数
- struts2中接收请求参数(尤其是复合类型)
- Struts2 (动态调用、接收请求参数、类型转换、数据验证、拦截器)Day:2018/2/7
- struts2学习笔记----------struts2.1.6接收中文请求参数乱码问题
- struts2之Action请求参数接收方式
- Struts2接收请求参数1
- 框架学习之Struts2 第三节 请求参数的接收和自定义类型转换器
- Struts2的第二天(Action接收请求参数)
- Struts2接收请求参数
- struts2 请求参数接收
- Struts2 请求参数接收
- Struts2接收请求参数原理
- Struts2 请求参数的接收