专业微网站建设,大型建设网站,药类网站整站模板下载,个人网站做淘宝客容易封吗简单介绍#xff1a;
在前面我们介绍过如何将我们自己创建的类变成一个servlet来处理用户发送的请求#xff0c;但是在大多数的时候#xff0c;我们在请求 的时候会携带一些参数#xff0c;而我们现在就开始介绍我们如何在Java类中获取我们前端请求中携带的参数。首先
在前面我们介绍过如何将我们自己创建的类变成一个servlet来处理用户发送的请求但是在大多数的时候我们在请求 的时候会携带一些参数而我们现在就开始介绍我们如何在Java类中获取我们前端请求中携带的参数。首先我们在Java类中获取浏览器请求中携带的参数的过程就被称为数据绑定这也是我们数据绑定的基本概念。首先我们来介绍 数据绑定的基本原理 在SpringMVC数据绑定过程中SpringMVC框架会通过数据绑定组件DataBinder对请求中的参数内容进行类型转换然后将转换后的 值赋给处理器的形参这样SpringMVC就完成了客户端请求参数的获取和绑定。 原理很复杂但是原理越复杂使用就越是简单。我们只需要知道从浏览器请求传递的参数会成为我们处理器方法的形参 而对于形参的使用我们就非常熟悉了下面我们就开始创建一个带参数的方法并将浏览器发送的请求参数输出在控制台。
使用方法
简单的数据绑定就是绑定基本的数据类型笔记int或者String在数据绑定方面比较重要的反而不是Java类的编写 因为简单的数据绑定就是使用基本数据类复杂的数据类型绑定就是使用数据或者Java类都是一些比较简答的应用 重点在于前端页面的表单的编写。 在简单数据绑定这一节我们需要注意的是Java形参的属性名和表单中表单的name属性的值要保持一致因为这样 才能正确的接收到来自表单提交的值。
然后是复杂数据绑定复杂数据绑定无非就是绑在对象上绑在列表上绑在集合上绑在集合的对象上我们会一一的演示 这样操作是如何在表单中体现的
将数据绑定到类的方法非常简单只需要我们将处理器方法的形参的参数修改成我们想要将数据绑定的类这个类中的属性 的属性名和表单中name属性的值保持一致即可。然后我们通过类的get方法获取类的参数这个参数就是我们请求中携带的参数
代码实现
简单数据绑定
对于简单数据绑定的方法非常简单我们只需要在页面中创建一个表单然后提交到控制器类中在控制器方法中添加参数即可唯一需要注意的是控制器类的方法的参数一定要和表单中的input标签的name属性的值相同才能自动进行数据绑定
首先我们创建一个表单页面
form action${pageContext.request.contextPath}/DataBingertabletrtd用户名/td tdlabelinput typetext nameusername/label/td/trtrtd密码/td tdlabelinput typepassword namepassword/label/td/trtrtd input typesubmit value提交 /td/tr/table
/form
然后我们创建一个控制器类和控制器方法
RequestMapping(/DataBinger)public String DataBinger(String username , String password){System.out.println(用户名是username);System.out.println(密码是password);return index;} 所谓的控制器类的方法的参数一定要和表单中的input标签的name属性的值相同才能自动进行数据绑定的意思就是 完成之后我们就启动Tomcat测试一下 我们在浏览器中打开我们刚才创建的页面然后输入值如果成功完成了数据绑定那么在我们提交之后我们会在控制台看到我们输入的值 可以看到控制台确实输出了我们刚才输入的值这就表示我们顺利完成了简单的数据绑定。
复杂数据绑定——将参数绑定到类中
首先我们要对复杂数据绑定的实现流程有一个基本的概念首先要明确我们是要将接收到的数据绑定到一个类中所以我们需要一个类来接收我们的数据
package SpringMVC.DataBindingAndResponse;public class user {private String username;private String password;Overridepublic String toString() {return user{ username username \ , password password \ };}public String getUsername() {return username;}public void setUsername(String username) {this.username username;}public String getPassword() {return password;}public void setPassword(String password) {this.password password;}public user(String username, String password) {this.username username;this.password password;}public user() {}
}准备好存放数据的类之后我们就要开始测试参数的传递了传递参数最方便直观的方式就是在JSP页面中创建一个表格进行提交数据表格的内容如下
h1这是测试复杂数据绑定-绑定对象/h1
form action${pageContext.request.contextPath}/BinderObjrcttabletrtd用户名/td tdlabel
%--注意这里的name的参数要和Java类中的属性名保持一致--%input typetext nameusername/label/td/trtrtd密码/td tdlabel
%--这里也是要和java类中的属性值保持一致--%input typepassword namepassword/label/td/trtrtd input typesubmit value提交 /td/tr/table
/form
准备好了页面内容之后我们就开始编写控制器类了之前我们需要在控制器方法的形参中直接写入了参数这次我们方法的形参改成类
// 测试复杂数据绑定之将参数绑定到Java类中RequestMapping(/BinderObjrct)
// 在完成了基本的配置之后我们可以直接通过将泛型修改成对象的方式获取对象public String DataBingerToProject(user u){System.out.println(u.getUsername());System.out.println(u.getPassword());return index;}
需要注意的是这次我们表单中的input标签的name属性的值要和我们存放数据的类的属性保持一致才能顺利的接收到数据也就是如下图表示 配置好之后我们就可以来到我们的项目中打开Tomcat开始测试了 我们在页面的表单中输入我们的值如果顺利的进行数据绑定之后我们就可以像之前那样在控制台看到我们输入的值 我们依然顺利的看到了我们的值这就表示我们已经顺利的将页面表单中传递的参数传入到了类中并可以取出参数进行操作了
当表单中的属性值和处理器类方法中的参数值不一样的时候
在开发中我们的前端开发和后端开发经常是分开的所以这时候我们就会遇到一些问题比如前端人员的命名方式和 后端人员的命名方式不一样导致表单中name的属性和Java类中属性名不一致这时候又无法修改成一致的状态导致 无法自动获取表单提交的参数的时候这时候该怎么办呢 为了应对这种情况的发生Spring的提供了RequestParam这个注释是我们在使用简单数据绑定的时候 需要写在方法的形参的参数前面即可 下面我们就来演示一下当表单中的请求参数和Java类中的属性名 不一样的情况。 RequestParam注解只需要使用一个属性就可以了就是value属性value属性就是我们前端的参数名表示接收哪一个 参数名传递的参数当属性只有一个value的时候value关键字可以不写 这是当参数值和属性名不一样的时候才会使用到的,但是在正常的开发中,还是尽量让参数保持一致
表单中的内容
h1这是测试复杂数据绑定-当表单中的参数名和方法的参数名不一样的时候/h1
form action${pageContext.request.contextPath}/BinderObjrctOrtherParamstabletrtd用户名/td tdlabel%--这时候name的值和Java类的值不一样了--%input typetext nameusername/label/td/trtrtd密码/td tdlabel%--这里的name的值也不一样了--%input typepassword namepassword/label/td/trtrtd input typesubmit value提交 /td/tr/table
/form 处理器方法
// 测试当前端页面的表单的参数值和形参中的属性值不相同的情况RequestMapping(/BinderObjrctOrtherParams)
// 注意这里的参数方法的参数和表单中的并不一样但是我们使用注解注解中的值就是表单中的参数值public String BinderObjrctOrtherParams(RequestParam(username)String name,RequestParam(password) String passwd){
// 这样我们依然可以正常的获取数据System.out.println(name);System.out.println(passwd);return index;}
我们只需要在处理器方法的形参的参数前面使用 RequestParam注解这个注解的值就是表单中input标签的name属性的值配置完成之后我们继续打开Tomcat进行测试 我们在表单中输入我们想要传递的参数然后点击提交如果能在控制台上看到我们输入的参数那么就表示我们的配置是正确的 顺利的看到我们输入的参数说明我配置的是正确的
注意点
需要注意的是表单中的input标签的name属性一定要和Java中的参数的属性名保持一致如果出现我们的参数传递过去了但是在控制台中没有输出优先考虑是不是属性值写的不一样导致的其次就是注意我们的提交路径要和处理器类方法中的RequestMapping注解中的值保持一致才能顺利的提交到方法中。