请求参数的属性驱动

请求参数的属性驱动

请求参数封装概述

封装请求参数就是把我们通过浏览器发送请求时,要传递给服务器的数据封装到指定的对象中。

这个对象一般都是实体类。但是有时就是Action中的一个属性

也就是说,我们封装请求参数时,可以有实体类,也可以没有。

同时,我们还需要知道,请求参数的封装和请求方式无关。无论get还是post都可以封装。

属性驱动

没有实体类
  • 要求:

    表单元素的 name 属性取值必须和动作类中的属性一致(get/set 方法后面的部分)

此种情况,我们一般也称为动作类和模型在一起,也就是说我们在action中定义一些私有成员
并且提供它们的公有get/set方法。具体代码如下:

动作类:

/** 
 * 请求参数的封装: 
 *  属性驱动: 
 *    没有独立的实体类(动作类和模型数据在一起) 
 * 它要想封装成功,有如下要求: 
 *    表单元素的 name 属性取值必须和动作类中的属性一致(get/set 方法后面的部分) 
 *   
 * @author Johnny.Chen 
 * 细节: 
 *  struts2 框架默认为我们解决了 post 请求的乱码问题。 
 */ 
public class Demo1Action extends ActionSupport { 

  private String name; 
  private Integer age; 

  public String demo1(){ 
    System.out.println(name+","+age); 
    return SUCCESS; 
  } 

  public String getName() { 
    return name; 
  } 

  public void setName(String name) { 
    this.name = name; 
  } 
  public Integer getAge() { 
    return age; 
  } 
  public void setAge(Integer age) { 
    this.age = age; 
  }   
} 

jsp页面:

<%--表单 1:动作类模型在一起 --%> 
<form action="${pageContext.request.contextPath}/demo1.action" method="post"> 
  用户名:<input type="text" name="name"/><br/> 
  年龄:<input type="text" name="age"/><br/> 
  <input type="submit" value="提交"/> 
</form> 

struts.xml:

<action name="demo1" class="cn.action.Demo1Action" method="demo1"> 
  <result name="success">/success.jsp</result> 
</action> 
有实体类
  • 使用要求:

    • 首先动作类中需要提供模型的 get/set 方法 (私有成员变量)
    • 模型中要提供私有成员变量的 get/set 方法 (实体类自己的get/set方法)
    • 并且这些 get/set 方法必须和表单的 name 属性取值能对应上。

此种情况是,我们有独立的实体类,在action中定义的是实体类对象,并且提供get/set方法。
代码如下:

动作类: 
/** 
 * 请求参数的封装: 
 *  属性驱动: 
 *    动作类和模型数据分开 
 * 使用要求: 
 *  首先动作类中需要提供模型的 get/set 方法 
 *  模型中要提供私有成员变量的 get/set 方法 
 *  并且这些 get/set 方法必须和表单的 name 属性取值能对应上。 
 *  
 * @author Johnny.Chen 
 */ 
public class Demo2Action extends ActionSupport { 

  private User user = new User(); 

  public String demo2(){ 
    System.out.println(user);//输出有对象 
    return SUCCESS; 
  } 

  public User getUser() { 
    System.out.println("getUser"); 
    return user; 
  } 

  public void setUser(User user) { 
    System.out.println("setUser"); 
    this.user = user; 
  } 

} 

jsp页面:

<%--表单 2:动作类和模型分开  
此时 name 属性的取值看上去是一个普通的字符串,但是实际上已经不是了。 
而是一个 OGNL 表达式。 
Object Graphic Navigation Language 
对象    图    导航      语言 
--%> 
<form action="${pageContext.request.contextPath}/demo2.action" method="post"> 
  用户名:<input type="text" name="user.name"/><br/> 
  年龄:<input type="text" name="user.age"/><br/> 
  <input type="submit" value="提交"/> 
</form> 

struts.xml:

<action name="demo2" class="cn.action.Demo2Action" method="demo2"> 
  <result name="success">/success.jsp</result> 
</action> 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值