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.效果

      

      

    二:

  • 相关阅读:
    蓝桥网试题 java 基础练习 特殊的数字
    蓝桥网试题 java 基础练习 杨辉三角形
    蓝桥网试题 java 基础练习 查找整数
    蓝桥网试题 java 基础练习 数列特征
    蓝桥网试题 java 基础练习 字母图形
    蓝桥网试题 java 基础练习 01字串
    蓝桥网试题 java 基础练习 回文数
    蓝桥网试题 java 基础练习 特殊回文数
    Using text search in Web page with Sikuli
    each of which 用法
  • 原文地址:https://www.cnblogs.com/juncaoit/p/8505035.html
Copyright © 2011-2022 走看看