使用springMVC編寫實現資料庫的增刪改查
今天,在這裡總結一下之前寫過的一個對員工資訊進行增刪改查的小專案,首先,先將必要的環境搭建好,員工和部門的實體類以及對應的dao如下
部門實體類:
package com.tanla.springmvc.crud.entities;
public class Department {
private Integer id;
private String departmentName;
public Department() {
// TODO Auto-generated constructor stub
}
public Department (int i, String string) {
this.id = i;
this.departmentName = string;
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getDepartmentName() {
return departmentName;
}
public void setDepartmentName(String departmentName) {
this.departmentName = departmentName;
}
@Override
public String toString() {
return "Department [id=" + id + ", departmentName=" + departmentName
+ "]";
}
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
員工實體類:
其中有幾個註解
@Past:驗證的資料型別 :java.util.Date,java.util.Calendar,Joda Time類庫的日期型別
說明 :驗證註解的元素值(日期型別)比當前時間早
註解詳情參見:http://www.cnblogs.com/easymind223/p/5841043.html
package com.tanla.springmvc.crud.entities;
import java.util.Date;
import javax.validation.constraints.Past;
import org.hibernate.validator.constraints.Email;
import org.hibernate.validator.constraints.NotEmpty;
import org.springframework.format.annotation.DateTimeFormat;
import org.springframework.format.annotation.NumberFormat;
public class Employee {
private Integer id;
@NotEmpty
private String lastName;
@Email
private String email;
//1 male, 0 female
private Integer gender;
private Department department;
@Past
@DateTimeFormat(pattern="yyyy-MM-dd")
private Date birth;
@NumberFormat(pattern="#,###,###.#")
private Float salary;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getLastName() {
return lastName;
}
public void setLastName(String lastName) {
this.lastName = lastName;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public Integer getGender() {
return gender;
}
public void setGender(Integer gender) {
this.gender = gender;
}
public Department getDepartment() {
return department;
}
public void setDepartment(Department department) {
this.department = department;
}
public Date getBirth() {
return birth;
}
public void setBirth(Date birth) {
this.birth = birth;
}
public Float getSalary() {
return salary;
}
public void setSalary(Float salary) {
this.salary = salary;
}
@Override
public String toString() {
return "Employee [id=" + id + ", lastName=" + lastName + ", email="
+ email + ", gender=" + gender + ", department=" + department
+ ", birth=" + birth + ", salary=" + salary + "]";
}
public Employee(Integer id, String lastName, String email, Integer gender,
Department department) {
super();
this.id = id;
this.lastName = lastName;
this.email = email;
this.gender = gender;
this.department = department;
}
public Employee() {
// TODO Auto-generated constructor stub
}
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
- 69
- 70
- 71
- 72
- 73
- 74
- 75
- 76
- 77
- 78
- 79
- 80
- 81
- 82
- 83
- 84
- 85
- 86
- 87
- 88
- 89
- 90
- 91
- 92
- 93
- 94
- 95
- 96
- 97
- 98
- 99
- 100
- 101
- 102
- 103
- 104
- 105
- 106
- 107
- 108
- 109
dao層:
package com.tanla.springmvc.crud.dao;
import java.util.Collection;
import java.util.HashMap;
import java.util.Map;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Repository;
import com.tanla.springmvc.crud.entities.Department;
import com.tanla.springmvc.crud.entities.Employee;
@Repository
public class EmployeeDao {
private static Map<Integer, Employee> employees = null;
@Autowired
private DepartmentDao departmentDao;
static{
employees = new HashMap<Integer, Employee>();
employees.put(1001, new Employee(1001, "E-AA", "[email protected]", 1, new Department(101, "D-AA")));
employees.put(1002, new Employee(1002, "E-BB", "[email protected]", 1, new Department(102, "D-BB")));
employees.put(1003, new Employee(1003, "E-CC", "[email protected]", 0, new Department(103, "D-CC")));
employees.put(1004, new Employee(1004, "E-DD", "[email protected]", 0, new Department(104, "D-DD")));
employees.put(1005, new Employee(1005, "E-EE", "[email protected]", 1, new Department(105, "D-EE")));
}
private static Integer initId = 1006;
public void save(Employee employee){
if(employee.getId() == null){
employee.setId(initId++);
}
employee.setDepartment(departmentDao.getDepartment(employee.getDepartment().getId()));
employees.put(employee.getId(), employee);
}
public Collection<Employee> getAll(){
return employees.values();
}
public Employee get(Integer id){
return employees.get(id);
}
public void delete(Integer id){
employees.remove(id);
}
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
package com.tanla.springmvc.crud.dao;
import java.util.Collection;
import java.util.HashMap;
import java.util.Map;
import org.springframework.stereotype.Repository;
import com.tanla.springmvc.crud.entities.Department;
@Repository
public class DepartmentDao {
private static Map<Integer, Department> departments = null;
static{
departments = new HashMap<Integer, Department>();
departments.put(101, new Department(101, "D-AA"));
departments.put(102, new Department(102, "D-BB"));
departments.put(103, new Department(103, "D-CC"));
departments.put(104, new Department(104, "D-DD"));
departments.put(105, new Department(105, "D-EE"));
}
public Collection<Department> getDepartments(){
return departments.values();
}
public Department getDepartment(Integer id){
return departments.get(id);
}
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
然後,把Spring mvc的環境搭建好,注意:在web.xml中新增如下攔截器,實現將post請求變成delete或者put請求
<!--配置filter將post請求變成 delete,put請求 -->
<filter>
<filter-name>HiddenHttpMethodFilter</filter-name>
<filter-class>org.springframework.web.filter.HiddenHttpMethodFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>HiddenHttpMethodFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
接下來,說一說這個小專案實現的功能,以及它的流程。
第一步,新建一個index.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!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>
<!-- 此處加斜槓的時候 點進去的路徑為http://localhost:8080/emps
不加斜槓的是http://localhost:8080/springMVC-2/emps
-->
<a href="emps">Get All Employee</a>
</body>
</html>
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
第二步,為這個頁面的超連結寫一個處理方法,新建一個類,名為EmployeeHandler,在裡面寫一個方法,其中的返回值對應的是一個jsp檢視,名為list
@RequestMapping("/emps")
public String list(Map<String, Object> map) {
map.put("employees", employeeDao.getAll());
return "list";
}
- 1
- 2
- 3
- 4
- 5
- 6
第三步,根據Springmvc.xml中的配置資訊來建立檢視,在本例中,Springmvc.xml是如下配置的,說明所有在EmployeeHandler類中的處理方法返回的檢視都在/WEB-INF/views/路徑下。所以新建一個list.jsp來顯示所有的員工資訊
<context:component-scan base-package="com.tanla.springmvc.crud"></context:component-scan>
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/views/"></property>
<property name="suffix" value=".jsp"></property>
</bean>
- 1
- 2
- 3
- 4
- 5
- 6
- 7
list.jsp:
<c:if test="${empty requestScope.employees }">
沒有員工資訊
</c:if>
<c:if test="${!empty requestScope.employees }">
<table border="1" cellpadding="10" cellspacing="0">
<tr>
<td>ID</td>
<td>LAST NAME</td>
<td>EMAIL</td>
<td>GENDER</td>
<td>DEPARTMENT</td>
<td>EDIT</td>
<td>DELETE</td>
</tr>
<c:forEach items="${requestScope.employees }" var="emp">
<tr>
<td>${emp.id}</td>
<td>${emp.lastName}</td>
<td>${emp.email}</td>
<td>${emp.gender == "0" ?'female':'male' }</td>
<td>${emp.department.departmentName }</td>
<td><a href="emp/${emp.id}">edit</a></td>
<td><a class="delete" href="emp/${emp.id}">delete</a></td>
</tr>
</c:forEach>
</table>
</c:if>
<a href="emp">Add New Employee</a>
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
第四步,寫一個新增新員工的功能。,點選list.jsp上面的新增新員工按鈕,就會到對應的handler類中的方法中,然後會跳轉到input.jsp頁面
@RequestMapping(value="/emp" , method = RequestMethod.GET)
public String input(Map<String ,Object> maps) {
//將部門資訊從資料庫中讀出來方便表單回顯
maps.put("departments",departmentDao.getDepartments() );
//表單顯示的時候,域物件裡面必須有一個與表單欄位對應的bean
maps.put("employee", new Employee());
return "input";
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
input.jsp中應注意事項:
1)action中的路徑必須加${pageContext.request.contextPath }
2)頁面中的屬性必須和實體類中的屬性一一對應。
<%@page import="java.util.HashMap"%>
<%@page import="java.util.Map"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
<%@ 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>
</head>
<body>
<form:form action="${pageContext.request.contextPath }/emp" method="POST" modelAttribute="employee">
<!--根據這個來判斷是新增操作還是編輯操作-->
<c:if test="${employee.id == null }">
LastName:<form:input path="lastName" />
</c:if>
<c:if test="${employee.id != null }">
<form:hidden path="id"/>
<input type="hidden" name="_method" value="PUT"/>
</c:if>
<br><br>
Email:<form:input path="email"/>
<br><br>
<%
Map<Integer , String> genders = new HashMap<Integer,String>();
genders.put(1, "male");
genders.put(0, "female");
request.setAttribute("genders",genders);
%>
Gender:<form:radiobuttons path="gender" items="${genders }"/>
<br><br>
Department:<form:select path="department.id" items="${departments }" itemLabel="departmentName" itemValue="id"></form:select>
<br><br>
<input type="submit" value="Submit">
</form:form>
</body>
</html>
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
第五步,點選提交之後,會根據提交方法轉到save方法中
@RequestMapping(value="/emp" , method = RequestMethod.POST)
public String save(Employee employee) {
System.out.println(employee);
employeeDao.save(employee);
return "redirect:/emps";
}
- 1
- 2
- 3
- 4
- 5
- 6
第六步,刪除操作
list.jsp頁面上應該新增如下程式碼
<form action="" method="post">
<input type="hidden" name="_method" value="DELETE">
</form>
- 1
- 2
- 3
<script type="text/javascript">
$(function(){
$(".delete").click(function(){
var href = $(this).attr("href");
$("form").attr("action",href).submit();
return false;
});
})
</script>
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
為了讓靜態頁面有效果,必須在springmvc.xml配置檔案中新增:
<!-- 可以在 SpringMVC 的配置檔案中配置 <mvc:default-servlet-handler/> 的方式解決靜態資源的問題:
<mvc:default-servlet-handler/> 將在 SpringMVC 上下文中定義一個 –
DefaultServletHttpRequestHandler,它會對進入 DispatcherServlet 的
請求進行篩查,如果發現是沒有經過對映的請求,就將該請求交由 WEB 應用伺服器預設的 Servlet 處理,
如果不是靜態資源的請求,才由DispatcherServlet 繼續處理一般 WEB 應用伺服器預設的 Servlet 的名稱都是 default。
若所使用的 WEB 伺服器的預設 Servlet 名稱不是 default,則需要通過 default-servlet-name 屬性顯式指定 -->
<mvc:default-servlet-handler/>
<mvc:annotation-driven></mvc:annotation-driven>
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
@RequestMapping(value="/emp/{id}",method = RequestMethod.DELETE)
public String delete(@PathVariable("id") Integer id) {
employeeDao.delete(id);
return "redirect:/emps";
}
- 1
- 2
- 3
- 4
- 5
- 6
第七步,修改操作
注意事項:要在handler類中加入如下方法,因為在頁面上沒有lastName屬性,所以不能直接去頁面上的值,會導致lastName為空,應該先把資料從資料庫中取出來,然後再用頁面上的值覆蓋它,保證沒有修改的值也不會為空。
@ModelAttribute
public void getEmployee(@RequestParam(value="id",required=false)Integer id,
Map<String ,Object> maps) {
if(id!=null) {
maps.put("employee", employeeDao.get(id));
}
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
@RequestMapping(value="/emp",method=RequestMethod.PUT)
public String update(Employee employee) {
employeeDao.save(employee);
return "redirect:/emps";
}
相關推薦
Web介面實現資料庫增刪改查過程
實現方法:JSP+Servlet+JavaBean 基本實現思想:jsp檔案為顯示介面,包括增刪改查四個介面,然後使用form或者href超連結的方法將網頁獲得的值傳到Servlet中的方法裡;而servlet方法中呼叫dao層裡面的包括增刪改查等方法的物件,以此實現對資料庫裡面的資料的增刪改查,最後返回頁
Kotlin整合Spring Boot實現資料庫增刪改查(mybatis版)
前幾天由於工作需要,便開始學習了kotlin,java基礎紮實學起來也還算比較快,對於kotlin這個程式語言自然是比java有趣一些,因此就有了使用kotlin搭建基於spring boot的開發環境。這次先分享mybatis版本的 1 maven的pom檔案 <
Kotlin整合Spring Boot實現資料庫增刪改查(spring data jpa版)
接上次的kotlin整合spring boot的mybatis版本,這次分享的內容也很精彩,現在spring data jpa也慢慢流行起來了,因此學習kotlin的時候也順帶寫了spring data jpa版本的,下面就直接上程式碼分享給大家了 1 pom加入如下配置
pymysql連線資料庫,實現資料庫增刪改查
1.資料庫連線 # 建立連線 def create_conn(): import pymysql conn = pymysql.connect( host='localhost', port=3306, user='root'
基於ajax的三層,實現資料庫增刪改查基礎(一DAL)
三層的組成就是DAL,BLL,UI層和Model層。其中的DAL層是與資料庫連結,需要引用Model層,進行對資料的操作,但我們一般在此層不進行資料的處理。BLL層負責引用DAL和MODEL層,在
Android中內容提供者ContentProvider實現資料庫增刪改查
1.我們首先new一個我們自己的類整合ContentProvider,並實現方法如下 package com.wzw.sqllitedemo.providers; import com.wzw.sqllitedemo.db.PersonSQLiteOpenHelper;
使用springMVC編寫實現資料庫的增刪改查
今天,在這裡總結一下之前寫過的一個對員工資訊進行增刪改查的小專案,首先,先將必要的環境搭建好,員工和部門的實體類以及對應的dao如下部門實體類:package com.tanla.springmvc.crud.entities; public class Departmen
java實現mysql資料庫增刪改查
1.連線資料庫: import java.sql.Connection; import java.sql.DriverManager; public class DBConnection { static String driver = "com.mysql.jdbc.Driver"; s
C#編寫簡單的資料庫增刪改查(二)
一、今天我們繼續資料庫的增刪改查的編寫,下面我們進行刪除操作,我們在Formdelete介面上拖入幾個控制元件,如下圖: (資料庫顯示框參照之前的資料庫增加的方法) 將控制元件改名後,雙擊刪除按鈕進入程式碼編寫介面,首先連線資料庫,在判斷
Laravel使用ORM實現操作資料庫增刪改查
我在下一篇部落格會發布關於orm的一個知識瞭解 要了解比全方面的可以看laravel文件:https://laravel-china.org/docs/laravel/5.5/eloquent/1332 或者看我前面的幾個部落格的基礎操作 進行了解 這下面只是給出了一個
idea+spring4+springmvc+mybatis+maven實現簡單增刪改查CRUD
type https suffix rec 項目目錄結構 inject btree 控制器 clu 在學習spring4+springmvc+mybatis的ssm框架,idea整合簡單實現增刪改查功能,在這裏記錄一下。 原文在這裏:https://my.oschina.n
SpringBoot框架整合SSM實現簡單資料庫增刪改查
首先建立一個Maven工程 第一步:選擇Maven專案建立結構 第二步:配置專案屬性 點選finish即可完成建立 再來看一下專案的目錄 然後配置pom.xml依賴檔案 <?xml version="1.0" encoding="U
JqueryEasyUI實現CRUD增刪改查操作
per queryall call .get field string cal upd wid 1.代碼介紹: 前端界面由jsp,JqueryEasyUI制作,後臺代碼由Servlet實現邏輯操作 註:JqueryEasyUI的庫文件和其他自己jar包自己導入。Jquery
Java操作數據庫實現"增刪改查"
mysq 新的 rom 可用 erp catch next() value eight 本文主要講解JDBC操作數據庫 主要實現對MySql數據庫的"增刪改查" 綜合概述: JDBC的常用類和接口 一 DriverManager類 DriverManage類用
32、mysql資料庫增刪改查
建立資料庫 CREATE {DATABASE|SCHEMA} [IF NOT EXISTS] db_name [DEFAULT] [CHARACTER SET=''] [DEFAULT] [COLLATE=''] IF NOT EXISTS 指定資料庫不存在的時候才建立 CHARACTER SET=
flask和django區別--資料庫增刪改查的區別
flask和django都是一樣的,在你建立了資料模型之後,兩個框架都會給你資料庫操作的api,供你使用;(create retrieve update delete) 假設我們有一個User類 增加(插入): 對於flask的插入分為三步走的情況: 1:建立python 物件;也就
springMvc+AJAX+JSON的增刪改查
controller 層 package cn.et.springmvc.day6.controller; import java.io.IOException; import java.io.OutputStream; import java.util.List; import java
SpringMVC+Spring+HIbernate 簡單增刪改查例項
SpringMVC+Spring+HIbernate 簡單增刪改查例項 HIbernate配置mysql資料庫的方式 和 Structs+spring+HIbernate 是一樣的。 可以理解為SpringMVC 把
listview展示網路資料+網路圖片+資料庫增刪改查+fragment
MainActivity package com.bwie.renzhili; import android.support.v4.app.Fragment; import android.support.v4.app.FragmentPagerAdapter; import andr
Oracle-資料庫增刪改查基本操作
一、建立資料表 1).建立不存在的新表: create table tname( Data_Name Date_Type [default][預設值] ); 2).建立已存在表的副本 create table emp1 as selec