本文概述
- 建立表格
- Spring MVC CRUD示例
在这里, 我们使用JdbcTemplate进行数据库交互。
建立表格 在这里, 我们正在使用MySQL数据库中存在的emp99表。它有4个字段:ID, 姓名, 薪水和名称。在此, id由序列自动生成。
文章图片
Spring MVC CRUD示例 1.将依赖项添加到pom.xml文件。
pom.xml
<
!-- https://mvnrepository.com/artifact/org.springframework/spring-webmvc -->
<
dependency>
<
groupId>
org.springframework<
/groupId>
<
artifactId>
spring-webmvc<
/artifactId>
<
version>
5.1.1.RELEASE<
/version>
<
/dependency>
<
!-- https://mvnrepository.com/artifact/org.apache.tomcat/tomcat-jasper -->
<
dependency>
<
groupId>
org.apache.tomcat<
/groupId>
<
artifactId>
tomcat-jasper<
/artifactId>
<
version>
9.0.12<
/version>
<
/dependency>
<
!-- https://mvnrepository.com/artifact/javax.servlet/javax.servlet-api -->
<
dependency>
<
groupId>
javax.servlet<
/groupId>
<
artifactId>
servlet-api<
/artifactId>
<
version>
3.0-alpha-1<
/version>
<
/dependency>
<
!-- https://mvnrepository.com/artifact/javax.servlet/jstl -->
<
dependency>
<
groupId>
javax.servlet<
/groupId>
<
artifactId>
jstl<
/artifactId>
<
version>
1.2<
/version>
<
/dependency>
<
!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
<
dependency>
<
groupId>
mysql<
/groupId>
<
artifactId>
mysql-connector-java<
/artifactId>
<
version>
8.0.11<
/version>
<
/dependency>
<
!-- https://mvnrepository.com/artifact/org.springframework/spring-jdbc -->
<
dependency>
<
groupId>
org.springframework<
/groupId>
<
artifactId>
spring-jdbc<
/artifactId>
<
version>
5.1.1.RELEASE<
/version>
<
/dependency>
2.创建bean类
在这里, bean类包含与数据库中存在的字段相对应的变量(以及setter和getter方法)。
Emp.java
package com.srcmini.beans;
public class Emp {
private int id;
private String name;
private float salary;
private String designation;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public float getSalary() {
return salary;
}
public void setSalary(float salary) {
this.salary = salary;
}
public String getDesignation() {
return designation;
}
public void setDesignation(String designation) {
this.designation = designation;
}}
3.创建控制器类
EmpController.java
package com.srcmini.controllers;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
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 com.srcmini.beans.Emp;
import com.srcmini.dao.EmpDao;
@Controller
public class EmpController {
@Autowired
EmpDao dao;
//will inject dao from XML file/*It displays a form to input data, here "command" is a reserved request attribute
*which is used to display object data into form
*/
@RequestMapping("/empform")
public String showform(Model m){
m.addAttribute("command", new Emp());
return "empform";
}
/*It saves object into database. The @ModelAttribute puts request data
*into model object. You need to mention RequestMethod.POST method
*because default request is GET*/
@RequestMapping(value="http://www.srcmini.com/save", method = RequestMethod.POST)
public String save(@ModelAttribute("emp") Emp emp){
dao.save(emp);
return "redirect:/viewemp";
//will redirect to viewemp request mapping
}
/* It provides list of employees in model object */
@RequestMapping("/viewemp")
public String viewemp(Model m){
List<
Emp>
list=dao.getEmployees();
m.addAttribute("list", list);
return "viewemp";
}
/* It displays object data into form for the given id.
* The @PathVariable puts URL data into variable.*/
@RequestMapping(value="http://www.srcmini.com/editemp/{id}")
public String edit(@PathVariable int id, Model m){
Emp emp=dao.getEmpById(id);
m.addAttribute("command", emp);
return "empeditform";
}
/* It updates model object. */
@RequestMapping(value="http://www.srcmini.com/editsave", method = RequestMethod.POST)
public String editsave(@ModelAttribute("emp") Emp emp){
dao.update(emp);
return "redirect:/viewemp";
}
/* It deletes record for the given id in URL and redirects to /viewemp */
@RequestMapping(value="http://www.srcmini.com/deleteemp/{id}", method = RequestMethod.GET)
public String delete(@PathVariable int id){
dao.delete(id);
return "redirect:/viewemp";
}
}
4.创建DAO类
让我们创建一个DAO类来访问数据库中所需的数据。
EmpDao.java
package com.srcmini.dao;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.List;
import org.springframework.jdbc.core.BeanPropertyRowMapper;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.core.RowMapper;
import com.srcmini.beans.Emp;
public class EmpDao {
JdbcTemplate template;
public void setTemplate(JdbcTemplate template) {
this.template = template;
}
public int save(Emp p){
String sql="insert into Emp99(name, salary, designation) values('"+p.getName()+"', "+p.getSalary()+", '"+p.getDesignation()+"')";
return template.update(sql);
}
public int update(Emp p){
String sql="update Emp99 set name='"+p.getName()+"', salary="+p.getSalary()+", designation='"+p.getDesignation()+"' where id="+p.getId()+"";
return template.update(sql);
}
public int delete(int id){
String sql="delete from Emp99 where id="+id+"";
return template.update(sql);
}
public Emp getEmpById(int id){
String sql="select * from Emp99 where id=?";
return template.queryForObject(sql, new Object[]{id}, new BeanPropertyRowMapper<
Emp>
(Emp.class));
}
public List<
Emp>
getEmployees(){
return template.query("select * from Emp99", new RowMapper<
Emp>
(){
public Emp mapRow(ResultSet rs, int row) throws SQLException {
Emp e=new Emp();
e.setId(rs.getInt(1));
e.setName(rs.getString(2));
e.setSalary(rs.getFloat(3));
e.setDesignation(rs.getString(4));
return e;
}
});
}
}
5.在web.xml文件中提供控制器的条目
【Spring MVC CRUD用法示例图解】web.xml
<
?xml version="1.0" encoding="UTF-8"?>
<
web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
<
display-name>
SpringMVC<
/display-name>
<
servlet>
<
servlet-name>
spring<
/servlet-name>
<
servlet-class>
org.springframework.web.servlet.DispatcherServlet<
/servlet-class>
<
load-on-startup>
1<
/load-on-startup>
<
/servlet>
<
servlet-mapping>
<
servlet-name>
spring<
/servlet-name>
<
url-pattern>
/<
/url-pattern>
<
/servlet-mapping>
<
/web-app>
6.在xml文件中定义bean
spring-servlet.xml
<
?xml version="1.0" encoding="UTF-8"?>
<
beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc.xsd">
<
context:component-scan base-package="com.srcmini.controllers">
<
/context:component-scan>
<
bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<
property name="prefix" value="http://www.srcmini.com/WEB-INF/jsp/">
<
/property>
<
property name="suffix" value="http://www.srcmini.com/.jsp">
<
/property>
<
/bean>
<
bean id="ds" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<
property name="driverClassName" value="http://www.srcmini.com/com.mysql.jdbc.Driver">
<
/property>
<
property name="url" value="http://www.srcmini.com/jdbc:mysql://localhost:3306/test">
<
/property>
<
property name="username" value="">
<
/property>
<
property name="password" value="">
<
/property>
<
/bean>
<
bean id="jt" class="org.springframework.jdbc.core.JdbcTemplate">
<
property name="dataSource" ref="ds">
<
/property>
<
/bean>
<
bean id="dao" class="com.srcmini.dao.EmpDao">
<
property name="template" ref="jt">
<
/property>
<
/bean>
<
/beans>
7.创建请求的页面
index.jsp
<
a href="http://www.srcmini.com/empform">
Add Employee<
/a>
<
a href="http://www.srcmini.com/viewemp">
View Employees<
/a>
8.创建其他视图组件
empform.jsp
<
%@ taglib uri="http://www.springframework.org/tags/form" prefix="form"%>
<
%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<
h1>
Add New Employee<
/h1>
<
form:form method="post" action="save">
<
table >
<
tr>
<
td>
Name : <
/td>
<
td>
<
form:input path="name"/>
<
/td>
<
/tr>
<
tr>
<
td>
Salary :<
/td>
<
td>
<
form:input path="salary" />
<
/td>
<
/tr>
<
tr>
<
td>
Designation :<
/td>
<
td>
<
form:input path="designation" />
<
/td>
<
/tr>
<
tr>
<
td>
<
/td>
<
td>
<
input type="submit" value="http://www.srcmini.com/Save" />
<
/td>
<
/tr>
<
/table>
<
/form:form>
empeditform.jsp
这里的” / SpringMVCCRUDSimple” 是项目名称, 如果你有不同的项目名称, 请更改此名称。对于实时应用程序, 你可以提供完整的URL。
<
%@ taglib uri="http://www.springframework.org/tags/form" prefix="form"%>
<
%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<
h1>
Edit Employee<
/h1>
<
form:form method="POST" action="/SpringMVCCRUDSimple/editsave">
<
table >
<
tr>
<
td>
<
/td>
<
td>
<
form:hiddenpath="id" />
<
/td>
<
/tr>
<
tr>
<
td>
Name : <
/td>
<
td>
<
form:input path="name"/>
<
/td>
<
/tr>
<
tr>
<
td>
Salary :<
/td>
<
td>
<
form:input path="salary" />
<
/td>
<
/tr>
<
tr>
<
td>
Designation :<
/td>
<
td>
<
form:input path="designation" />
<
/td>
<
/tr>
<
tr>
<
td>
<
/td>
<
td>
<
input type="submit" value="http://www.srcmini.com/Edit Save" />
<
/td>
<
/tr>
<
/table>
<
/form:form>
viewemp.jsp
<
%@ taglib uri="http://www.springframework.org/tags/form" prefix="form"%>
<
%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<
h1>
Employees List<
/h1>
<
table border="2" width="70%" cellpadding="2">
<
tr>
<
th>
Id<
/th>
<
th>
Name<
/th>
<
th>
Salary<
/th>
<
th>
Designation<
/th>
<
th>
Edit<
/th>
<
th>
Delete<
/th>
<
/tr>
<
c:forEach var="emp" items="${list}">
<
tr>
<
td>
${emp.id}<
/td>
<
td>
${emp.name}<
/td>
<
td>
${emp.salary}<
/td>
<
td>
${emp.designation}<
/td>
<
td>
<
a href="http://www.srcmini.com/editemp/${emp.id}">
Edit<
/a>
<
/td>
<
td>
<
a href="http://www.srcmini.com/deleteemp/${emp.id}">
Delete<
/a>
<
/td>
<
/tr>
<
/c:forEach>
<
/table>
<
br/>
<
a href="http://www.srcmini.com/empform">
Add New Employee<
/a>
输出
文章图片
单击添加员工后, 你将看到以下表格。
文章图片
填写表单, 然后单击” 保存” 以将条目添加到数据库中。
文章图片
现在, 单击” 编辑” 以对提供的数据进行一些更改。
文章图片
现在, 单击” 编辑保存” 以将具有更改的条目添加到数据库中。
文章图片
现在, 单击” 删除” 以从数据库中删除条目。
文章图片
下载此示例(使用Eclipse开发)
下载SQL文件
下载SQL文件
下载MYSQL-connector.jar文件
如果你不使用maven, 请下载MYSQL-connector.jar。
推荐阅读
- 新浪微博怎样大局部删除微博?新浪微博大局部删除微博的办法_新浪微博
- Spring MVC文件上传示例详解
- Spring和JMS集成详细解释
- Spring和RMI集成实例详解
- 在Spring Framework中进行远程处理
- Spring和JAXB集成示例详解
- Spring MVC表单文本字段用法示例
- Spring MVC表单单选按钮用法示例
- Spring MVC表单标签库介绍