Spring MVC Hibernate MySQL集成CRUD示例教程

我们在上一篇教程中学习了如何集成Spring和Hibernate。今天,我们将继续前进,并将Spring MVC和Hibernate框架集成到Web应用程序CRUD示例中。

我们的最终项目结构如下图所示,我们将逐一查看每个组件。

请注意,我在我们的示例中使用了Spring 4.0.3.Release和Hibernate 4.3.5.Final版本,同样的程序也兼容Spring 4和Hibernate 3,但是您需要对上一个教程中讨论的spring bean配置文件进行小的更改。

目录[ 隐藏 ]

  • 1个 Maven依赖
  • 2部署描述符
  • 3 Hibernate Entity Bean
  • 4 Hibernate DAO实现
  • 5个春季服务类
  • 6弹簧控制器类
  • 7 Spring Bean配置
  • 8查看页面
  • 9 Spring MVC Hibernate应用程序测试
  • 10总结

Maven依赖

让我们来看看hibernate和spring MVC框架集成所需的所有maven依赖项。


<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.journaldev.spring</groupId><artifactId>SpringMVCHibernate</artifactId><name>SpringMVCHibernate</name><packaging>war</packaging><version>1.0.0-BUILD-SNAPSHOT</version><properties><java-version>1.6</java-version><org.springframework-version>4.0.3.RELEASE</org.springframework-version><org.aspectj-version>1.7.4</org.aspectj-version><org.slf4j-version>1.7.5</org.slf4j-version><hibernate.version>4.3.5.Final</hibernate.version></properties><dependencies><!-- Spring --><dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId><version>${org.springframework-version}</version><exclusions><!-- Exclude Commons Logging in favor of SLF4j --><exclusion><groupId>commons-logging</groupId><artifactId>commons-logging</artifactId></exclusion></exclusions></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-webmvc</artifactId><version>${org.springframework-version}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-tx</artifactId><version>${org.springframework-version}</version></dependency><!-- Hibernate --><dependency><groupId>org.hibernate</groupId><artifactId>hibernate-core</artifactId><version>${hibernate.version}</version></dependency><dependency><groupId>org.hibernate</groupId><artifactId>hibernate-entitymanager</artifactId><version>${hibernate.version}</version></dependency><!-- Apache Commons DBCP --><dependency><groupId>commons-dbcp</groupId><artifactId>commons-dbcp</artifactId><version>1.4</version></dependency><!-- Spring ORM --><dependency><groupId>org.springframework</groupId><artifactId>spring-orm</artifactId><version>${org.springframework-version}</version></dependency><!-- AspectJ --><dependency><groupId>org.aspectj</groupId><artifactId>aspectjrt</artifactId><version>${org.aspectj-version}</version></dependency>   <!-- Logging --><dependency><groupId>org.slf4j</groupId><artifactId>slf4j-api</artifactId><version>${org.slf4j-version}</version></dependency><dependency><groupId>org.slf4j</groupId><artifactId>jcl-over-slf4j</artifactId><version>${org.slf4j-version}</version><scope>runtime</scope></dependency><dependency><groupId>org.slf4j</groupId><artifactId>slf4j-log4j12</artifactId><version>${org.slf4j-version}</version><scope>runtime</scope></dependency><dependency><groupId>log4j</groupId><artifactId>log4j</artifactId><version>1.2.15</version><exclusions><exclusion><groupId>javax.mail</groupId><artifactId>mail</artifactId></exclusion><exclusion><groupId>javax.jms</groupId><artifactId>jms</artifactId></exclusion><exclusion><groupId>com.sun.jdmk</groupId><artifactId>jmxtools</artifactId></exclusion><exclusion><groupId>com.sun.jmx</groupId><artifactId>jmxri</artifactId></exclusion></exclusions><scope>runtime</scope></dependency><!-- @Inject --><dependency><groupId>javax.inject</groupId><artifactId>javax.inject</artifactId><version>1</version></dependency><!-- Servlet --><dependency><groupId>javax.servlet</groupId><artifactId>servlet-api</artifactId><version>2.5</version><scope>provided</scope></dependency><dependency><groupId>javax.servlet.jsp</groupId><artifactId>jsp-api</artifactId><version>2.1</version><scope>provided</scope></dependency><dependency><groupId>javax.servlet</groupId><artifactId>jstl</artifactId><version>1.2</version></dependency><!-- Test --><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.7</version><scope>test</scope></dependency></dependencies><build><plugins><plugin><artifactId>maven-eclipse-plugin</artifactId><version>2.9</version><configuration><additionalProjectnatures><projectnature>org.springframework.ide.eclipse.core.springnature</projectnature></additionalProjectnatures><additionalBuildcommands><buildcommand>org.springframework.ide.eclipse.core.springbuilder</buildcommand></additionalBuildcommands><downloadSources>true</downloadSources><downloadJavadocs>true</downloadJavadocs></configuration></plugin><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><version>2.5.1</version><configuration><source>1.6</source><target>1.6</target><compilerArgument>-Xlint:all</compilerArgument><showWarnings>true</showWarnings><showDeprecation>true</showDeprecation></configuration></plugin><plugin><groupId>org.codehaus.mojo</groupId><artifactId>exec-maven-plugin</artifactId><version>1.2.1</version><configuration><mainClass>org.test.int1.Main</mainClass></configuration></plugin></plugins><finalName>${project.artifactId}</finalName></build>
</project>

