struts2-11请求参数接收

接收请求参数:

  • 采用基本类型接收请求参数(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;}
 }
 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);
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值