SpringMVC实现接收前端的数据(从一个网页输入数据,然后将数据提交到另外一个网页,并进行输出:集合,数组,自定义参数对象) 您所在的位置:网站首页 springmvc获取表单数据注解 SpringMVC实现接收前端的数据(从一个网页输入数据,然后将数据提交到另外一个网页,并进行输出:集合,数组,自定义参数对象)

SpringMVC实现接收前端的数据(从一个网页输入数据,然后将数据提交到另外一个网页,并进行输出:集合,数组,自定义参数对象)

2024-04-03 22:23| 来源: 网络整理| 查看: 265

恰巧此时,两手空空才无限拥有。

7dee448613164395abba513560cf185a.jpg

实现简单数据的传递

实现网页数据的提交从一个网页输出数据,将输入的数据提交到另外的一个网页

注意:SpringMVC项目在实现之前都必须进行环境的搭建

SpringMVC项目环境的基础搭配

一:创建提交书单页面 Book 图书 样书 作者 价格 二:获取第一步提交的数据,并打印在一个新的网页上 import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.*; @Controller public class controller_book1 { @GetMapping("/book") public String book(){ return "book"; } @RequestMapping(value = "/book2",method = RequestMethod.POST,produces = "text/html;charset=utf-8") //produces参数:设置字符格式UTF-8 @ResponseBody public String play(String name,String author,double price){ return name +"----"+author+"----"+price; //打印获取的数据 } } 三:因为我们在网页输入的数据如果没有进行配置的话,肯定会显示乱码如下面情况

08fa16e740b147c683982f427f827373.png

 正常情况下,英文 数字都可以进行输出,但是汉字却无法进行正常的输出,对于这种情况我们要对web.xml进行配置 springmvc org.springframework.web.servlet.DispatcherServlet contextConfigLocation classpath:springmvc_demo1.xml springmvc / encoding org.springframework.web.filter.CharacterEncodingFilter encoding UTF-8 forceRequestEncoding true forceResponseEncoding true encoding /* 结果演示:

执行项目

d0fdac736cbc4d64bc740078d4283510.png

 输入内容点击提交 网页跳转

e733a252df2a4fe68122bf16bc4f4a38.png

实现对象数据的传递

上面主要介绍了简单数据的传递,接下来介绍实体类的数据进行传递

创建book.jsp通过form将数据传递到控制器中 Book 图书 样书 价格

在控制器接受数据,上面的方法是通过定义字符串来接受前端传入的数据。在这里将通过一种新的方法来接受数据,就是创一个实体类,将接受的数据传入的实体类,然后在进行打印输出

创建接受数据的实体类 package controller; //将前端传入的数据全都保存在这个类,然后进行输出 import javax.xml.crypto.Data; import java.util.Date; public class book { private String name; private String author; private double price; @Override public String toString() { return "book{" + "name='" + name + '\'' + ", author=" + author + ", price=" + price + '}'; } public String getAuthor() { return author; } public void setAuthor(String author) { this.author = author; } public String getName() { return name; } public void setName(String name) { this.name = name; } public double getPrice() { return price; } public void setPrice(double price) { this.price = price; } } 在控制器中接收数据,并将接收的数据传递到创建的对象里,然后进行打印输出 @RequestMapping(value = "/play3",produces = "text/html;charset=utf-8") @ResponseBody public String play3(book1 book){ return book.toString(); } 执行项目:

 点击提交:将前端传入的数据进行打印

自定义参数

在前端上传的数据,并不是全部都能够识别的,我们需要自定义参数的识别类能够识别前端传来的数据,上面所讲述的前端上传的数据类型都是系统自动转换的,但是还有一部分数据是系统无法自动转换的,这时候我们需要将前端传来的数据转换成能够识别的系统。

以时间为例:

配置网页: Book 图书 出版时间 样书 样书 作者 年龄 价格 结果:

 如果按照上面的配置内容点击提交,会出现下面错误,所以我们要通过自定义参数配置使系统来接收前端传来的数据

 配置自定义参数类:

package controller; //参数接收并不是全部都能进行输出的,,但是我们可以自定参数类型 import org.springframework.core.convert.converter.Converter; import org.springframework.stereotype.Controller; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; @Controller public class custom implements Converter { //实现Converter接口并将Date类型转换成String类型的数据 SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd"); //配置显示时间样式 @Override public Date convert(String source) { System.out.println("kankan"); try { return format.parse(source); } catch (ParseException e) { e.printStackTrace(); } return null; } }

创建接口数据对象类:

package controller; //将前端传入的数据全都保存在这个类,然后进行输出 import javax.xml.crypto.Data; import java.util.Date; public class book { private String name; private String author; private double price; private Date time; public Date getTime() { return time; } public void setTime(Date time) { this.time = time; } @Override public String toString() { return "book{" + "name='" + name + '\'' + ", author='" + author + '\'' + ", price=" + price + ", time=" + time + '}'; } public String getAuthor() { return author; } public void setAuthor(String author) { this.author = author; } public String getName() { return name; } public void setName(String name) { this.name = name; } public double getPrice() { return price; } public void setPrice(double price) { this.price = price; } }

前面我们配置了自定义参数类,我们需要让框架加载我们创建自定义参数类

在配置文件进行配置:

 控制器配置:

@RequestMapping(value = "/play3",produces = "text/html;charset=utf-8") @ResponseBody public String play3(book book){ return book.toString(); }

效果展示:

 内容输出:

通过数组来实现接收前端传入数据 配置前端,使数据能够按照各种方法传递给后端 Book 图书 出版时间 样书 样书 作 者 爱好 lan qiu ni mm listdemo 不想 不想 不想 年龄 价格 后端创建类来储存前端传来的数据‘ package controller; //将前端传入的数据全都保存在这个类,然后进行输出 import javax.xml.crypto.Data; import java.util.Date; import java.util.List; import java.util.Map; public class book { private String name; private String author; private double price; private Date time; private List favo; private List book2; private Map map; @Override public String toString() { return "book{" + "name='" + name + '\'' + ", author='" + author + '\'' + ", price=" + price + ", time=" + time + ", favo=" + favo + ", book2=" + book2 + ", map=" + map + '}'; } public Map getMap() { return map; } public void setMap(Map map) { this.map = map; } public List getBook2() { return book2; } public void setBook2(List book2) { this.book2 = book2; } public List getFavo() { return favo; } public void setFavo(List favo) { this.favo = favo; } public Date getTime() { return time; } public void setTime(Date time) { this.time = time; } public String getAuthor() { return author; } public void setAuthor(String author) { this.author = author; } public String getName() { return name; } public void setName(String name) { this.name = name; } public double getPrice() { return price; } public void setPrice(double price) { this.price = price; } } class book2{ 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; } @Override public String toString() { return "book2{" + "name='" + name + '\'' + ", id=" + id + '}'; } } 执行项目:

 点击提交,获取前端所传来的数据

 上面网页所显示的内容就是通过各种方法去获取前端所传来的数据内容,但是比如像集合和数组等那些方法在实际开发基本上不大会使用,基本上都是通过对象来获取数据。



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有