目录

理论

演示及源码


理论

前端页面如何发送给后端页面:

SpringMVC自动将请求参数和入参对象的属性进行一一绑定;要求请求参数的名字和javaBean对象入参一样。

最后跳转的时候要注意:

redirect:表示重定向到一个地址; / 代表当前项目路径;

forward:为转发;

演示及源码

程序运行截图如下:

填写表单后提交:

程序结构如下:

源码如下:

MyMvcConfig.java

package adddatademo.demo.config;import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.ViewControllerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;@Configuration
public class MyMvcConfig {@Beanpublic WebMvcConfigurerAdapter webMvcConfigurerAdapter(){WebMvcConfigurerAdapter adapter = new WebMvcConfigurerAdapter() {@Overridepublic void addViewControllers(ViewControllerRegistry registry) {registry.addViewController("/").setViewName("index");registry.addViewController("/index.html").setViewName("index");}};return adapter;}
}

EmployeeController.java

package adddatademo.demo.controller;import adddatademo.demo.data.DepartmentData;
import adddatademo.demo.data.EmployeeData;
import adddatademo.demo.entities.Department;
import adddatademo.demo.entities.Employee;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;import java.util.Collection;@Controller
public class EmployeeController {@AutowiredEmployeeData employeeData;@AutowiredDepartmentData departmentData;//获取部门信息@GetMapping("/")public String toAddPage(Model model){Collection<Department> departments = departmentData.getDepartments();model.addAttribute("depts",departments);return "index";}//添加@PostMapping("/")public String addEmp(Employee employee){System.out.println(employee);employeeData.save(employee);return "redirect:/";}
}

DepartmentData.java

package adddatademo.demo.data;import adddatademo.demo.entities.Department;
import org.springframework.stereotype.Repository;import java.util.Collection;
import java.util.HashMap;
import java.util.Map;@Repository
public class DepartmentData {private static Map<Integer, Department> departments = null;static{departments = new HashMap<Integer, Department>();departments.put(100, new Department(100,"开发组"));departments.put(101, new Department(101,"运维组"));departments.put(102, new Department(102,"吃饭组"));}public Collection<Department> getDepartments(){return departments.values();}public Department getDepartment(Integer id){return departments.get(id);}
}

EmployeeData.java

package adddatademo.demo.data;import adddatademo.demo.entities.Employee;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Repository;import java.util.HashMap;
import java.util.Map;@Repository
public class EmployeeData {private static Map<Integer, Employee> employees = null;@Autowiredprivate DepartmentData departmentData;static{employees = new HashMap<Integer, Employee>();}private static Integer initId = 1000;public void save(Employee employee){if(employee.getId() == null){employee.setId(initId++);}employee.setDepartment(departmentData.getDepartment(employee.getDepartment().getId()));employees.put(employee.getId(), employee);}
}

Department.java

package adddatademo.demo.entities;public class Department {private Integer id;private String departmentName;public Department(){}public Department(Integer id, String departmentName) {this.id = id;this.departmentName = departmentName;}public Integer getId() {return id;}public void setId(Integer id) {this.id = id;}public String getDepartmentName() {return departmentName;}public void setDepartmentName(String departmentName) {this.departmentName = departmentName;}@Overridepublic String toString() {return "Department{" +"id=" + id +", departmentName='" + departmentName + '\'' +'}';}
}

Employee.java

package adddatademo.demo.entities;import java.util.Date;public class Employee {private Integer id;private String name;private String email;//1 male, 0 femaleprivate Integer gender;private Department department;private Date birth;public Integer getId() {return id;}public void setId(Integer id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public String getEmail() {return email;}public void setEmail(String email) {this.email = email;}public Integer getGender() {return gender;}public void setGender(Integer gender) {this.gender = gender;}public Department getDepartment() {return department;}public void setDepartment(Department department) {this.department = department;}public Date getBirth() {return birth;}public void setBirth(Date birth) {this.birth = birth;}public Employee(Integer id, String name, String email, Integer gender, Department department, Date birth) {this.id = id;this.name = name;this.email = email;this.gender = gender;this.department = department;this.birth = birth;}public Employee(){}@Overridepublic String toString() {return "Employee{" +"id=" + id +", name='" + name + '\'' +", email='" + email + '\'' +", gender=" + gender +", department=" + department +", birth=" + birth +'}';}
}

