struts2浏览器前台向服务器后台传值的两种方式。

本文介绍了Struts2中从前台传递数据到后台Action的两种主要方式:1) 直接通过属性对应的方式,适用于简单场景;2) 通过对象传递,适用于大量数据。这两种方式都依赖于getter和setter方法。另外提到了ModelDriven接口的使用,但实际项目中较少采用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  这里不是说post和get方法,而是指struts2前后台交互的、jsp页面传递数据,后台action接收数据的方式。

–常用的方式有两种,一种用于简单少量的数据。一种用于相对大量的数据。还有一种方式我还没有在实际项目中使用到。

  1. 在Action类中定义表单属性,两者属性名称必须一致。
  2. 表单传递过来的参数封装成一个类,然后调用其中的属性.

  对于第一种方法 1. 在Action类中定义表单属性,两者属性名称必须一致。要求在action类里为这些属性写上相同的getter和setter方法。

.jsp代码:
<form action="login" method="post" name="form1">
    用户名:<input type="text" name="student.username"/><br/>
   密 码:<input type="password" name="student.password"/><br/>
   <input type="input" value="提交"/>
</form>
--------------
axtion代码:
public class loginAction extends ActionSupport{{
private String username;
private String password;
/**提供setter和getter方法**/
    public void login(...){
        //直接可以打印前台穿来到值。这是反射和注入实现的。
        syso..(username);       
    }

}

这种方式的1.要点是(提供前后台一致的属性名,并在action类里写好相应的getter和setter方式)2.优点是简单粗暴,不用过多的工作,不用获取request对象去getparameter来获取。3.缺点是,当前台传递的数据量过多的时候,我们的action类,就充斥了各种setergetter方法。比如当用户输入的数据详细个人信息(个人资料,毕业学校,爱好等),那么这种方式用起来就不那么方便。所以我们开始采用第二种方法来做。在前台传对象。
  第二种方式和第一种方式在本质上是类似的。1)前台标签的name属性为(对象名.属性名)。2)后台action中提供对象的引用,并写出对象个getter和setter方法。对象对应的类是pojo类(提供各个字段的getter和setter方法。)
方式二 .jsp代码:

<form action="login" method="post" name="form1">
    用户名:<input type="text" name="student.username"/><br/>
   密 码:<input type="password" name="student.password"/><br/>
   <input type="input" value="提交"/>
</form>

方式二 java的pojo类:

public class student{
private string username;
private string sex;
private int age;
private string school;
private string grade;
//接下来是各个属性的getter和setter方法
.....getUsername(){...};
}

方式二 axtion代码:

public class loginAction extends ActionSupport{{
    private Student student;
/**提供setter和getter方法**/
    public Student getUsers(){
        return student;
    }
    public void setUsers(Student student){
        this.student=student;
    }
    public void login(...){
        //直接可以打印前台穿来到值。这是反射和注入实现的。
        syso..(student.username);       
    }
}

第二种方法是最常用的方法。要点是(1前台设值和后台取值都是通过student.username来实现。2提供pojo类。3action中写出对象的setter和getter方法。)

一种我在实际项目开发中还没有用过的传值方式:
三.action实现ModelDriven接口来接收表单数据

首先Action类必须实现ModelDriven接口,同样把表单传来的数据封装起来,Action类中必须实例化该对象,并且要重写getModel()方法

public class loginAction extends ActionSupport implements ModelDriven<Users>{

private Users users =new Users();

public Users getModel(){

return users;

}

/*

表单传来的参数封装在users对象中

表单属性名不需要加上引用users对象,直接传参数名

*/

}

小结:相对于传统的servlet和jsp传值,我们要做的是把属性的名称设定一致就行了。不再需要我们通过request.getParameter(stuent.username);的方式去获取。struts2框架已经帮我们做好了,它底层采用反射机制帮我们设定好了的。直接使用就可以。

//下一步写springmvc的传值和传统传值方式总结

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值