ok,上一章搞定了显示所有的数据
这一章来搞定添加数据操作。先在list.jsp尾部添加一个标签,也就是显示了数据过后,可以添加数据的< a>标签,添加完毕后重新显示list.jsp操作。
一、编写这个< a>标签的handler方法
大家没有忘记吧,所有的处理方法都在com.springmvc.crud.handlers包里的EmployeeHandler类中处理
添加上处理这个< a>标签请求的方法
@RequestMapping(value="emp",method = RequestMethod.GET)
public String input(Map<String,Object> map){
map.put("departments",departmentDao.getDepartments());//放入departments,方便页面直接显示部门名称
map.put("employee",new Employee()); //放入一个空的Employee,这样在之后的显示不会报错,利用率更高。记住就行
return "input";
}
不难发现,return 的是"input",很容易理解,需要一个新的jsp页面来用一个表单实现注册。
二、编写这个input.jsp注册界面
很容易想到,在/web/WEB-INF/views下创建这个视图
input.jsp
扫描二维码关注公众号,回复:
4814195 查看本文章
<%@ page import="java.util.Map" %>
<%@ page import="java.util.HashMap" %>
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<!--
1.WHY使用form标签呢?
可以更快速的开发出表单页面,而且可以更方便的进行表单值的回显
2.注意:
可以通过modelAttribute属性指定绑定的模型属性,
则默认为request域对象中读取command的表单的bean.
如果该属性值也不存在,则会发生错误。
-->
<form:form action="${pageContext.request.contextPath}/emp" method="POST" modelAttribute="employee">
LastName: <form:input path="lastName"/>
<br>
Email:<form:input path="email"/>
<br>
<%
Map<String,String> genders = new HashMap<String, String>();
genders.put("1","Male");
genders.put("0","Female");
request.setAttribute("genders",genders);
%>
Gender:
<br>
<form:radiobuttons path="gender" items="${genders}" delimiter="<br>"/>
<br>
Department:<form:select path="department.id"
items="${departments}" itemLabel="departmentName" itemValue="id"></form:select>
<br>
<input type="submit" value="Submit"/>
</form:form>
</body>
</html>
tips:
1.WHY使用form标签呢?
可以更快速的开发出表单页面,而且可以更方便的进行表单值的回显
2.注意:
可以通过modelAttribute属性指定绑定的模型属性,
则默认为request域对象中读取command的表单的bean.
如果该属性值也不存在,则会发生错误。
注意:这个表单提交的action是/emp,method的是POST实现添加操作,于是需要在handler中写这个新的POST请求方法
三、处理添加POST请求
@RequestMapping(value = "/emp",method = RequestMethod.POST)
public String save(Employee employee){
employeeDao.save(employee);
return "redirect:/emps";
}
这个方法实现了把一个新的employee添加到数据库中,并且使用了一个重定向redirect到我们的第一个方法/emps,实现显示list.jsp
四、显示效果
现在的EmployeeHandler.java
package com.springmvc.crud.handlers;
import com.springmvc.crud.dao.DepartmentDao;
import com.springmvc.crud.dao.EmployeeDao;
import com.springmvc.crud.entities.Employee;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;
import java.util.Map;
@Controller
public class EmployeeHandler {
@Autowired
private EmployeeDao employeeDao;
@Autowired
private DepartmentDao departmentDao;
@RequestMapping(value = "/emp",method = RequestMethod.POST)
public String save(Employee employee){
employeeDao.save(employee);
return "redirect:/emps";
}
@RequestMapping(value="emp",method = RequestMethod.GET)
public String input(Map<String,Object> map){
map.put("departments",departmentDao.getDepartments());
map.put("employee",new Employee());
return "input";
}
@RequestMapping("/emps")
public String list(Map<String,Object> map){
map.put("employees",employeeDao.getAll());
return "list";
}
}