index.html

<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head><meta charset="UTF-8"><title>Title</title><link href="#" th:href="@{/webjars/bootstrap/4.0.0/css/bootstrap.css}" rel="stylesheet">
</head>
<body><form th:action="@{/}" method="post"><input type="hidden" name="_method" value="put" th:if="${emp!=null}"/><input type="hidden" name="id" th:if="${emp!=null}" th:value="${emp.id}"><div class="form-group"><label>姓名</label><input name="name" type="text" class="form-control" placeholder="IT1995" th:value="${emp!=null}?${emp.lastName}"></div><div class="form-group"><label>邮箱</label><input name="email" type="email" class="form-control" placeholder="570176391@qq.com" th:value="${emp!=null}?${emp.email}"></div><div class="form-group"><label>性别</label><br/><div class="form-check form-check-inline"><input class="form-check-input" type="radio" name="gender" value="1" th:checked="${emp!=null}?${emp.gender==1}"><label class="form-check-label">男</label></div><div class="form-check form-check-inline"><input class="form-check-input" type="radio" name="gender" value="0" th:checked="${emp!=null}?${emp.gender==0}"><label class="form-check-label">女</label></div></div><div class="form-group"><label>部门</label><!--提交的是部门的id--><select class="form-control" name="department.id"><option th:selected="${emp!=null}?${dept.id == emp.department.id}" th:value="${dept.id}" th:each="dept:${depts}" th:text="${dept.departmentName}">1</option></select></div><div class="form-group"><label>生日</label><input name="birth" type="text" class="form-control" placeholder="2019/3/12" th:value="${emp!=null}?${#dates.format(emp.birth, 'yyyy-MM-dd HH:mm')}"></div><button type="submit" class="btn btn-primary" th:text="${emp!=null}?'修改':'添加'">添加</button>
</form></body>
</html>

porn.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>1.5.19.RELEASE</version><relativePath/> <!-- lookup parent from repository --></parent><groupId>com.loginWebDemo</groupId><artifactId>demo</artifactId><version>0.0.1-SNAPSHOT</version><name>loginWeb</name><description>Demo project for Spring Boot</description><properties><java.version>1.8</java.version><thymeleaf.version>3.0.9.RELEASE</thymeleaf.version><thymeleaf-layout-dialect.version>2.2.2</thymeleaf-layout-dialect.version></properties><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-thymeleaf</artifactId></dependency><!--引入jquery-webjar--><dependency><groupId>org.webjars</groupId><artifactId>jquery</artifactId><version>3.3.1</version></dependency><!--引入bootstrap--><dependency><groupId>org.webjars</groupId><artifactId>bootstrap</artifactId><version>4.0.0</version></dependency></dependencies><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build></project>

