传智Struts2笔记(8)接收请求参数

接收请求参数

1.采用基本类型接收请求参数(get/post)
在Action类中定义与请求参数同名的属性,struts2便能自动接收请求参数并赋予给同名属性。
请求路径: http://localhost:8080/test/view.action?id=78

Java代码
  1. public class ProductAction {   
  2.       private Integer id;   
  3.       public void setId(Integer id) {//struts2通过反射技术调用与请求参数同名的属性的setter方法来获取请求参数值   
  4.              this.id = id;   
  5.       }   
  6.       public Integer getId() {return id;}   
  7.   }  
public class ProductAction {
      private Integer id;
      public void setId(Integer id) {//struts2通过反射技术调用与请求参数同名的属性的setter方法来获取请求参数值
             this.id = id;
      }
      public Integer getId() {return id;}
  }



2.采用复合类型接收请求参数


请求路径: http://localhost:8080/test/view.action?product.id=78

Java代码
  1.  public class ProductAction {   
  2.    private Product product;   
  3.    public void setProduct(Product product) {  this.product = product;  }   
  4.    public Product getProduct() {return product;}   
  5. }  
 public class ProductAction {
   private Product product;
   public void setProduct(Product product) {  this.product = product;  }
   public Product getProduct() {return product;}
}


Struts2首先通过反射技术调用Product的默认构造器创建product对象,然后再通过反射技术调用product中与请求参数同名的属性的setter方法来获取请求参数值。


关于struts2.1.6接收中文请求参数乱码问题


struts2.1.6版本中存在一个Bug,即接收到的中文请求参数为乱码(以post方式提交),原因是struts2.1.6在获取并使用了请求参数后才调用HttpServletRequest的setCharacterEncoding()方法进行编码设置 ,导致应用使用的就是乱码请求参数。这个bug在struts2.1.8中已经被解决,如果你使用的是struts2.1.6,要解决这个问题,你可以这样做:新建一个Filter,把这个Filter放置在Struts2的Filter之前,然后在doFilter()方法里添加以下代码

Java代码
  1. public void doFilter(...){   
  2.     HttpServletRequest req = (HttpServletRequest) request;   
  3.     req.setCharacterEncoding("UTF-8");//应根据你使用的编码替换UTF-8   
  4.     filterchain.doFilter(request, response);   
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值