当我创建Spring MVC项目时,STS(Spring Tool Suite)包含了上面的一些依赖项。上面的重要依赖项是spring-contextspring-webmvcspring-txhibernate-corehibernate-entitymanagerspring-orm。我使用Apache Commons DBCP进行连接池,但在现实生活中,很可能你有容器完成的连接池,我们需要的只是提供要使用的JNDI参考细节。

注意:我注意到有些读者遇到了数据库连接问题。请注意,在我的pom.xml中,没有数据库驱动程序。这对我有用,因为我在tomcat lib目录中有MySQL驱动程序,并且配置了一些DataSource连接。对于任何与数据库连接相关的问题,要么将数据库驱动程序放在容器lib中,要么将其包含在pom.xml依赖项中。

部署描述符

我们需要在我们的Web应用程序中插入spring框架,这是通过将Spring框架配置DispatcherServlet为前端控制器来完成的。我们的web.xml文件如下所示。


<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"><!-- The definition of the Root Spring Container shared by all Servlets and Filters --><context-param><param-name>contextConfigLocation</param-name><param-value>/WEB-INF/spring/root-context.xml</param-value></context-param><!-- Creates the Spring Container shared by all Servlets and Filters --><listener><listener-class>org.springframework.web.context.ContextLoaderListener</listener-class></listener><!-- Processes application requests --><servlet><servlet-name>appServlet</servlet-name><servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class><init-param><param-name>contextConfigLocation</param-name><param-value>/WEB-INF/spring/appServlet/servlet-context.xml</param-value></init-param><load-on-startup>1</load-on-startup></servlet><servlet-mapping><servlet-name>appServlet</servlet-name><url-pattern>/</url-pattern></servlet-mapping></web-app>

大部分是样板代码,最重要的部分是弹簧上下文文件位置,我们将配置我们的spring bean和服务。如果需要,您可以根据项目要求进行更改。

Hibernate Entity Bean

我们在实体bean类中使用JPA注释,但是,我们也可以在XML文件中使用简单的java bean和映射详细信息。在这种情况下,我们需要在Spring bean配置中配置Hibernate SessionFactory时提供映射文件详细信息。


package com.journaldev.spring.model;import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;/*** Entity bean with JPA annotations* Hibernate provides JPA implementation* @author pankaj**/
@Entity
@Table(name="PERSON")
public class Person {@Id@Column(name="id")@GeneratedValue(strategy=GenerationType.IDENTITY)private int id;private String name;private String country;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 String getCountry() {return country;}public void setCountry(String country) {this.country = country;}@Overridepublic String toString(){return "id="+id+", name="+name+", country="+country;}
}

我们的实体bean映射到MySQL数据库中的PERSON表,注意我没有注释带有注释的“name”和“country”字段,@Column因为它们具有相同的名称。SQL脚本下方显示了表格详细信息。


