`
liukai
  • 浏览: 706409 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

Spring3MVC和JDBC的集成

阅读更多
在以前的教程中我们并没有进行数据库连接操作.
一个没有进行数据库操作的web项目几乎是不存在的.
所以数据库连接也是一个很重要的知识点.

而在本教程中,我们会用SpringMVC+JDBC实现一个简单的数据库访问.
并对Person对象进行简单的CRUD操作.

我们将使用MySql数据库.
相应的也可以用于DB2,oracle,SqlServer,HyperSQL等数据库.

JDBC是什么?

引用

JDBC(Java Data Base Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。JDBC提供了一种基准,据此可以构建更高级的工具和接口,使数据库开发人员能够编写数据库应用程序,同时,JDBC也是个商标名。


MySql是什么?

引用

MySQL由于性能高、成本低、可靠性好,已经成为最流行的开源数据库,被广泛地应用在Internet上的中小型网站中。随着MySQL的不断成熟,它也逐渐用于更多大规模网站和应用,比如维基百科、Google和Facebook等网站。非常流行的开源软件组合LAMP中的“M”指的就是MySQL。


下面是我们的应用程序文件夹结构:



然后是pom.xml里添加的jar包:



创建一张MySql表.
注意数据库是 spring3db.


DROP TABLE IF EXISTS `person`;

CREATE TABLE `person` (
  `ID` int(11) unsigned NOT NULL AUTO_INCREMENT,
  `FIRST_NAME` varchar(255) DEFAULT NULL,
  `LAST_NAME` varchar(255) DEFAULT NULL,
  `MONEY` double DEFAULT NULL,
  PRIMARY KEY (`ID`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8;


首先添加Spring MVC所必须的配置.

web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app id="WebApp_ID" version="2.4"
	xmlns="http://java.sun.com/xml/ns/j2ee" 
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee 
	http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">

	<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>

	<listener>
		<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
	</listener>

</web-app>


在web.xml中我们定义servlet:spring.
按照惯例,我们必须声明一个spring-servle.xml
spring-servle.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:p="http://www.springframework.org/schema/p"
	xsi:schemaLocation="http://www.springframework.org/schema/beans 
	   		http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">

	<!-- 定义一个视图解析器 -->
	<bean id="viewResolver"
		class="org.springframework.web.servlet.view.InternalResourceViewResolver"
		p:prefix="/WEB-INF/jsp/" p:suffix=".jsp" />

</beans>


这个XML配置声明一个视图解析器.在控制器中会根据JSP名映射到/ WEB-INF/jsp中相应的位置.


要进行数据库操作,一定需要一个数据库连接的配置.

jdbc.properties
# database properties
#spring3db is databaseName.
app.jdbc.driverClassName=com.mysql.jdbc.Driver
app.jdbc.url=jdbc:mysql://localhost/spring3db
app.jdbc.username=root
app.jdbc.password=root


注:以后所有的教程所用到的数据库统一为spring3db

jdbc-context.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:p="http://www.springframework.org/schema/p" 
       	xmlns:tx="http://www.springframework.org/schema/tx"
       	xmlns:context="http://www.springframework.org/schema/context"
       	xsi:schemaLocation="
			http://www.springframework.org/schema/beans 
			http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
			http://www.springframework.org/schema/tx 
			http://www.springframework.org/schema/tx/spring-tx-3.0.xsd
			http://www.springframework.org/schema/context
			http://www.springframework.org/schema/context/spring-context-3.0.xsd
	   		">
	<!-- 定义jdbc配置信息路径 -->
	<context:property-placeholder location="/WEB-INF/jdbc.properties" />
    
   	<!-- 使用annotation定义事务 -->
	<tx:annotation-driven transaction-manager="transactionManager" />	
   
	<!-- 数据源配置,使用c3p0数据库连接池 -->
	<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"
				destroy-method="close"
				p:driverClass="${app.jdbc.driverClassName}"
				p:jdbcUrl="${app.jdbc.url}"
				p:user="${app.jdbc.username}"
				p:password="${app.jdbc.password}"
				p:acquireIncrement="5"
				p:idleConnectionTestPeriod="60"
				p:maxPoolSize="100"
				p:maxStatements="50"
				p:minPoolSize="10" />

	<!-- 定义事务管理 -->
	<!-- See http://static.springsource.org/spring/docs/3.0.x/spring-framework-reference/html/transaction.html -->
	<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager" 
       			p:dataSource-ref="dataSource" />
  
</beans>


该文件主要配置了:
1.启用了事务管理
2.声明了一个数据源

我们将使用连接池(Connection pool)对数据库进行管理.
JDBC连接通常是通过一个连接池(Connection pool)管理,而不是直接driver.
连接池包括BoneCP,C3P0的和DBCP.

连接池(Connection pool)是什么东西?
引用

由于创建一个数据库连接比较耗费资源,因此对于一个项目来讲,从使用人数来看,先初始化一部分连接,放在连接池中,有用户过来直接拿来使用.如果全部用完了的话,就新创建连接.当用户从连接池中取出的连接用完以后,自动返回连接池等下个用户来用.


下面是所有开源的Connection Pools
Open Source Database Connection Pools

网上对于BoneCP,C3P0的和DBCP这3种连接池效率有很多的评测.结果各不相同.
但是Spring和Hibernate官方推荐使用c3p0,(据了解JavaEye也是用的c3p0)肯定有其性能上的优点.
所以我们也使用c3p0

关于c3p0的详细信息可以参考:HowTo configure the C3P0 connection pool


然后创建一个applicationContext.xml.

applicationContext.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-3.0.xsd
	   		http://www.springframework.org/schema/context
	   		http://www.springframework.org/schema/context/spring-context-3.0.xsd
			http://www.springframework.org/schema/mvc 
			http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd">

	<!-- 激活spring的注解. -->
	<context:annotation-config />

	<!-- 扫描注解组件并且自动的注入spring beans中. 
	例如,他会扫描@Controller 和@Service下的文件.所以确保此base-package设置正确. -->
	<context:component-scan base-package="org.liukai.tutorial" />

	<!-- 配置注解驱动的Spring MVC Controller 的编程模型.注:次标签只在 Servlet MVC工作! -->
	<mvc:annotation-driven />

	<!-- 导入jdbc的配置文件 -->
	<import resource="jdbc-context.xml" />
	
</beans>






定义一个Person对象.

Person.java

package org.liukai.tutorial.domain;

import java.io.Serializable;

public class Person implements Serializable {

	private static final long serialVersionUID = -6463052236469808931L;

	private Integer id;
	private String firstName;
	private String lastName;
	private Double money;

	// setter/getter..

}




由于我们要实现对Person 的CRUD操作.
需要定义一个service来实现对Person进行操作的方法.

PersonService.java

package org.liukai.tutorial.service;

import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import javax.annotation.Resource;
import javax.sql.DataSource;

import org.apache.log4j.Logger;
import org.liukai.tutorial.domain.Person;
import org.springframework.jdbc.core.RowMapper;
import org.springframework.jdbc.core.simple.SimpleJdbcTemplate;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;


/**
 * Service for processing Persons. 
 * <p>
 * 关于Spring JDBC 和 JdbcTemplate
 * see http://static.springsource.org/spring/docs/3.0.x/spring-framework-reference/html/jdbc.html
 * <p>
 * 关于transactions, see http://static.springsource.org/spring/docs/3.0.x/spring-framework-reference/html/transaction.html
 */

@Service("personService")
@Transactional
public class PersonService {
	
	protected static Logger logger = Logger.getLogger("service");
	
private SimpleJdbcTemplate jdbcTemplate;
	
	@Resource(name="dataSource")
	public void setDataSource(DataSource dataSource) {
	    this.jdbcTemplate = new SimpleJdbcTemplate(dataSource);
	}
	
	/**
	 *检索所有的Person
	 */
	public List<Person> getAll() {
		logger.debug("Retrieving all persons");
		
		String sql = "select id, first_name, last_name, money from person";
		
		// Maps a SQL result to a Java object
		RowMapper<Person> mapper = new RowMapper<Person>() {  
	        public Person mapRow(ResultSet rs, int rowNum) throws SQLException {
	        	Person person = new Person();
	        	person.setId(rs.getInt("id"));
	        	person.setFirstName(rs.getString("first_name"));
	        	person.setLastName(rs.getString("last_name"));
	        	person.setMoney(rs.getDouble("money"));
	            return person;
	        }
	    };
		
		return jdbcTemplate.query(sql, mapper);
	}
	
	/**
	 * 新增person
	 */
	public void add(String firstName, String lastName, Double money) {
		logger.debug("Adding new person");

		String sql = "insert into person(first_name, last_name, money) values " +
				"(:firstName, :lastName, :money)";
		
		Map<String, Object> parameters = new HashMap<String, Object>();
		parameters.put("firstName", firstName);
		parameters.put("lastName", lastName);
		parameters.put("money", money);
		
		// Save
		jdbcTemplate.update(sql, parameters);
		
	}
	
	/**
	 * 删除指定Person
	 */
	public void delete(Integer id) {
		logger.debug("Deleting existing person");
		
		String sql = "delete from person where id = ?";
		
		Object[] parameters = new Object[] {id};
		
		jdbcTemplate.update(sql, parameters);
	}
	
	/**
	 * Edit指定的Person
	 */
	public void edit(Integer id, String firstName, String lastName, Double money) {
		logger.debug("Editing existing person");
		
		String sql = "update person set first_name = :firstName, " +
				"last_name = :lastName, money = :money where id = :id";
		
		// Assign values to parameters
		Map<String, Object> parameters = new HashMap<String, Object>();
		parameters.put("id", id);
		parameters.put("firstName", firstName);
		parameters.put("lastName", lastName);
		parameters.put("money", money);
		
		// Edit
		jdbcTemplate.update(sql, parameters);
		
	}

}




我们在PersonService实现了一个简单的CRUD.主要对应了下面几种方法.
getAll
add
delete
edit

注意:我们是通过一个SimpleJdbcTemplate实例来进行数据库的操作的.


什么是JdbcTemplate?


引用

JdbcTemplate类是在JDBC核心包的核心类。 它处理的创建和释放资源,它可以帮助您避免如忘记关闭连接常见的错误。 它执行核心的JDBC工作流,如语句创建和执行基本任务,让应用程序代码提供SQL和提取结果。 JdbcTemplate类执行SQL查询,更新语句和存储过程调用,执行过的ResultSets和返回的参数值的提取迭代。 它还捕捉JDBC异常并将它们转换为通用的,更丰富,层次结构异常org.springframework.dao包定义。

来源:Spring3官方文档


什么是SimpleJdbcTemplate?

引用
SimpleJdbcTemplate类包装的可变参数和自动装箱,如经典的JdbcTemplate,并利用Java 5的语言特性。


来源:Spring3官方文档

换句通俗点的话就是SimpleJdbcTemplate是JdbcTemplate的加强版.


值得注意的是:
我们的教程中使用的是Spring官方文档中的最佳实践.而实际工作中为了编码的效率和代码的整洁.
我们可以使用SimpleJdbcTemplate自带的其他方法.

比如PersonService中的getAll方法采用的是Spring推荐的最佳实践.

public List<Person> getAll() {
		logger.debug("Retrieving all persons");
		
		String sql = "select id, first_name, last_name, money from person";
		
		// Maps a SQL result to a Java object
		RowMapper<Person> mapper = new RowMapper<Person>() {  
	        public Person mapRow(ResultSet rs, int rowNum) throws SQLException {
	        	Person person = new Person();
	        	person.setId(rs.getInt("id"));
	        	person.setFirstName(rs.getString("first_name"));
	        	person.setLastName(rs.getString("last_name"));
	        	person.setMoney(rs.getDouble("money"));
	            return person;
	        }
	    };
		
		return jdbcTemplate.query(sql, mapper);
	}


我们也可以用BeanPropertyRowMapper来达到检索所有的Person的功能,并且代码更少.

public List<Person> getAll() {
		logger.debug("Retrieving all persons");
		
		String sql = "select id, first_name, last_name, money from person";
		
		return jdbcTemplate.query(sql, new BeanPropertyRowMapper<Person>(Person.class));
	}


但是要注意BeanPropertyRowMapper的使用条件.返回的对象必须和数据库里的字段相同(可以忽略带"_"和大写的字段).

然后是Controller

MainController.java

package org.liukai.tutorial.controller;

import java.util.List;

import javax.annotation.Resource;

import org.apache.log4j.Logger;
import org.liukai.tutorial.domain.Person;
import org.liukai.tutorial.service.PersonService;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;

@Controller
@RequestMapping("/main")
public class MainController {
	
protected static Logger logger = Logger.getLogger("controller");
	
	@Resource(name="personService")
	private PersonService personService;
	
	/**
	 *获得所有的Person并返回到指定JSP页面
	 * 
	 * @return the name of the JSP page
	 */
    @RequestMapping(value = "/persons", method = RequestMethod.GET)
    public String getPersons(Model model) {
    	
    	logger.debug("Received request to show all persons");
    	
    	// 调用personService中的getAll获得所有的Person
    	List<Person> persons = personService.getAll();
    	
    	// 把Person装入一个指定的model
    	model.addAttribute("persons", persons);
    	
    	// 解析 /WEB-INF/jsp/personspage.jsp
    	return "personspage";
	}
 
    /**
     *根据页面传递过来的值新增一Person并跳转到指定页面.
     */
    @RequestMapping(value = "/persons/add", method = RequestMethod.GET)
    public String add(
    		@RequestParam(value="firstname", required=true) String firstName,
    		@RequestParam(value="lastname", required=true) String lastName,
    		@RequestParam(value="money", required=true) Double money) {
   
		logger.debug("Received request to add new person");
		
		personService.add(firstName, lastName, money);

		return "addedpage";
	}
    
    /**
     * 根据接收的ID删除Person
     */
    @RequestMapping(value = "/persons/delete", method = RequestMethod.GET)
    public String delete(@RequestParam(value="id", required=true) Integer id, 
    										Model model) {
   
		logger.debug("Received request to delete existing person");
		
		personService.delete(id);
		
		model.addAttribute("id", id);
    	
		return "deletedpage";
	}
    
    /**
     * edit指定的Person
     */
    @RequestMapping(value = "/persons/edit", method = RequestMethod.GET)
    public String edit(
    		@RequestParam(value="id", required=true) Integer id,
    		@RequestParam(value="firstname", required=true) String firstName,
    		@RequestParam(value="lastname", required=true) String lastName,
    		@RequestParam(value="money", required=true) Double money,
    		Model model){
   
		logger.debug("Received request to edit existing person");

		personService.edit(id, firstName, lastName, money);

		model.addAttribute("id", id);
		
		return "editedpage";
	}

}



该Controller包含了4个映射.


引用
/persons
/persons/add?firstname=''&lastname=''&money=''
/persons/delete?id=''
/persons/edit?id=''&firstname=''&lastname=''&money=''


每个映射调用一个PersonService.当调用成功后则会跳转到指定的JSP页面

addedpage.jsp





<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ page import="java.util.Date" %>
<%@ 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>

<h1>Persons</h1>

<p>你于
<%= new java.util.Date() %>
新增一个Person
</p>
</body>
</html>


editedpage.jsp



<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ page import="java.util.Date" %>
<%@ 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>

<h1>Persons</h1>
 
<p>你于
<%= new java.util.Date() %>
根据${id }修改了一个Person
</p>
</body>
</html>



deletedpage.jsp



<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ page import="java.util.Date" %>
<%@ 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>

<h1>Persons</h1>

<p>你于
<%= new java.util.Date() %>
根据${id }删除了一个Person
</p>

</body>
</html>



personspage.jsp




<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ 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>

<h1>Persons</h1>

<table>
	<tr>
		<td width="50">Id</td>
		<td width="150">First Name</td>
		<td width="150">Last Name</td>
		<td width="50">Money</td>
	</tr>
	<c:forEach items="${persons}" var="person">
		<tr>
			<td><c:out value="${person.id}" /></td>
			<td><c:out value="${person.firstName}" /></td>
			<td><c:out value="${person.lastName}" /></td>
			<td><c:out value="${person.money}" /></td>
		</tr>
	</c:forEach>
</table>

</body>
</html>



我们的应用程序已经完成了

进入主页输入:http://localhost:8080/spring-jdbc/main/persons

新增一Person:http://localhost:8080/spring-jdbc/main/persons/add?firstname=John&lastname=Smith&money=1000

删除一Person:http://localhost:8080/spring-jdbc/main/persons/delete?id=1

修改一Person:http://localhost:8080/spring-jdbc/main//persons/edit?id=1&firstname=Johnny&lastname=Smith&money=2000


总结

这样我们完成了预定的目标:成功的连接了数据库并通过使用SpringMVC和JDBC实现了一个简单的CRUD操作;
我们了解了什么是JdbcTemplate以及如何使用SimpleJdbcTemplate对数据库进行操作.
而spring3MVC自带的SimpleJdbcTemplate能够很好的封装JDBC.数据库操作方便.
和Hibernate的HQL不同.因为是直接用原生态的sql进行查询.所以能够对sql语句进行拼接.
十分的灵活.这点是HQL所不能比拟的.



BTW:附件为本次教程源码.你可以下载后直接在tomcat或其他web服务器启动.也可以自行添加
maven插件启动.
  • 大小: 20.9 KB
  • 大小: 15.1 KB
  • 大小: 2 KB
  • 大小: 2.3 KB
  • 大小: 2.3 KB
  • 大小: 24.5 KB
分享到:
评论
2 楼 罗文2018 2014-02-26  
把楼主的框架导入myeclipse运行之后,静态资源报404错误.怎么解?
1 楼 lixia0417 2013-01-23  
楼主写的真是认真啊。写的好

相关推荐

    Spring+Spring MVC+Spring JDBC+MySql实现简单登录注册

    在本项目中,我们主要利用Spring框架,包括其核心模块Spring、MVC模块Spring MVC以及数据访问/集成模块Spring JDBC,结合MySQL数据库来构建一个基础的登录注册系统。以下是这个项目涉及的关键技术点: 1. **Spring...

    最简单的用户登录与注册系统 spring mvc spring jdbc

    通过这个项目,初学者可以深入理解Spring MVC和Spring JDBC的集成,以及它们在实际应用中的工作原理。同时,也可以学习到Web开发的基本流程,包括前后端交互、数据库操作以及用户认证等核心概念。

    前期项目 Spring+Spring MVC+JDBC Template 增删改查

    本项目聚焦于Spring、Spring MVC和JDBC Template的集成应用,用于实现数据库的增删改查操作。这是一套常见的企业级应用开发模式,对于理解和掌握Java Web开发至关重要。 首先,Spring框架是一个开源的应用框架,它...

    Spring mvc、 Spring、 Spring jdbc 整合实例源码

    Spring MVC、Spring和Spring JDBC是Java开发中非常重要的三大框架,它们构成了Spring框架的核心部分,广泛应用于企业级应用开发。本实例源码旨在提供一个整合这三者的基础模板,帮助开发者理解和掌握它们之间的协同...

    Spring Data JDBC与JDBC的区别

    集成Spring Data JDBC可以减少代码量,提高可维护性,并且由于Spring的其他模块(如Spring MVC和Spring Security)与之良好集成,可以构建更复杂的Web应用。例如,Spring MVC提供了模型-视图-控制器架构,使业务逻辑...

    spring3.1 mvc jdbc 合成

    标题中的“spring3.1 mvc jdbc 合成”指的是在Spring 3.1版本中,如何集成使用Spring MVC框架和JDBC进行数据访问的技术。Spring MVC是Spring框架的一个核心模块,用于构建Web应用程序,而JDBC(Java Database ...

    spring mvc与mybatis的集成

    集成 Spring MVC 和 MyBatis 的主要步骤包括以下几个方面: 1. **环境准备**:首先,确保项目中引入了 Spring MVC、MyBatis 相关的依赖库,如 spring-webmvc、spring-jdbc、mybatis、mybatis-spring 等。这些依赖...

    最全最经典spring-mvc教程

    另外,Spring MVC与Spring框架的其他组件无缝集成,如Spring AOP(面向切面编程)用于实现日志、事务管理等功能,Spring JDBC和MyBatis等持久层框架用于数据库操作,以及Spring Data JPA、Hibernate等ORM工具,使得...

    spring3mvc导入包

    此外,Spring3MVC还常常与Spring的其他模块集成,比如`spring-aop.jar`(面向切面编程,用于实现如日志、事务管理等功能)、`spring-jdbc.jar`(数据库操作支持)、`spring-tx.jar`(事务管理服务)以及`spring-orm....

    Spring mvc、 Spring、 Spring jdbc 整合 demo

    本示例"Spring mvc、Spring、Spring jdbc 整合 demo"着重展示了Spring框架的三大关键模块:Spring MVC(模型-视图-控制器)、Spring Core以及Spring JDBC的集成与应用。 1. **Spring MVC** Spring MVC是Spring框架...

    Spring-mvc Srping-boot spring-jdbc

    Spring MVC、Spring Boot和Spring JDBC是Java开发中的三大核心框架,它们在构建高效、可扩展的Web应用程序中扮演着至关重要的角色。这篇文章将深入探讨这三个框架的原理、用途以及它们如何协同工作。 **Spring MVC*...

    spring3mvc所需jar包

    总之,Spring 3 MVC作为一个全面的Web开发框架,提供了丰富的功能和强大的集成能力,使得开发者能够专注于业务逻辑,而不是底层的基础设施。这个整合包包含的jar文件可能是Spring MVC框架本身、Spring核心库、相关...

    网上书城 spring-mvc

    14. **数据库集成**:可能包含对JDBC、Hibernate或MyBatis等持久层技术的使用,实现对数据库的CRUD操作。 本项目提供了实战经验,涵盖了从用户注册、登录、商品浏览、购物车管理到订单处理等一系列电商功能,全面...

    spring mvc 集成elasticSearch 5.5.0版本

    在本文中,我们将深入探讨如何将Spring MVC框架与Elasticsearch 5.5.0版本进行集成,实现数据的增删改查功能。Elasticsearch是一个高性能、分布式、全文搜索引擎,广泛应用于日志分析、实时数据分析等领域。Spring ...

    Spring mvc + Spring + Spring jdbc 整合 demo.rar

    3. **Spring JDBC**:Spring JDBC提供了一个JdbcTemplate类,它封装了JDBC的繁琐操作,如打开和关闭连接、处理异常等,使得开发者可以专注于SQL语句的编写。此外,它还支持RowMapper和ResultSetExtractor,用于将...

    Spring-MVC的demo

    在本示例中,"Spring-MVC的demo" 提供了一个完整的Spring MVC学习项目,包含了数据库操作、JDBC以及Spring的核心功能。 1. **Spring MVC 框架简介** Spring MVC 是Spring框架的一部分,主要用于处理Web请求。它将...

    spring mvc spring spring jpa集成

    Spring MVC、Spring 和 Spring JPA 是Java开发中的三大核心框架,它们共同构建了一个高效、灵活的Web应用程序开发环境。在本教程中,我们将探讨如何将这些框架与MySQL数据库进行集成,以便实现数据的持久化存储。 ...

    spring3 mvc demo

    此外,由于其基于Spring框架,可以与其他Spring模块(如Spring JDBC、MyBatis等)无缝集成,实现更复杂的业务逻辑。 总之,Spring3 MVC是一个强大且灵活的Web开发框架,它简化了Web应用的开发过程,提高了代码的可...

    spring3+springMVC3+springJDBC3+jQuery easyui的运行环境

    本示例提供的"spring3+springMVC3+springJDBC3+jQuery easyui"就是一个经典组合,适用于开发高效、可维护的后端服务和用户友好的前端界面。让我们逐一深入探讨这些技术的细节。 首先,Spring框架(版本3)是Java...

Global site tag (gtag.js) - Google Analytics