zoukankan      html  css  js  c++  java
  • 017 SpringMVC中CRUD实例

    一:新建项目(下面的几乎属于公共的方法,不需要改动)

    1.结构

      

      

    2.添加lib

    3.配置web.xml

     1 <?xml version="1.0" encoding="UTF-8"?>
     2 <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" id="WebApp_ID" version="3.1">
     3   <display-name>SpringMvcCRUD</display-name>
     4   <!-- 配置DispatchServlet -->
     5     <servlet>
     6         <servlet-name>DispatchServlet</servlet-name>
     7         <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
     8         <init-param>
     9             <param-name>contextConfigLocation</param-name>
    10             <param-value>classpath:springmcv.xml</param-value>
    11         </init-param> 
    12         <load-on-startup>1</load-on-startup>
    13     </servlet>
    14     <!-- 表示所有的请求都会走DispatcherServlet -->
    15     <servlet-mapping>
    16         <servlet-name>DispatchServlet</servlet-name>
    17         <url-pattern>/</url-pattern>
    18     </servlet-mapping>
    19     
    20     <!-- 配置过滤器 ,把POST请求转为DELETE,PUT请求-->
    21     <filter>
    22         <filter-name>HiddenHttpMethodFilter</filter-name>
    23         <filter-class>org.springframework.web.filter.HiddenHttpMethodFilter</filter-class>
    24     </filter>
    25     <filter-mapping>
    26         <filter-name>HiddenHttpMethodFilter</filter-name>
    27         <url-pattern>/*</url-pattern>
    28     </filter-mapping>
    29 </web-app>

    4.配置springmvc.xml

     1 <?xml version="1.0" encoding="UTF-8"?>
     2 <beans xmlns="http://www.springframework.org/schema/beans"
     3     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     4     xmlns:context="http://www.springframework.org/schema/context"
     5     xmlns:mvc="http://www.springframework.org/schema/mvc"
     6     xsi:schemaLocation="http://www.springframework.org/schema/beans 
     7     http://www.springframework.org/schema/beans/spring-beans.xsd
     8         http://www.springframework.org/schema/context 
     9         http://www.springframework.org/schema/context/spring-context-4.0.xsd
    10         http://www.springframework.org/schema/mvc 
    11         http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd">
    12     <!-- 配置自定义扫描的包 -->               
    13     <context:component-scan base-package="com.spring.it" ></context:component-scan>
    14     
    15     <!-- 配置视图解析器 -->
    16     <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
    17         <property name="prefix" value="/WEB-INF/views/" />
    18           <property name="suffix" value=".jsp" />
    19     </bean>    
    20 </beans>

    5.实体类Department

     1 package com.spring.it.enties;
     2 
     3 public class Department {
     4 
     5     private Integer id;
     6     private String departmentName;
     7 
     8     public Department() {
     9         
    10     }
    11     
    12     public Department(int i, String string) {
    13         this.id = i;
    14         this.departmentName = string;
    15     }
    16 
    17     public Integer getId() {
    18         return id;
    19     }
    20 
    21     public void setId(Integer id) {
    22         this.id = id;
    23     }
    24 
    25     public String getDepartmentName() {
    26         return departmentName;
    27     }
    28 
    29     public void setDepartmentName(String departmentName) {
    30         this.departmentName = departmentName;
    31     }
    32 
    33     @Override
    34     public String toString() {
    35         return "Department [id=" + id + ", departmentName=" + departmentName
    36                 + "]";
    37     }
    38     
    39 }

    6.实体类Employee

     1 package com.spring.it.enties;
     2 
     3 import java.util.Date;
     4 import org.springframework.format.annotation.DateTimeFormat;
     5 import org.springframework.format.annotation.NumberFormat;
     6 
     7 public class Employee {
     8 
     9     private Integer id;
    10     private String lastName;
    11     private String email;
    12     //1 male, 0 female
    13     private Integer gender;
    14     private Department department;
    15     
    16     public Employee(Integer id, String lastName, String email, Integer gender,
    17             Department department) {
    18         super();
    19         this.id = id;
    20         this.lastName = lastName;
    21         this.email = email;
    22         this.gender = gender;
    23         this.department = department;
    24     }
    25 
    26     public Employee() {
    27         
    28     }
    29     public Integer getId() {
    30         return id;
    31     }
    32 
    33     public void setId(Integer id) {
    34         this.id = id;
    35     }
    36 
    37     public String getLastName() {
    38         return lastName;
    39     }
    40 
    41     public void setLastName(String lastName) {
    42         this.lastName = lastName;
    43     }
    44 
    45     public String getEmail() {
    46         return email;
    47     }
    48 
    49     public void setEmail(String email) {
    50         this.email = email;
    51     }
    52 
    53     public Integer getGender() {
    54         return gender;
    55     }
    56 
    57     public void setGender(Integer gender) {
    58         this.gender = gender;
    59     }
    60 
    61     public Department getDepartment() {
    62         return department;
    63     }
    64 
    65     public void setDepartment(Department department) {
    66         this.department = department;
    67     }
    68     
    69     @Override
    70     public String toString() {
    71         return "Employee [id=" + id + ", lastName=" + lastName + ", email=" + email + ", gender=" + gender
    72                 + ", department=" + department + "]";
    73     }
    74 
    75     
    76 }

    7.Dao---DepartmentDao

     1 package com.spring.it.dao;
     2 
     3 import java.util.Collection;
     4 import java.util.HashMap;
     5 import java.util.Map;
     6 
     7 import org.springframework.stereotype.Repository;
     8 import com.spring.it.enties.Department;
     9 
    10 @Repository
    11 public class DepartmentDao {
    12 
    13     private static Map<Integer, Department> departments = null;
    14     
    15     static{
    16         departments = new HashMap<Integer, Department>();
    17         
    18         departments.put(101, new Department(101, "D-AA"));
    19         departments.put(102, new Department(102, "D-BB"));
    20         departments.put(103, new Department(103, "D-CC"));
    21         departments.put(104, new Department(104, "D-DD"));
    22         departments.put(105, new Department(105, "D-EE"));
    23     }
    24     
    25     public Collection<Department> getDepartments(){
    26         return departments.values();
    27     }
    28     
    29     public Department getDepartment(Integer id){
    30         return departments.get(id);
    31     }
    32     
    33 }

    8.EmployeeDao

     1 package com.spring.it.dao;
     2 
     3 import com.spring.it.enties.Department;
     4 import java.util.Collection;
     5 import java.util.HashMap;
     6 import java.util.Map;
     7 
     8 import org.springframework.beans.factory.annotation.Autowired;
     9 import org.springframework.stereotype.Repository;
    10 import com.spring.it.enties.Employee;
    11 @Repository
    12 public class EmployeeDao {
    13 
    14     private static Map<Integer, Employee> employees = null;
    15     
    16     @Autowired
    17     private DepartmentDao departmentDao;
    18     
    19     static{
    20         employees = new HashMap<Integer, Employee>();
    21 
    22         employees.put(1001, new Employee(1001, "E-AA", "aa@163.com", 1, new Department(101, "D-AA")));
    23         employees.put(1002, new Employee(1002, "E-BB", "bb@163.com", 1, new Department(102, "D-BB")));
    24         employees.put(1003, new Employee(1003, "E-CC", "cc@163.com", 0, new Department(103, "D-CC")));
    25         employees.put(1004, new Employee(1004, "E-DD", "dd@163.com", 0, new Department(104, "D-DD")));
    26         employees.put(1005, new Employee(1005, "E-EE", "ee@163.com", 1, new Department(105, "D-EE")));
    27     }
    28     
    29     private static Integer initId = 1006;
    30     
    31     public void save(Employee employee){
    32         if(employee.getId() == null){
    33             employee.setId(initId++);
    34         }
    35         
    36         employee.setDepartment(departmentDao.getDepartment(employee.getDepartment().getId()));
    37         employees.put(employee.getId(), employee);
    38     }
    39     
    40     public Collection<Employee> getAll(){
    41         return employees.values();
    42     }
    43     
    44     public Employee get(Integer id){
    45         return employees.get(id);
    46     }
    47     
    48     public void delete(Integer id){
    49         employees.remove(id);
    50     }
    51 }

    二:展示所有的员工---查看操作

    1.Controller--EmployeeHander

     1 package com.spring.it.handlers;
     2 
     3 import java.util.Map;
     4 
     5 import org.springframework.beans.factory.annotation.Autowired;
     6 import org.springframework.stereotype.Controller;
     7 import org.springframework.web.bind.annotation.RequestMapping;
     8 
     9 import com.spring.it.dao.EmployeeDao;
    10 
    11 @Controller
    12 public class EmployeeHander {
    13     @Autowired(required=true)
    14     private EmployeeDao employeeDao;
    15     
    16     @RequestMapping("/emps")
    17     public String list(Map<String,Object> map) {
    18         System.out.println("====");
    19         map.put("employee", employeeDao.getAll());
    20         return "list";
    21     }
    22 }

    2.首页index.jsp

     1 <%@ page language="java" contentType="text/html; charset=ISO-8859-1"
     2     pageEncoding="ISO-8859-1"%>
     3 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
     4 <html>
     5 <head>
     6 <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
     7 <title>Insert title here</title>
     8 </head>
     9 <body>
    10     <br>
    11     <a href="emps">list emps</a>
    12 </body>
    13 </html>

    3.list.jsp

     1 <%@ page language="java" contentType="text/html; charset=utf-8"
     2     pageEncoding="utf-8"%>
     3 <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
     4 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
     5 <html>
     6 <head>
     7 <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
     8 <title>Insert title here</title>
     9 </head>
    10 <body>
    11     This Is All Employee
    12     <c:if test="${empty requestScope.employee }">
    13         没有任何的员工信息
    14     </c:if>
    15     <c:if test="${!empty requestScope.employee }">
    16         <table border="1" cellpadding="10" cellspacing="0">
    17             <tr>            <!-- id lastName email  gender department -->
    18                 <th>ID</th>
    19                 <th>LastName</th>
    20                 <th>Email</th>
    21                 <th>Gender</th>
    22                 <th>Department</th>
    23                 <th>Edit</th>
    24                 <th>Delete</th>
    25             </tr>
    26             <c:forEach items="${requestScope.employee }" var="emp">
    27                 <tr>
    28                     <td>${emp.id}</td>
    29                     <td>${emp.lastName}</td>
    30                     <td>${emp.email}</td>
    31                     <td>${emp.gender==0?'Female':'Male'}</td>
    32                     <td>${emp.department.departmentName}</td>
    33                     <td><a href="">Edit</a></td>
    34                     <td><a href="">Delete</a></td>
    35                 </tr>
    36             </c:forEach>
    37         </table>
    38     </c:if>
    39 </body>
    40 </html>

    4.效果

      

    三:添加操作

    1.controller

      主要是增加了input与save操作。

     1 package com.spring.it.handlers;
     2 
     3 import java.util.Map;
     4 
     5 import org.springframework.beans.factory.annotation.Autowired;
     6 import org.springframework.stereotype.Controller;
     7 import org.springframework.web.bind.annotation.RequestMapping;
     8 import org.springframework.web.bind.annotation.RequestMethod;
     9 
    10 import com.spring.it.dao.DepartmentDao;
    11 import com.spring.it.dao.EmployeeDao;
    12 import com.spring.it.enties.Department;
    13 import com.spring.it.enties.Employee;
    14 
    15 @Controller
    16 public class EmployeeHander {
    17     @Autowired(required=true)
    18     private EmployeeDao employeeDao;
    19     
    20     @Autowired(required=true)
    21     private DepartmentDao departmentDao;
    22     
    23     /**
    24      * 保存,是submit提交过来的请求,属于Post请求
    25      */
    26     @RequestMapping(value="/emp",method=RequestMethod.POST)
    27     public String save(Employee employee) {
    28         employeeDao.save(employee);
    29         return "redirect:/emps";
    30     }
    31     
    32     /**
    33      * 跳转到input页面,用于添加员工,是Get请求
    34      */
    35     @RequestMapping(value="/emp",method=RequestMethod.GET)
    36     public String input(Map<String,Object> map) {
    37         map.put("department", departmentDao.getDepartments());
    38         //因为form表单的原因,默认一定要回显,第一次尽进来需要传入一个值
    39         map.put("employee", new Employee());
    40         return "input";
    41     }
    42     
    43     /**
    44      * 展示所有的员工
    45      */
    46     @RequestMapping("/emps")
    47     public String list(Map<String,Object> map) {
    48         System.out.println("====");
    49         map.put("employee", employeeDao.getAll());
    50         return "list";
    51     }
    52 }

    2.input.jsp

     1 <%@ page language="java" contentType="text/html; charset=utf-8"
     2     pageEncoding="utf-8"%>
     3 <%@ taglib prefix="form" uri="http://www.springframework.org/tags/form"%>
     4 <%@ page import="java.util.Map"%>
     5 <%@ page import="java.util.HashMap"%>
     6 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
     7 <html>
     8 <head>
     9 <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    10 <title>Insert title here</title>
    11 </head>
    12 <body>
    13     <!-- id lastName email  gender department -->
    14     <!-- modelAttribute默认的bean是command,需要改成对应的bean -->
    15     <form:form action="emp" method="POST" modelAttribute="employee">
    16         LastName:<form:input path="lastName"/><br>
    17         Email:<form:input path="email"/><br>
    18         <%
    19             Map<String,String> genders=new HashMap();
    20             genders.put("1", "Male");
    21             genders.put("0", "Female");
    22             request.setAttribute("genders", genders);
    23         %>
    24         Gender:<form:radiobuttons path="gender" items="${genders}"/><br>
    25         Department:<form:select path="department.id" 
    26                         items="${department}" itemLabel="departmentName" itemValue="id"></form:select><br>
    27         <input type="submit" values="Submit">
    28     </form:form>
    29 </body>
    30 </html>

    3.效果

      

      

    4.PS---form表单

      使用的是spring form表单,在input中需要引入标签。

      

      

    四:删除操作

    1.修改list.jsp

      因为这个时候的list.jsp的delete按钮的连接还是空的,需要补充进去。

      这个get不能直接转换成delete操作,所以需要借助js。

     1 <%@ page language="java" contentType="text/html; charset=utf-8"
     2     pageEncoding="utf-8"%>
     3 <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
     4 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
     5 <html>
     6 <head>
     7 <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
     8 <title>Insert title here</title>
     9 <script type="text/javascript" src="scripts/jquery-1.9.1.min.js"></script>
    10 <script type="text/javascript">
    11     $(function(){
    12         $(".delete").click(function(){
    13             var href = $(this).attr("href");
    14             $("form").attr("action", href).submit();    
    15             return false;
    16         })
    17     })
    18 </script>
    19 </head>
    20 <body>
    21     <form action="" method="POST">
    22         <input type="hidden" name="_method" value="DELETE">
    23     </form>
    24 
    25     This Is All Employee
    26     <c:if test="${empty requestScope.employee }">
    27         没有任何的员工信息
    28     </c:if>
    29     <c:if test="${!empty requestScope.employee }">
    30         <table border="1" cellpadding="10" cellspacing="0">
    31             <tr>            <!-- id lastName email  gender department -->
    32                 <th>ID</th>
    33                 <th>LastName</th>
    34                 <th>Email</th>
    35                 <th>Gender</th>
    36                 <th>Department</th>
    37                 <th>Edit</th>
    38                 <th>Delete</th>
    39             </tr>
    40             <c:forEach items="${requestScope.employee }" var="emp">
    41                 <tr>
    42                     <td>${emp.id}</td>
    43                     <td>${emp.lastName}</td>
    44                     <td>${emp.email}</td>
    45                     <td>${emp.gender==0?'Female':'Male'}</td>
    46                     <td>${emp.department.departmentName}</td>
    47                     <td><a href="">Edit</a></td>
    48                     <td><a href="emp/${emp.id}" class="delete">Delete</a></td>
    49                 </tr>
    50             </c:forEach>
    51         </table>
    52     </c:if>
    53     <br><br>
    54     <a href="emp">Add New Employee</a>
    55 </body>
    56 </html>

    2.controller

     1 package com.spring.it.handlers;
     2 
     3 import java.util.Map;
     4 
     5 import org.springframework.beans.factory.annotation.Autowired;
     6 import org.springframework.stereotype.Controller;
     7 import org.springframework.web.bind.annotation.PathVariable;
     8 import org.springframework.web.bind.annotation.RequestMapping;
     9 import org.springframework.web.bind.annotation.RequestMethod;
    10 import org.springframework.web.bind.annotation.ResponseBody;
    11 
    12 import com.spring.it.dao.DepartmentDao;
    13 import com.spring.it.dao.EmployeeDao;
    14 import com.spring.it.enties.Department;
    15 import com.spring.it.enties.Employee;
    16 
    17 @Controller
    18 public class EmployeeHander {
    19     @Autowired(required=true)
    20     private EmployeeDao employeeDao;
    21     
    22     @Autowired(required=true)
    23     private DepartmentDao departmentDao;
    24     
    25     /**
    26      * 删除操作
    27      */
    28     @RequestMapping(value="/emp/{id}",method=RequestMethod.DELETE)
    29     @ResponseBody
    30     public String delete(@PathVariable("id") Integer id) {
    31         employeeDao.delete(id);
    32         return "redirect:/emps";
    33     }
    34     
    35     /**
    36      * 保存,是submit提交过来的请求,属于Post请求
    37      */
    38     @RequestMapping(value="/emp",method=RequestMethod.POST)
    39     public String save(Employee employee) {
    40         employeeDao.save(employee);
    41         return "redirect:/emps";
    42     }
    43     
    44     /**
    45      * 跳转到input页面,用于添加员工,是Get请求
    46      */
    47     @RequestMapping(value="/emp",method=RequestMethod.GET)
    48     public String input(Map<String,Object> map) {
    49         map.put("department", departmentDao.getDepartments());
    50         //因为form表单的原因,默认一定要回显,第一次尽进来需要传入一个值
    51         map.put("employee", new Employee());
    52         return "input";
    53     }
    54     
    55     /**
    56      * 展示所有的员工
    57      */
    58     @RequestMapping("/emps")
    59     public String list(Map<String,Object> map) {
    60         System.out.println("====");
    61         map.put("employee", employeeDao.getAll());
    62         return "list";
    63     }
    64 }

     

    3.处理静态资源

      因为springmvc拦截所有的请求,所以静态资源也被拦截,但是静态资源没有被映射。

      但是静态资源是不需要映射的。

      解决方式是在springmvc的配置文件中配置default-servlet-handler,但是以前的功能又出现了问题,这个时候需要添加上annotation-driven

     1 <?xml version="1.0" encoding="UTF-8"?>
     2 <beans xmlns="http://www.springframework.org/schema/beans"
     3     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     4     xmlns:context="http://www.springframework.org/schema/context"
     5     xmlns:mvc="http://www.springframework.org/schema/mvc"
     6     xsi:schemaLocation="http://www.springframework.org/schema/beans 
     7     http://www.springframework.org/schema/beans/spring-beans.xsd
     8         http://www.springframework.org/schema/context 
     9         http://www.springframework.org/schema/context/spring-context-4.0.xsd
    10         http://www.springframework.org/schema/mvc 
    11         http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd">
    12     <!-- 配置自定义扫描的包 -->               
    13     <context:component-scan base-package="com.spring.it" ></context:component-scan>
    14     
    15     <!-- 配置视图解析器 -->
    16     <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
    17         <property name="prefix" value="/WEB-INF/views/" />
    18           <property name="suffix" value=".jsp" />
    19     </bean>    
    20     
    21     <mvc:default-servlet-handler/>
    22     <mvc:annotation-driven></mvc:annotation-driven>
    23 </beans>

    4.效果

      

    五:修改

    1.修改list

      Edit的连接需要修改。

     1 <%@ page language="java" contentType="text/html; charset=utf-8"
     2     pageEncoding="utf-8"%>
     3 <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
     4 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
     5 <html>
     6 <head>
     7 <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
     8 <title>Insert title here</title>
     9 <script type="text/javascript" src="scripts/jquery-1.9.1.min.js"></script>
    10 <script type="text/javascript">
    11     $(function(){
    12         $(".delete").click(function(){
    13             var href = $(this).attr("href");
    14             $("form").attr("action", href).submit();    
    15             return false;
    16         })
    17     })
    18 </script>
    19 </head>
    20 <body>
    21     <form action="" method="POST">
    22         <input type="hidden" name="_method" value="DELETE">
    23     </form>
    24 
    25     This Is All Employee
    26     <c:if test="${empty requestScope.employee }">
    27         没有任何的员工信息
    28     </c:if>
    29     <c:if test="${!empty requestScope.employee }">
    30         <table border="1" cellpadding="10" cellspacing="0">
    31             <tr>            <!-- id lastName email  gender department -->
    32                 <th>ID</th>
    33                 <th>LastName</th>
    34                 <th>Email</th>
    35                 <th>Gender</th>
    36                 <th>Department</th>
    37                 <th>Edit</th>
    38                 <th>Delete</th>
    39             </tr>
    40             <c:forEach items="${requestScope.employee}" var="emp">
    41                 <tr>
    42                     <td>${emp.id}</td>
    43                     <td>${emp.lastName}</td>
    44                     <td>${emp.email}</td>
    45                     <td>${emp.gender==0?'Female':'Male'}</td>
    46                     <td>${emp.department.departmentName}</td>
    47                     <td><a href="emp/${emp.id}">Edit</a></td>
    48                     <td><a href="emp/${emp.id}" class="delete">Delete</a></td>
    49                 </tr>
    50             </c:forEach>
    51         </table>
    52     </c:if>
    53     <br><br>
    54     <a href="emp">Add New Employee</a>
    55 </body>
    56 </html>

    2.java

      主要有三个部分:

      弹出到修改的页面函数

      更新的函数

      保证lastname不改变的函数。

     1 package com.spring.it.handlers;
     2 
     3 import java.util.Map;
     4 
     5 import org.springframework.beans.factory.annotation.Autowired;
     6 import org.springframework.stereotype.Controller;
     7 import org.springframework.web.bind.annotation.ModelAttribute;
     8 import org.springframework.web.bind.annotation.PathVariable;
     9 import org.springframework.web.bind.annotation.RequestMapping;
    10 import org.springframework.web.bind.annotation.RequestMethod;
    11 import org.springframework.web.bind.annotation.RequestParam;
    12 import org.springframework.web.bind.annotation.ResponseBody;
    13 import org.springframework.web.servlet.view.RedirectView;
    14 
    15 import com.spring.it.dao.DepartmentDao;
    16 import com.spring.it.dao.EmployeeDao;
    17 import com.spring.it.enties.Department;
    18 import com.spring.it.enties.Employee;
    19 
    20 @Controller
    21 public class EmployeeHander {
    22     @Autowired(required=true)
    23     private EmployeeDao employeeDao;
    24     
    25     @Autowired(required=true)
    26     private DepartmentDao departmentDao;
    27 
    28     /**
    29      * 使得lastName不被修改,使用ModelAttribute
    30      */
    31     @ModelAttribute
    32     public void getEmployee(@RequestParam(value="id",required=false) Integer id,Map<String,Object> map) {
    33         if(id!=null) {
    34             map.put("employee", employeeDao.get(id));
    35         }
    36     }
    37     
    38     /**
    39      * 编辑,主要是提交
    40      */
    41     @RequestMapping(value="/emp",method=RequestMethod.PUT)
    42     public String update(Employee employee) {
    43         employeeDao.save(employee);
    44         return "redirect:/emps";
    45     }
    46         
    47     /**
    48      * 编辑,主要是跳转到要编辑的页面
    49      */
    50     @RequestMapping(value="/emp/{id}",method=RequestMethod.GET)
    51     public String input(@PathVariable("id") Integer id,Map<String,Object> map) {
    52         map.put("department", departmentDao.getDepartments());
    53         //回显
    54         map.put("employee", employeeDao.get(id));
    55         return "input";
    56     }
    57     
    58     /**
    59      * 删除操作
    60      */
    61     @RequestMapping(value="/emp/{id}",method=RequestMethod.DELETE)
    62     @ResponseBody
    63     public String delete(@PathVariable("id") Integer id) {
    64         employeeDao.delete(id);
    65         return "redirect:/emps";
    66     }
    67     
    68     /**
    69      * 保存,是submit提交过来的请求,属于Post请求
    70      */
    71     @RequestMapping(value="/emp",method=RequestMethod.POST)
    72     public String save(Employee employee) {
    73         employeeDao.save(employee);
    74         return "redirect:/emps";
    75     }
    76     
    77     /**
    78      * 跳转到input页面,用于添加员工,是Get请求
    79      */
    80     @RequestMapping(value="/emp",method=RequestMethod.GET)
    81     public String input(Map<String,Object> map) {
    82         map.put("department", departmentDao.getDepartments());
    83         //因为form表单的原因,默认一定要回显,第一次尽进来需要传入一个值
    84         map.put("employee", new Employee());
    85         return "input";
    86     }
    87     
    88     /**
    89      * 展示所有的员工
    90      */
    91     @RequestMapping("/emps")
    92     public String list(Map<String,Object> map) {
    93         System.out.println("====");
    94         map.put("employee", employeeDao.getAll());
    95         return "list";
    96     }
    97 }

    3.input页面

      根据id是否存在,决定lastname是否显示。

      id决定是否进行走PUT。

     1 <%@ page language="java" contentType="text/html; charset=utf-8"
     2     pageEncoding="utf-8"%>
     3 <%@ taglib prefix="form" uri="http://www.springframework.org/tags/form"%>
     4 <%@ page import="java.util.Map"%>
     5 <%@ page import="java.util.HashMap"%>
     6 <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
     7 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
     8 <html>
     9 <head>
    10 <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    11 <title>Insert title here</title>
    12 </head>
    13 <body>
    14     <!-- id lastName email  gender department -->
    15     <!-- modelAttribute默认的bean是command,需要改成对应的bean -->
    16     <form:form action="${pageContext.request.contextPath}/emp" method="POST" modelAttribute="employee">
    17         <!-- lastName在修改的时候,不能被显示 -->
    18         <c:if test="${employee.id == null}">
    19             LastName:<form:input path="lastName"/><br>
    20         </c:if>
    21         <c:if test="${employee.id != null}">
    22             <form:hidden path="id"/>
    23             <!-- 不能使用form标签,因为modelAttribute对应的bean中没有_method这个属性,只能使用input -->
    24             <input type="hidden" name="_method" value="PUT"/>
    25         </c:if>
    26         
    27         Email:<form:input path="email"/><br>
    28         <%
    29             Map<String,String> genders=new HashMap();
    30             genders.put("1", "Male");
    31             genders.put("0", "Female");
    32             request.setAttribute("genders", genders);
    33         %>
    34         Gender:<form:radiobuttons path="gender" items="${genders}"/><br>
    35         Department:<form:select path="department.id" 
    36                         items="${department}" itemLabel="departmentName" itemValue="id"></form:select><br>
    37         <input type="submit" values="Submit">
    38     </form:form>
    39 </body>
    40 </html>

    4.效果

      

      

    二:

  • 相关阅读:
    JavaScript笔试必备语句
    JQuery获取元素的方法总结
    JavaScript易错知识点整理
    程序员都讨厌开会?
    JS操作select下拉框动态变动(创建/删除/获取)
    用 jQuery.ajaxSetup 实现对请求和响应数据的过滤
    HTML5 学习笔记(一)——HTML5概要与新增标签
    json返回数据库的时间格式为/Date(1477294037000)/,怎样在前台进行格式化转换
    Hive 12、Hive优化
    Hive 11、Hive嵌入Python
  • 原文地址:https://www.cnblogs.com/juncaoit/p/8505035.html
Copyright © 2011-2022 走看看