CREATE TABLE `Person` (`id` int(11) unsigned NOT NULL AUTO_INCREMENT,`name` varchar(20) NOT NULL DEFAULT '',`country` varchar(20) DEFAULT NULL,PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;

Hibernate DAO实现

我们将创建PersonDAO接口来声明我们将在项目中使用的方法。接下来,我们将为它提供hibernate特定的实现。


package com.journaldev.spring.dao;import java.util.List;import com.journaldev.spring.model.Person;public interface PersonDAO {public void addPerson(Person p);public void updatePerson(Person p);public List<Person> listPersons();public Person getPersonById(int id);public void removePerson(int id);
}

特定于Hibernate的DAO实现如下所示。


package com.journaldev.spring.dao;import java.util.List;import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Repository;import com.journaldev.spring.model.Person;@Repository
public class PersonDAOImpl implements PersonDAO {private static final Logger logger = LoggerFactory.getLogger(PersonDAOImpl.class);private SessionFactory sessionFactory;public void setSessionFactory(SessionFactory sf){this.sessionFactory = sf;}@Overridepublic void addPerson(Person p) {Session session = this.sessionFactory.getCurrentSession();session.persist(p);logger.info("Person saved successfully, Person Details="+p);}@Overridepublic void updatePerson(Person p) {Session session = this.sessionFactory.getCurrentSession();session.update(p);logger.info("Person updated successfully, Person Details="+p);}@SuppressWarnings("unchecked")@Overridepublic List<Person> listPersons() {Session session = this.sessionFactory.getCurrentSession();List<Person> personsList = session.createQuery("from Person").list();for(Person p : personsList){logger.info("Person List::"+p);}return personsList;}@Overridepublic Person getPersonById(int id) {Session session = this.sessionFactory.getCurrentSession();        Person p = (Person) session.load(Person.class, new Integer(id));logger.info("Person loaded successfully, Person details="+p);return p;}@Overridepublic void removePerson(int id) {Session session = this.sessionFactory.getCurrentSession();Person p = (Person) session.load(Person.class, new Integer(id));if(null != p){session.delete(p);}logger.info("Person deleted successfully, person details="+p);}}

请注意,我没有使用Hibernate Transaction,因为它将由Spring框架处理。

Spring 服务类

以下是我们的服务类,它们使用Hibernate DAO类来处理Person对象。


package com.journaldev.spring.service;import java.util.List;import com.journaldev.spring.model.Person;public interface PersonService {public void addPerson(Person p);public void updatePerson(Person p);public List<Person> listPersons();public Person getPersonById(int id);public void removePerson(int id);}

package com.journaldev.spring.service;import java.util.List;import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;import com.journaldev.spring.dao.PersonDAO;
import com.journaldev.spring.model.Person;@Service
public class PersonServiceImpl implements PersonService {private PersonDAO personDAO;public void setPersonDAO(PersonDAO personDAO) {this.personDAO = personDAO;}@Override@Transactionalpublic void addPerson(Person p) {this.personDAO.addPerson(p);}@Override@Transactionalpublic void updatePerson(Person p) {this.personDAO.updatePerson(p);}@Override@Transactionalpublic List<Person> listPersons() {return this.personDAO.listPersons();}@Override@Transactionalpublic Person getPersonById(int id) {return this.personDAO.getPersonById(id);}@Override@Transactionalpublic void removePerson(int id) {this.personDAO.removePerson(id);}}

请注意,使用@Transactional注释应用了spring声明式事务管理。

Spring控制器类

我们的DAO和Service类已准备就绪,是时候编写我们的控制器类来处理客户端请求并使用服务类来执行特定于数据库的操作,然后返回视图页面。


package com.journaldev.spring;import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
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.journaldev.spring.model.Person;
import com.journaldev.spring.service.PersonService;@Controller
public class PersonController {private PersonService personService;@Autowired(required=true)@Qualifier(value="personService")public void setPersonService(PersonService ps){this.personService = ps;}@RequestMapping(value = "/persons", method = RequestMethod.GET)public String listPersons(Model model) {model.addAttribute("person", new Person());model.addAttribute("listPersons", this.personService.listPersons());return "person";}//For add and update person both@RequestMapping(value= "/person/add", method = RequestMethod.POST)public String addPerson(@ModelAttribute("person") Person p){if(p.getId() == 0){//new person, add itthis.personService.addPerson(p);}else{//existing person, call updatethis.personService.updatePerson(p);}return "redirect:/persons";}@RequestMapping("/remove/{id}")public String removePerson(@PathVariable("id") int id){this.personService.removePerson(id);return "redirect:/persons";}@RequestMapping("/edit/{id}")public String editPerson(@PathVariable("id") int id, Model model){model.addAttribute("person", this.personService.getPersonById(id));model.addAttribute("listPersons", this.personService.listPersons());return "person";}}

请注意,我正在使用@Controller注释,因此Spring框架会将其视为Controller类来处理客户端请求。我也在使用@Autowired@Qualifier注释注入PersonService,我们也可以在spring上下文xml文件中完成它。

推荐阅读:Spring Bean Autowiring

Spring Bean配置

我们的服务已准备就绪,我们所需要的只是通过spring bean配置连接它们。我们的root-context.xml文件为空,因此我们只查看servlet-context.xml文件。


<?xml version="1.0" encoding="UTF-8"?>
<beans:beans xmlns="http://www.springframework.org/schema/mvc"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:beans="http://www.springframework.org/schema/beans"xmlns:context="http://www.springframework.org/schema/context" xmlns:tx="http://www.springframework.org/schema/tx"xsi:schemaLocation="http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsdhttp://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsdhttp://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsdhttp://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.0.xsd"><!-- DispatcherServlet Context: defines this servlet's request-processing infrastructure --><!-- Enables the Spring MVC @Controller programming model --><annotation-driven /><!-- Handles HTTP GET requests for /resources/** by efficiently serving up static resources in the ${webappRoot}/resources directory --><resources mapping="/resources/**" location="/resources/" /><!-- Resolves views selected for rendering by @Controllers to .jsp resources in the /WEB-INF/views directory --><beans:beanclass="org.springframework.web.servlet.view.InternalResourceViewResolver"><beans:property name="prefix" value="/WEB-INF/views/" /><beans:property name="suffix" value=".jsp" /></beans:bean><beans:bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"destroy-method="close"><beans:property name="driverClassName" value="com.mysql.jdbc.Driver" /><beans:property name="url"value="jdbc:mysql://localhost:3306/TestDB" /><beans:property name="username" value="pankaj" /><beans:property name="password" value="pankaj123" /></beans:bean><!-- Hibernate 4 SessionFactory Bean definition --><beans:bean id="hibernate4AnnotatedSessionFactory"class="org.springframework.orm.hibernate4.LocalSessionFactoryBean"><beans:property name="dataSource" ref="dataSource" /><beans:property name="annotatedClasses"><beans:list><beans:value>com.journaldev.spring.model.Person</beans:value></beans:list></beans:property><beans:property name="hibernateProperties"><beans:props><beans:prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</beans:prop><beans:prop key="hibernate.show_sql">true</beans:prop></beans:props></beans:property></beans:bean><beans:bean id="personDAO" class="com.journaldev.spring.dao.PersonDAOImpl"><beans:property name="sessionFactory" ref="hibernate4AnnotatedSessionFactory" /></beans:bean><beans:bean id="personService" class="com.journaldev.spring.service.PersonServiceImpl"><beans:property name="personDAO" ref="personDAO"></beans:property></beans:bean><context:component-scan base-package="com.journaldev.spring" /><tx:annotation-driven transaction-manager="transactionManager"/><beans:bean id="transactionManager" class="org.springframework.orm.hibernate4.HibernateTransactionManager"><beans:property name="sessionFactory" ref="hibernate4AnnotatedSessionFactory" /></beans:bean></beans:beans>

dataSource bean是为org.apache.commons.dbcp.BasicDataSource类的基本连接池定义的。

org.springframework.orm.hibernate4.LocalSessionFactoryBeanbean用于Hibernate 4 SessionFactory。对于Hibernate 3,你会发现类似的org.springframework.orm.hibernate3.LocalSessionFactoryBeanorg.springframework.orm.hibernate3.AnnotationSessionFactoryBean

重要的一点是,当我们依赖Spring框架进行Hibernate会话管理时,我们不应该定义hibernate.current_session_context_class,否则,您将获得大量与会话事务相关的问题。

personDAOpersonService bean是自我理解的。

org.springframework.orm.hibernate4.HibernateTransactionManagerSpring ORM需要transactionManager bean定义来支持hibernate会话事务管理。对于Hibernate 3,你会发现类似的类org.springframework.orm.hibernate3.HibernateTransactionManager。Spring使用AOP进行事务管理,现在可以将其与@Transactional注释相关联。

推荐阅读:Spring AOP和Spring Transaction Management

查看页面

我们应用程序的最后一部分是视图页面,注意在Controller处理程序方法中添加到Model的属性,我们将使用它们来创建我们的视图页面。我们还将使用JSTL标签,弹簧芯和弹簧形式标签。


<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ taglib uri="http://www.springframework.org/tags" prefix="spring" %>
<%@ taglib uri="http://www.springframework.org/tags/form" prefix="form" %>
<%@ page session="false" %>
<html>
<head><title>Person Page</title><style type="text/css">.tg  {border-collapse:collapse;border-spacing:0;border-color:#ccc;}.tg td{font-family:Arial, sans-serif;font-size:14px;padding:10px 5px;border-style:solid;border-width:1px;overflow:hidden;word-break:normal;border-color:#ccc;color:#333;background-color:#fff;}.tg th{font-family:Arial, sans-serif;font-size:14px;font-weight:normal;padding:10px 5px;border-style:solid;border-width:1px;overflow:hidden;word-break:normal;border-color:#ccc;color:#333;background-color:#f0f0f0;}.tg .tg-4eph{background-color:#f9f9f9}</style>
</head>
<body>
<h1>Add a Person
</h1><c:url var="addAction" value="/person/add" ></c:url><form:form action="${addAction}" commandName="person">
<table><c:if test="${!empty person.name}"><tr><td><form:label path="id"><spring:message text="ID"/></form:label></td><td><form:input path="id" readonly="true" size="8"  disabled="true" /><form:hidden path="id" /></td> </tr></c:if><tr><td><form:label path="name"><spring:message text="Name"/></form:label></td><td><form:input path="name" /></td> </tr><tr><td><form:label path="country"><spring:message text="Country"/></form:label></td><td><form:input path="country" /></td></tr><tr><td colspan="2"><c:if test="${!empty person.name}"><input type="submit"value="<spring:message text="Edit Person"/>" /></c:if><c:if test="${empty person.name}"><input type="submit"value="<spring:message text="Add Person"/>" /></c:if></td></tr>
</table>
</form:form>
<br>
<h3>Persons List</h3>
<c:if test="${!empty listPersons}"><table class="tg"><tr><th width="80">Person ID</th><th width="120">Person Name</th><th width="120">Person Country</th><th width="60">Edit</th><th width="60">Delete</th></tr><c:forEach items="${listPersons}" var="person"><tr><td>${person.id}</td><td>${person.name}</td><td>${person.country}</td><td><a href="<c:url value='/edit/${person.id}' />" >Edit</a></td><td><a href="<c:url value='/remove/${person.id}' />" >Delete</a></td></tr></c:forEach></table>
</c:if>
</body>
</html>

Spring MVC Hibernate应用程序测试

只需构建项目并将其部署到您选择的任何servlet容器中,例如Tomcat。下面的屏幕截图显示了我们应用程序的视图页面。

您还可以在服务器日志文件中找到类似的日志。


Hibernate: insert into PERSON (country, name) values (?, ?)
INFO : com.journaldev.spring.dao.PersonDAOImpl - Person saved successfully, Person Details=id=15, name=Pankaj, country=USA
Hibernate: select person0_.id as id1_0_, person0_.country as country2_0_, person0_.name as name3_0_ from PERSON person0_
INFO : com.journaldev.spring.dao.PersonDAOImpl - Person List::id=10, name=Raman, country=UK2
INFO : com.journaldev.spring.dao.PersonDAOImpl - Person List::id=11, name=Lisa, country=France
INFO : com.journaldev.spring.dao.PersonDAOImpl - Person List::id=15, name=Pankaj, country=USA

摘要

本教程旨在为您提供有关Spring MVC和Hibernate集成入门的足够详细信息,我希望您会发现它很有用。您可以从下面的链接下载最终项目并使用它。

下载Spring MVC Hibernate集成项目

转载来源:https://www.journaldev.com/3531/spring-mvc-hibernate-mysql-integration-crud-example-tutorial

Spring MVC Hibernate MySQL集成CRUD示例教程相关推荐

  1. mvc crud_Spring MVC Hibernate MySQL集成CRUD示例教程

    mvc crud We learned how to integrate Spring and Hibernate in our last tutorial. Today we will move f ...

  2. Spring MVC + Hibernate + Maven:CRUD操作示例

    在本文中,我想研究一个Spring MVC + Hibernate + Maven用法的示例. 这套技术暗含领域领域的基础知识. 因此,我将尝试详细解释所有重要时刻. 其他没有主题的内容将提供指向更多 ...

  3. Spring MVC Hibernate验证器使用示例

    下面的示例演示如何使用Spring Web MVC框架在表单中使用错误处理和验证器. 首先使用Eclipse IDE,并按照以下步骤使用Spring Web Framework开发基于动态表单的Web ...

  4. Primefaces,Spring 4 with JPA(Hibernate 4 / EclipseLink)示例教程

    Primefaces,Spring 4 with JPA(Hibernate 4 / EclipseLink)示例教程 Java Persistence API是标准规范.它提供了一个由不同实现者框架 ...

  5. ssh(Spring+Spring mvc+hibernate)简单增删改查案例

    最近和spring mvc干上了,各种奇葩问题,各种解决...现在想想这历程还挺艰辛的,好了,不在这墨迹了,我们进入正题. 据说,现在Springmvc很流行,既然很流行就搞搞它,看看是个什么鬼,于是 ...

  6. jqgrid mvc_将JQGrid与Spring MVC和Gson集成

    jqgrid mvc 我在一个单页面应用程序上工作,我想在使用Spring MVC的应用程序的一部分中使用网格功能. 自从我上次使用JQGrid以来已经有一段时间了,找到让我起床所需的信息有点困难. ...

  7. 将JQGrid与Spring MVC和Gson集成

    我在一个单页面应用程序上工作,我想在使用Spring MVC的应用程序的一部分中使用网格功能. 自从我上次使用JQGrid以来已经有一段时间了,找到让我起床所需的信息有点困难. 在这篇文章中,我想整理 ...

  8. Hibernate Tomcat JNDI DataSource示例教程

    Hibernate Tomcat JNDI DataSource示例教程 欢迎来到Hibernate Tomcat JNDI DataSource示例教程.我们已经看到如何在独立的Java应用程序中使 ...

  9. Hibernate Tomcat JNDI数据源示例教程

    Welcome to the Hibernate Tomcat JNDI DataSource example tutorial. We have already seen how to use Hi ...

最新文章

  1. Ehcache 3.0发布,修补了API并支持非堆存储
  2. 类选择器选择非唯一属性无法精确取值的问题
  3. Spring常问的面试
  4. 内置锁的能力不足以满足需求
  5. 简单的combineByKey算子【看完就懂系列】
  6. Myeclipse学习总结(8)——Eclipse实用操作
  7. 利用Python查看微信共同好友
  8. NSThread使用总结
  9. 56 SD配置-科目分配-定义物料科目设置组
  10. GTN-Graph Transformer Network 图变换网络 NeurIPS2019
  11. flutter listview 滚动到底部_Flutter系列之Flex布局详解
  12. 如何用WSUS2.0分发补丁
  13. 30.github 搭建 blog
  14. 计算机应用基础ppt百度文库,计算机应用基础课件(最新版).ppt
  15. bp神经网络的应用案例,bp神经网络数学模型
  16. XTDorne平台搭建无人机仿真环境时遇到的问题及解决
  17. Fortran编程(VScode配置)——笔记2
  18. uniapp开发微信小程序,开发者工具、真机预览都没问题,唯独预览、体验版在手机上列表顺序错乱,用的localeCompare做的中文排序,终于找到问题并解决掉了,记录一下子
  19. getInputStream/getReader() has already been called for this request
  20. $.ajax 的使用方法及参数说明

热门文章

  1. excel c# 输出
  2. 跨浏览器实现等高栏 Equal Height Columns with Cross-Browser CSS
  3. 实现动态验证码的思路
  4. UITextField 文本字段控件 -- IOS (解决键盘遮住View及密文設定的问题)(实例)
  5. Linux读写执行权限
  6. Ethercat解析(八)之主站运行阶段
  7. Python——验证码识别 安装Pillow、tesseract-ocr与pytesseract模块的安装以及错误解决
  8. Java——volatile关键字详解
  9. Ubuntu 16.04 安装phpmyadmin以及注意事项
  10. 修改线程的名称 java 1615387415