Spring Boot提交表单信息相关推荐

  1. 第 27 讲 SpringBoot提交表单信息

    第27讲 SpringBoot提交表单信息 文章目录 第27讲 SpringBoot提交表单信息 1. 引入依赖:pom.xml 2. 引入前端文件 2.1 greet.html 2.2 result ...

  2. java jquery提交表单数据_[Java教程]jquery实现ajax提交表单信息

    [Java教程]jquery实现ajax提交表单信息 0 2016-08-23 15:00:08 最近在思考优化项目,想自己扩展一个jquery自动获取表单中的数据进行ajax提交.本人没有完整性学习 ...

  3. method属性值为get提交表单信息,为什么在地址栏不会显示呢。

    method属性值为get提交表单信息,为什么在地址栏不会显示呢. <!DOCTYPE html> <html lang="en"> <head> ...

  4. SpringMVC使用form标签提交表单信息出现Invalid property 'department' of bean class的问题及解决办法

    首先先贴出原代码 <form:form action="emp" method="POST" modelAttribute="employee& ...

  5. java post 登陆_java HttpPost 密码登录和提交表单的案例

    记录java HttpPost 密码登录鉴权和提交表单的案例,使用的是httppost而不是HttpURLConnection httpost需要下面的依赖 org.apache.httpcompon ...

  6. 4.jQuery中Ajax提交表单数据

    目录 1  表单的同步提交 2  Ajax监听表单提交事件 submit 3  阻止表单的默认提交行为 e.preventDefault() 4  获取表单内的数据 4.1 字符串型 serializ ...

  7. Spring boot + maven + jetty9在提交表单的时候出现Form too large

    使用Spring boot + maven + jetty9 提交表单的时候,表单过长时,会在org.eclipse.jetty.server.Requset抛出Form too large:XXX ...

  8. Spring MVC与表单日期提交的问题

    Spring MVC与表单日期提交的问题 spring mvc 本身并不提供日期类型的解析器,需要手工绑定, 否则会出现非法参数异常. org.springframework.beans.BeanIn ...

  9. php表单退出怎么写,PHP提交表单失败后如何保留填写的信息

    [导读]本文章来给各位同学介绍PHP提交表单失败后如何保留填写的信息一些方法总结,最常用的就是使用缓存方式了,这种方法如果网速慢是可能出问题的,最好的办法就是使用ajax了.1.使用header头设置 ...

最新文章

  1. php的闭包函数use的使用
  2. 人工智能技术进阶路线
  3. ICML2020 | PGFS:如何保证生成分子是可合成的?强化学习来帮忙
  4. mysql搭建主从的目的_mysql搭建主从
  5. 64位大内存虚拟机Page File的存放位置
  6. oracle 删除补全日志组_【REDO】删除REDO LOG重做日志组后需要手工删除对应的日志文件(转)...
  7. js 解析 url参数中文的情况
  8. OpenCV之highgui 模块. 高层GUI和媒体I/O: 为程序界面添加滑动条 OpenCV的视频输入和相似度测量 用OpenCV创建视频
  9. java 大于30分钟,如何将会话超时设置为大于30分钟
  10. 书写css伪类时冒号前或后多个空格导致该规则失效-softbar
  11. OEL6.1下oracle 11gr2 ASM安装
  12. WebAPP ViewPort iPhone5 黑边解决方案
  13. AdRotator,广告轮播 #1 -- 透过XML档来作设定。
  14. 端口与进程-----Window cmd命令
  15. 去宇宙条面试被问:HashMap 为什么线程不安全?
  16. 【软考系统架构设计师】2010年下系统架构师案例分析历年真题
  17. 关于background背景和img图片
  18. Android Input事件处理
  19. win11VMware打开虚拟机就蓝屏重启以及启动不了的解决方案(最全方案)
  20. showModalDialog打开窗口时不跳入新页面设置

热门文章

  1. jquery cookie的用法
  2. 电脑广告弹窗多?安利一下:程序员常用 7 款Chrome去广告插件
  3. 天天在做图表,其实你根本不懂数据可视化
  4. 《商业智能BI白皮书3.0》正式发布(附下载链接)
  5. 我花600小时,调研30家银行,为你讲透银行数据架构,小白都能懂
  6. 解析|不懂销售数据分析,就是一笔糊涂账!
  7. 格式工厂2012致力于建立一个不受强大的团队
  8. 飞鸽传书2007绿色版提供了无限量内部沟通方案
  9. 易混淆知识点(2):display:none与visible:hidden的区别
  10. html中添加背景音乐的标签,添加背景音乐的html标签是什么