您的位置:首页 > 编程语言 > Java开发

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);
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: