Spring MVC学习教程之流程表单提交,3步实现这个功能
时间:2022-04-29
本文章向大家介绍Spring MVC学习教程之流程表单提交,3步实现这个功能,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
本文中将用Spring实现流程表单的提交功能,具体功能是使用web表单来添加一个新员工到员工名单列表中。
网络配图
第1步:准备所需的类
添加 addEmployeeEmployeeManager.java方法,这个方法将用于添加新员工到列表中。
EmployeeManager.java
package com.programcreek.helloworld.service;
import java.util.ArrayList;
import java.util.List;
import com.programcreek.helloworld.model.Employee;
public class EmployeeManager {
private static List<Employee> employeeList;
public EmployeeManager(){
employeeList = new ArrayList<Employee>();
employeeList.add(new Employee(1, "Mike", "Smith"));
employeeList.add(new Employee(2, "John", "Taylor"));
employeeList.add(new Employee(3, "Dave", "Wilson"));
}
public List<Employee> getEmployeeList(){
return employeeList;
}
public Employee addEmployee(Employee e){
Employee employee = new Employee();
employee.setId(employeeList.size()+1);
employee.setFirstName(e.getFirstName());
employee.setLastName(e.getLastName());
employeeList.add(employee);
return employee;
}
}
Employee.java
package com.programcreek.helloworld.model;
public class Employee {
private int id;
private String lastName;
private String firstName;
public Employee(){
}
public Employee(int id, String lastName, String firstName) {
this.id = id;
this.lastName = lastName;
this.firstName = firstName;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getLastName() {
return lastName;
}
public void setLastName(String lastName) {
this.lastName = lastName;
}
public String getFirstName() {
return firstName;
}
public void setFirstName(String firstName) {
this.firstName = firstName;
}
}
第2步:创建控制器
创建一个控制器来处理表单的提交。
EmployeeAddController.java
package com.programcreek.helloworld.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;
import com.programcreek.helloworld.model.Employee;
import com.programcreek.helloworld.service.EmployeeManager;
@Controller
public class EmployeeAddController {
@RequestMapping("/showEmployeeForm")
public ModelAndView getEmployeeForm(){
ModelAndView mv = new ModelAndView("employeeAdd");
mv.addObject("employeeEntity", new Employee());
return mv;
}
@RequestMapping("/addEmployee")
public ModelAndView addEmployee(@ModelAttribute Employee e){
ModelAndView mv = new ModelAndView("EmployeeList");
EmployeeManager employeeManager = new EmployeeManager();
employeeManager.addEmployee(e);
mv.addObject("EmployeeList", employeeManager.getEmployeeList());
return mv;
}
}
网络配图
控制器有两个请求:一个是实现网页表单和其他流程表单的提交,这里用 @ModelAttribute的注解形式将属性映射到一个
员工表。
第3步:创建视图即jsp页面
employeeAdd.jsp
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<body>
<h1>Add Employee</h1>
<form:form method="post" modelAttribute="employeeEntity" action="addEmployee">
First Name:<form:input path="firstName"></form:input><br/>
Last Name: <form:input path="lastName"></form:input><br/>
<input type="submit" value="Submit">
</form:form>
</body>
</html>
添加一个新的链接,用来完成添加员工。
index.jsp
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Spring 4 MVC - HelloWorld Index Page</title>
</head>
<body>
<center>
<h3>
<a href="hello">Hello World</a>
</h3>
<h3>
<a href="employee">员工列表</a>
</h3>
<h3>
<a href="showEmployeeForm">添加</a>
</h3>
</center>
</body>
</html>
- 古中国数学家的计算力真是惊人
- 基于Apache Spark机器学习的客户流失预测
- 数据库连接字符串的处理方法!加密解密连接字符串。
- ASP.net实现无扩展名的URL重写。简单、方便、无需ISAPI。
- 通过自定义ServiceHost实现对WCF的扩展[实例篇]
- 通过自定义ServiceHost实现对WCF的扩展[原理篇]
- python使用rsa库做公钥解密(网上别处找不到)
- 通过“四大行为”对WCF的扩展[原理篇]
- WCF客户端运行时架构体系详解[下篇]
- WCF客户端运行时架构体系详解[上篇]
- WCF服务端运行时架构体系详解[续篇]
- [WCF-Discovery] 实例演示:如何利用服务发现机制实现服务的“动态”调用?
- [WCF-Discovery]服务如何能被”发现”
- 我的数据访问函数库的源代码(一)—— 共用部分
- java教程
- Java快速入门
- Java 开发环境配置
- Java基本语法
- Java 对象和类
- Java 基本数据类型
- Java 变量类型
- Java 修饰符
- Java 运算符
- Java 循环结构
- Java 分支结构
- Java Number类
- Java Character类
- Java String类
- Java StringBuffer和StringBuilder类
- Java 数组
- Java 日期时间
- Java 正则表达式
- Java 方法
- Java 流(Stream)、文件(File)和IO
- Java 异常处理
- Java 继承
- Java 重写(Override)与重载(Overload)
- Java 多态
- Java 抽象类
- Java 封装
- Java 接口
- Java 包(package)
- Java 数据结构
- Java 集合框架
- Java 泛型
- Java 序列化
- Java 网络编程
- Java 发送邮件
- Java 多线程编程
- Java Applet基础
- Java 文档注释
- Angular Component 开发时属性和运行时属性的对照
- 第002课 ubuntu环境搭建和ubuntu图形界面操作(免费)
- 爆破cobalt strike密码脚本
- 第003课 linux入门命令详解
- 第004课 vi编辑器的使用详解
- 【前端JQ】jQuery赋值checked的几种写法,attr()方法不好使,建议使用prop()方法。
- 达梦数据库适配问题
- Angular Component UI单元测试的隔离策略
- 第005课 linux进阶命令(文件查找,文件解压操作详解)
- 没有这 29 款插件的 Chrome 是没有灵魂的
- 第006课 开发板熟悉与体验
- Angular Observable数据类型的单元测试数据准备
- 第007课 裸机开发步骤和工具使用(SourceInght NotePad++使用)
- Angular jasmine.expect单步调试
- 第008课 第1个ARM裸板程序及引申(点亮LED灯)