SpringMVC_14_RESTFUL_CRUD(三)实现查询并且显示所有数据

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

<%@ 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";
    }

}

猜你喜欢

转载自blog.csdn.net/weixin_42036647/article/details/85851861