恰巧此时,两手空空才无限拥有。
实现简单数据的传递
实现网页数据的提交从一个网页输出数据,将输入的数据提交到另外的一个网页
注意:SpringMVC项目在实现之前都必须进行环境的搭建
- <%--
- Created by IntelliJ IDEA.
- User: lenovo
- Date: 2022/11/5
- Time: 14:54
- To change this template use File | Settings | File Templates.
- --%>
- <%@ page contentType="text/html;charset=UTF-8" language="java" %>
- <html>
- <head>
- <title>Booktitle>
- head>
- <body>
- <h1>图书h1>
- <form action="/book2" method="post">
- <table>
- <tr>
- <td>样书td>
- <td><input type="text" name="name">td>
- tr>
- <tr>
- <td>作者td>
- <td><input type="text" name="author">td>
- tr>
- <tr>
- <td>价格td>
- <td><input type="text" name="price">td>
- tr>
- <tr>
- <td><input type="submit"value="提交">td>
- tr>
- table>
- form>
- body>
- html>
- 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; //打印获取的数据
- }
- }

- "1.0" encoding="UTF-8"?>
- <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
- version="4.0">
-
-
- <servlet>
- <servlet-name>springmvcservlet-name>
- <servlet-class>org.springframework.web.servlet.DispatcherServletservlet-class>
- <init-param>
- <param-name>contextConfigLocationparam-name>
- <param-value>classpath:springmvc_demo1.xmlparam-value>
- init-param>
- servlet>
- <servlet-mapping>
- <servlet-name>springmvcservlet-name>
- <url-pattern>/url-pattern>
- servlet-mapping>
-
- <filter>
- <filter-name>encodingfilter-name>
- <filter-class>org.springframework.web.filter.CharacterEncodingFilterfilter-class>
- <init-param>
- <param-name>encodingparam-name>
- <param-value>UTF-8param-value>
- init-param>
- <init-param>
- <param-name>forceRequestEncodingparam-name>
- <param-value>trueparam-value>
- init-param>
- <init-param>
- <param-name>forceResponseEncodingparam-name>
- <param-value>trueparam-value>
- init-param>
- filter>
- <filter-mapping>
- <filter-name>encodingfilter-name>
- <url-pattern>/*url-pattern>
- filter-mapping>
- web-app>
执行项目


实现对象数据的传递
上面主要介绍了简单数据的传递,接下来介绍实体类的数据进行传递
- <%--
- Created by IntelliJ IDEA.
- User: lenovo
- Date: 2022/11/5
- Time: 14:54
- To change this template use File | Settings | File Templates.
- --%>
- <%@ page contentType="text/html;charset=UTF-8" language="java" %>
- <html>
- <head>
- <title>Booktitle>
- head>
- <body>
- <h1>图书h1>
- <form action="/play3" method="post">
- <table>
- <tr>
- <td>样书td>
- <td><input type="text" name="name">td>
- tr>
- <tr>
- <td>价格td>
- <td><input type="text" name="price">td>
- tr>
-
- <tr>
- <td><input type="submit"value="提交">td>
- tr>
- table>
- form>
- body>
- html>
在控制器接受数据,上面的方法是通过定义字符串来接受前端传入的数据。在这里将通过一种新的方法来接受数据,就是创一个实体类,将接受的数据传入的实体类,然后在进行打印输出
- 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();
- }


在前端上传的数据,并不是全部都能够识别的,我们需要自定义参数的识别类能够识别前端传来的数据,上面所讲述的前端上传的数据类型都是系统自动转换的,但是还有一部分数据是系统无法自动转换的,这时候我们需要将前端传来的数据转换成能够识别的系统。
以时间为例:
- <%--
- Created by IntelliJ IDEA.
- User: lenovo
- Date: 2022/11/5
- Time: 14:54
- To change this template use File | Settings | File Templates.
- --%>
- <%@ page contentType="text/html;charset=UTF-8" language="java" %>
- <html>
- <head>
- <title>Booktitle>
- head>
- <body>
- <h1>图书h1>
- <form action="/play3" method="post">
- <table>
- <tr>
- <td>出版时间td>
- <td><input type="date" name="time">td>
- tr>
- <tr>
- <td>样书td>
- <td><input type="text" name="name">td>
- tr>
- <tr>
- <td>样书td>
- <td><input type="text" name="author">td>
- tr>
- <tr>
- <td>作者td>
- <td><input type="text" name="author.name">td>
- tr>
-
- <tr>
- <td>年龄td>
- <td><input type="text" name="author.age">td>
- tr>
- <tr>
- <td>价格td>
- <td><input type="text" name="price">td>
- tr>
-
- <tr>
- <td><input type="submit"value="提交">td>
- tr>
- table>
- form>
- body>
- html>

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

配置自定义参数类:
- 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;
- }
- }
前面我们配置了自定义参数类,我们需要让框架加载我们创建自定义参数类
在配置文件进行配置:
- "1.0" encoding="UTF-8"?>
- <beans xmlns="http://www.springframework.org/schema/beans"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xmlns:context="http://www.springframework.org/schema/context"
- xmlns:mvc="http://www.springframework.org/schema/mvc"
-
- xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context https://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/mvc https://www.springframework.org/schema/mvc/spring-mvc.xsd">
-
- <context:component-scan base-package="controller">context:component-scan>
- <mvc:annotation-driven conversion-service="factoryBean"/>
- <bean class="org.springframework.context.support.ConversionServiceFactoryBean" id="factoryBean">
- <property name="converters">
- <set>
- <ref bean="custom">ref>
- set>
-
- property>
-
- bean>
- <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver" id="modelAndView">
- <property name="prefix" value="/jsp/">property>
- <property name="suffix" value=".jsp">property>
- bean>
-
- beans>
控制器配置:
- @RequestMapping(value = "/play3",produces = "text/html;charset=utf-8")
- @ResponseBody
- public String play3(book book){
- return book.toString();
- }
效果展示:

内容输出:
- <%--
- Created by IntelliJ IDEA.
- User: lenovo
- Date: 2022/11/5
- Time: 14:54
- To change this template use File | Settings | File Templates.
- --%>
- <%@ page contentType="text/html;charset=UTF-8" language="java" %>
- <html>
- <head>
- <title>Booktitle>
- head>
- <body>
- <h1>图书h1>
- <form action="/play3" method="post">
- <table>
- <tr>
- <td>出版时间td>
- <td><input type="date" name="time">td>
- tr>
- <tr>
- <td>样书td>
- <td><input type="text" name="name">td>
- tr>
- <tr>
- <td>样书td>
- <td><input type="text" name="author">td>
- tr>
- <tr>
-
-
- <td>作td>
- <td><input type="text" name="map['zuo']">td>
- tr>
- <tr>
- <td>者td>
- <td><input type="text" name="map['zhe']">td>
- tr>
-
-
-
- <tr>
- <td>爱好td>
- <td>
- <input type="checkbox" name="favo" value="lan"> lan
- <input type="checkbox" name="favo" value="qiu"> qiu
- <input type="checkbox" name="favo" value="ni"> ni
- <input type="checkbox" name="favo" value="mm"> mm
- td>
- tr>
-
-
- <tr>
- <td>listdemotd>
- <td>
- <input type="checkbox" value="不想" name="book2[0].name">不想
- <input type="hidden" value="0" name="book2[0].id">
- <input type="checkbox" value="睡醒" name="book2[1].name">不想
- <input type="hidden" value="1" name="book2[1].id">
- <input type="checkbox" value="不想" name="book2[2].name">不想
- <input type="hidden" value="2" name="book2[2].id">
- td>
- tr>
- <tr>
- <td>年龄td>
- <td><input type="text" name="author.age">td>
- tr>
- <tr>
- <td>价格td>
- <td><input type="text" name="price">td>
- tr>
-
- <tr>
- <td><input type="submit"value="提交">td>
- tr>
- table>
- form>
- body>
- html>
- 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 +
- '}';
- }
- }


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