SpringMVC day_3 (CRUD)

index.jsp 开始页面

<a href="empList">EMPLS</a>

‘两个模拟数据库的javaDAO   两个bean
  ①Employees{
  private Integer id;
	//jsr303提供的注解  可以验证字面值
	private String lastName;
	@Past(message="请输入正确的日期类型!!!")
	@DateTimeFormat(pattern="yyyy-MM-dd")
	private  Date  birthday;
	@Email(message="请输入正确的电子邮箱类型!!!")
	private String email;
	//1 male, 0 female
	private Integer gender;
	
	private Department department;
}
②Department{
  private  Integer  id;
  private  String  departmentName; 
}
两个DAO   :
① EmployeeDAO{
private  Map<Inetger, Employee>  employees=null;
@Autowired
private   DepartmentDao  departmentDao;
static{
     employees=enw HashMap<>();
employees.put(1001,new Employee(1001,"E-AA","aa@163.com"),1,new Department(101,"D-AA") );
employees.put(1001,new Employee(1002,"E-BB","aa@163.com"),2,new Department(102,"D-BB") );
employees.put(1001,new Employee(1003,"E-CC","aa@163.com"),3,new Department(103,"D-CC") );
private static  Integer initId=1006;
public  void save(Employee employee){
  if(employee.getId()==null){
            employee.setId(initId++);
         employee.setDepartment(departmentDao.getDepartment(empoyee.getDepartment().getId()));
employees.put(employee.getId(),employee);
}
public  Collection<Employee> getAll(){
return employees.values();
}
public  Employee get(Inetger id){
return employees.get(id);}
public  void  delete(Inetger id){
  employees.remove(id);}}
②DepartmentDao 
private  static  Map<Integer,Department >  departments=null;
static{
    departments=new HashMap<>();
department.put(101,new Department(101,"D-AA"));
department.put(102,new Department(102,"D-BB"));
department.put(103,new Department(103,"D-CC"));
}
//返回全部信息
public  Collection<Department> getDepartments(){
return departments.values();
}
//返回的是一个 部门   "D-AA"
public  Department  getDepartment(Integer id){
return departments.get(Id);
}
 

 

empList.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
    <%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<!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=UTF-8">
<title>Insert title here</title>
<script type="text/javascript" src="js/jquery.min.js"></script>
<script type="text/javascript">
  $(function(){
	  $(".delete").click(function(){
		  var  href=$(this).attr("href");
		  $("form").attr("action",href).submit();
		  return false;
	  })
  })
function test(){
    $.getJSON("${pageContext.request.contextPath}/testRequestBody",function(result){
           $.each(result,function(i,field){
                     alert(field.id);  //获取@RequestBody传过来的值

})

})

}

</script>
</head>
<body>
   <c:if test="${empty  emps }">
   没有员工信息
   </c:if>
   <c:if test="${!empty  emps }">
      <table cellspacing="0" border="1" cellpadding="10">
           <tr>
           <td>id</td>
           <td>lastName</td>
           <td>email</td>
           <td>gender</td>
           <td>department</td>
           <td>修改/删除</td>
           </tr>
      <c:forEach items="${emps }" var="emps">
       <tr>
          <td>${emps.id}</td>
          <td>${emps.lastName}</td>
          <td>${emps.email}</td>
          <td>${emps.gender==0?'female':'male'}</td>
          <td>${emps.department}</td>
         <td>
         <a href="addEmp/${emps.id }">PUT/</a>
         <a class="delete" href="deleteEmp/${emps.id }">DELETE</a>
         </td>
       </tr>
      </c:forEach>
      </table>
   </c:if>
   <a href="addEmp">AddEmp</a>
  <input  type="button" onclick=“test()” value="ajax"/>
   <form action="" method="post">
   <input type="hidden" name="_method" value="DELETE"/>
   </form>
</body>
</html>
saveEmp.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
    <%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
    <%@taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
<!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=UTF-8">
<title>Insert title here</title>
       
</head>
<body>
    <form:form action="${pageContext.request.contextPath }/saveEmp" method="post" modelAttribute="employee">
    <!--两个请求共用一个jsp 所以要判断是哪个请求  -->
    <c:if test="${employee.id !=null }">
    <form:hidden path="id"/><!--根据id修改信息  所以必须有一个id -->
    <input type="hidden" name="_method" value="PUT"/>
    </c:if>
    <c:if test="${empty employee.id}">//为空的时候显示  修改的时候不能修改
    lastName:<form:input path="lastName"/>
    </c:if>
    <br><br>
    emali:<form:input path="email"/><!--path值要与属性值一致       -->
    <br><br>
    gender:<form:radiobuttons path="gender" items="${genders }"/>
    <br><br>
    departement::<form:select path="department.id" items="${departments }" itemValue="id" itemLabel="departmentName"></form:select>
    <br><br>
    <input  type="submit" value="Submit"/>
    <br><br>
    </form:form>
</body>
</html>
package com.Greatest.Springmvc.crud.controller;
import java.util.Collection;


import java.util.HashMap;
import java.util.Map;

import javax.validation.Valid;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.validation.BindingResult;
import org.springframework.validation.FieldError;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;

import com.Greatest.Springmvc.crud.dao.DepartmentDao;
import com.Greatest.Springmvc.crud.dao.EmployeeDao;
import com.Greatest.Springmvc.crud.model.Employee;
@Controller
public  class EmpController{
	//数据封装在Dao中  方法也在DAO 中
	@Autowired
	private EmployeeDao  employeeDao;
	@Autowired
	private DepartmentDao  departmentDao;
	@ModelAttribute 
	public  void  getname(Integer  id,Map<String,Object> map){
		map.put("employ", employeeDao.get(id));
		//put:Key和方法中的Employee的对象employee一样 传给最终获取的那个方法 
	}
	@RequestMapping("/testResponseBody")
	@ResponseBody
	public Collection<Employee> get(){
		return employeeDao.getAll();
	}
	//修改员工   回显  点击的时候  页面和添加页面一样   有数据的回显  注意 请求方式为 PUT
	@RequestMapping(value="/addEmp/{id}",method=RequestMethod.GET)
	public  String  addEmp(@PathVariable("id") Integer id,Model model ){
		Map<Integer,String> map=new HashMap<>();
		map.put(0, "female");
		map.put(1, "male");
		model.addAttribute("genders", map);
		model.addAttribute("departments", departmentDao.getDepartments());
		//需要回显  传回的对象有值                                         通过id查询值
		model.addAttribute("employees", employeeDao.get(id));
		return  "saveEmp";
	}
	//与插入用的同一个   通过请求方式 寻找指定的方法 
	@RequestMapping(value="/saveEmp",method=RequestMethod.PUT)
	public  String  updateEmp(@Valid Employee employ,BindingResult result,Model model){
		if(result.getErrorCount()>0){
			for(FieldError error:result.getFieldErrors()){
				System.out.println("error"+error+error.getDefaultMessage());
			}//出错时回显
			Map<Integer,String> genders=new HashMap<>();
	    	//判断  是男是女
	    	genders.put(0, "female");
	    	genders.put(1, "male");
	    	//像浏览器发送   请求
	    	model.addAttribute("genders", genders);
			model.addAttribute("departments", departmentDao.getDepartments());
	    	//form表单 有一个属性  必须要传入一个对象       添加的时候  表单为空 所以对象为空
	    	model.addAttribute("employees", employ);
			return "saveEmp";
		}	employeeDao.save(employ);
		return "redirect:/empList";//重定向 
	}
	
	//删除员工   请求方式为DELETE  原来是a链接  通过 JavaScript 将a链接 的href地址值  赋给form表单的action属性值
	@RequestMapping(value="/deleteEmp/{id}",method=RequestMethod.DELETE)
	public String deleteEmp(@PathVariable("id") Integer id){
		employeeDao.delete(id);
		return "redirect:/empList";
	}
    //获取员工列表
	@RequestMapping(value="/empList",method=RequestMethod.GET)
	public  String  empList(Model model){
		model.addAttribute("emps", employeeDao.getAll());
		return "empList";
	}
	/*添加员工前准备的数据  + 跳转saveEmp
	 * */
	@RequestMapping("/addEmp")
     public  String  addEmp(Model model){
    	Map<Integer,String> genders=new HashMap<>();
    	//判断  是男是女
    	genders.put(0, "female");
    	genders.put(1, "male");
    	//像浏览器发送   请求
    	model.addAttribute("genders", genders);
		model.addAttribute("departments", departmentDao.getDepartments());
    	//form表单 有一个属性  必须要传入一个对象       添加的时候  表单为空 所以对象为空
    	model.addAttribute("employees", new Employee());
		return "saveEmp";
       }
	/*添加员工
	 *    出错的时候回显 
	 * */
	@RequestMapping(value="/saveEmp",method=RequestMethod.POST)
	public  String  saveEmp(@Valid Employee employee,BindingResult result,Model model){
		if(result.getErrorCount()>0){
			for(FieldError error:result.getFieldErrors()){
				System.out.println("error"+error+error.getDefaultMessage());
			}
			Map<Integer,String> genders=new HashMap<>();
	    	//判断  是男是女
	    	genders.put(0, "female");
	    	genders.put(1, "male");
	    	//像浏览器发送   请求
	    	model.addAttribute("genders", genders);
			model.addAttribute("departments", departmentDao.getDepartments());
	    	//form表单 有一个属性  必须要传入一个对象       添加的时候  表单为空 所以对象为空
	    	model.addAttribute("employees", employee);
			return "saveEmp";
		}
		employeeDao.save(employee);
		return "redirect:/empList";//重定向 
	}
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值