`
yaerfeng1989
  • 浏览: 233073 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Spring MVC注解配置结合Hibernate的入门教程及其代码实例

阅读更多

原创整理不易,转载请注明出处:Spring MVC注解配置结合Hibernate的入门教程及其代码实例

代码下载地址:http://www.zuidaima.com/share/1787210045197312.htm

1、概述

本文旨在搭建Spring MVC+Hibernate开发框架,通过一个简单的demo讲解Spring MVC的相关配置文件,以及通过注解方式实现简单功能。

开发框架:Spring+Spring MVC+Hibernate(Spring所用的版本为3.0.5)。

数据库:MySQL(数据库名称test,demo工程所用的表名为user_info)。

2、开发框架搭建

2.1 创建工程

         在Eclipse的Java EE版本或MyEclipse中创建一个Dynamic Web Project。并创建如下包:

(1)com.dao:系统的DAO;

(2)com.model:表的实体类(使用Hibernate),在该工程中不配置.hbm.xml映射文件,采取注解的方式;

(3)com.service:业务逻辑接口类和实现类;

(4)com.web:Spring MVC的Controllor类;

(5)com.config:Spring和Spring MVC的配置文件。

创建成功后包结构如下所示:
   springmvctest
        src 
        ----com
            ----amigo
                ----dao
                ----model
                ----service
                ----web
         ----config
         WebContent
         ----META-INF
         ----WEB-INF
             ----lib
             ----classes
 

 

2.2 引入相关包

         需要将Spring、Spring MVC、Hibernate、MySQL驱动、log4j、c3p0数据源等的相关包引入。lib目录下的jar包如下:
      antlr-2.7.6.jar
      aopalliance.jar
      asm-attrs.jar
      asm.jar
      c3p0-0.9.0.jar
      cglib-2.1.3.jar
      commons-beanutils-1.8.0.jar
      commons-beanutils-bean-collections-1.8.0.jar
      commons-betwixt-0.8.jar
      commons-collections-2.1.1.jar
      commons-digester-2.1.jar
      commons-discovery-0.2.jar
      commons-httpclient.jar
      commons-logging.jar
      dom4j-1.6.1.jar
      ehcache-1.2.3.jar
      ejb3-persistence.jar
      hibernate-annotations.jar
      hibernate-commons-annotations.jar
      hibernate-entitymanager.jar
      hibernate-validator.jar
      hibernate3.jar
      jaas.jar
      javassist.jar
      jaxen-1.1-beta-7.jar
      jaxrpc.jar
      jboss-archive-browsing.jar
      jdbc2_0-stdext.jar
      jta.jar
      log4j-1.2.11.jar
      mysql-connector-java-5.0.4-bin.jar
      org.springframework.aop-3.0.5.RELEASE.jar
      org.springframework.asm-3.0.5.RELEASE.jar
      org.springframework.aspects-3.0.5.RELEASE.jar
      org.springframework.beans-3.0.5.RELEASE.jar
      org.springframework.context-3.0.5.RELEASE.jar
      org.springframework.context.support-3.0.5.RELEASE.jar
      org.springframework.core-3.0.5.RELEASE.jar
      org.springframework.expression-3.0.5.RELEASE.jar
      org.springframework.instrument-3.0.5.RELEASE.jar
      org.springframework.instrument.tomcat-3.0.5.RELEASE.jar
      org.springframework.jdbc-3.0.5.RELEASE.jar
      org.springframework.jms-3.0.5.RELEASE.jar
      org.springframework.orm-3.0.5.RELEASE.jar
      org.springframework.oxm-3.0.5.RELEASE.jar
      org.springframework.test-3.0.5.RELEASE.jar
      org.springframework.transaction-3.0.5.RELEASE.jar
      org.springframework.web-3.0.5.RELEASE.jar
      org.springframework.web.servlet-3.0.5.RELEASE.jar
      saaj.jar
      wsdl4j.jar
      xerces-2.6.2.jar
      xml-apis.jar

 

2.3 配置文件

2.3.1 配置web.xml

         在web.xml中需要配置Spring的配置文件(applicationContext.xml)和Spring MVC配置文件(spring-mvc.xml),配置指定所有.do的请求都由Spring的DispatcherServlet类进行处理。

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 " xmlns:web=" http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd " xsi:schemaLocation=" http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd " id=" WebApp_ID " version=" 2.5 "> 
 <display - name> springmvctest </display - name> 
 <welcome - file - list> 
 <welcome - file> index.html </welcome - file> 
 <welcome - file> index.htm </welcome - file> 
 <welcome - file> index.jsp </welcome - file> 
 </welcome - file - list> 
 <context - param> 
 <param - name> contextConfigLocation </param - name> 
 <param - value> classpath:config / applicationContext.xml </param - value> 
 </context - param> 
 <listener> 
 <listener - class> org.springframework.web.context.ContextLoaderListener
 </listener - class> 
 </listener> 
 <servlet> 
 <servlet - name> spring - mvc </servlet - name> 
 <servlet - class> org.springframework.web.servlet.DispatcherServlet </servlet - class> 
 <init - param> 
 <param - name> contextConfigLocation </param - name> 
 <param - value> classpath:config / spring - mvc.xml </param - value> 
 </init - param> 
 <load - on - startup> </load - on - startup> 
 </servlet> 
 <servlet - mapping> 
 <servlet - name> spring - mvc </servlet - name> 
 <url - pattern>* . do </url - pattern> 
 </servlet - mapping> 
 <filter> 
 <filter - name> encodingFilter </filter - name> 
 <filter - class> org.springframework.web.filter.CharacterEncodingFilter </filter - class> 
 <init - param> 
 <param - name> encoding </param - name> 
 <param - value> UTF - </param - value> 
 </init - param> 
 <init - param> 
 <param - name> forceEncoding </param - name> 
 <param - value> true </param - value> 
 </init - param> 
 </filter> 
 <filter - mapping> 
 <filter - name> encodingFilter </filter - name> 
 <url - pattern> /**/ /*</url-pattern>
 </filter-mapping>
</web-app>

2.3.2 配置 spring 的配置文件

Spring的配置文件applicationContext.xml文件中主要配置对Hibernate的事务的管理,该配置文件的参考配置如下:

<?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:aop=" http://www.springframework.org/schema/aop " 
xmlns:task=" http://www.springframework.org/schema/task " 
 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/aop 
 http: // www.springframework.org/schema/aop/spring-aop-3.0.xsd 
 http: // www.springframework.org/schema/task 
 http: // www.springframework.org/schema/task/spring-task-3.0.xsd"> 
 <context:annotation - config /> 

 <!-- 扫描annotation类,过滤Service,Repository --> 
 <context:component - scan base - package=" com.zuidaima "> 
 <context:include - filter type=" annotation " expression=" org.springframework.stereotype.Service " /> 
 <context:include - filter type=" annotation " expression=" org.springframework.stereotype.Repository " /> 
 </context:component - scan> 

 <bean id=" dataSource " class=" com.mchange.v2.c3p0.ComboPooledDataSource " destroy - method=" close "> 
 <property name=" driverClass "> 
 <value> com.mysql.jdbc.Driver </value> 
 </property> 
 <property name=" jdbcUrl "> 
 <value> jdbc:mysql: // localhost/test</value> 
 </property> 
 <property name=" user "> 
 <value> root </value> 
 </property> 
 <property name=" password "> 
 <value> 123456 </value> 
 </property> 
 <property name=" maxPoolSize "> 
 <value> </value> 
 </property> 
 <property name=" minPoolSize "> 
 <value> </value> 
 </property> 
 <property name=" initialPoolSize "> 
 <value> </value> 
 </property> 
 <property name=" maxIdleTime "> 
 <value> </value> 
 </property> 
 </bean> 
 <bean id=" sessionFactory " class=" org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean "> 
 <property name=" dataSource " ref=" dataSource " /> 
 <property name=" packagesToScan " value=" com.zuidaima.model* "></property> 
 <property name=" hibernateProperties "> 
 <props> 
 <prop key=" hibernate.dialect "> org.hibernate.dialect.MySQLDialect </prop> 
 <prop key=" show_sql "> true </prop> 
 <prop key=" hibernate.jdbc.batch_size "> </prop> 
 </props> 
 </property> 
 </bean> 

 <!-- 不破坏数据库,注册SessionFactory --> 
 <bean id=" transactionManager " class=" org.springframework.orm.hibernate3.HibernateTransactionManager "> 
 <property name=" sessionFactory " ref=" sessionFactory "></property> 
 </bean> 
 <bean id=" transactionInterceptor " 
 class=" org.springframework.transaction.interceptor.TransactionInterceptor "> 
 <property name=" transactionManager " ref=" transactionManager "></property> 
 <property name=" transactionAttributes "> 
 <props> 
 <prop key=" save* "> PROPAGATION_REQUIRED </prop> 
 <prop key=" update* "> PROPAGATION_REQUIRED </prop> 
 <prop key=" delete* "> PROPAGATION_REQUIRED </prop> 
 <prop key=" find* "> PROPAGATION_REQUIRED </prop> 
 <prop key=" get* "> PROPAGATION_REQUIRED </prop> 
 <prop key=" execute* "> PROPAGATION_REQUIRED </prop> 
 <prop key=" load* "> PROPAGATION_REQUIRED </prop> 
 <prop key=" merge* "> PROPAGATION_REQUIRED </prop> 
 <prop key=" add* "> PROPAGATION_REQUIRED </prop> 
 </props> 
 </property> 
 </bean> 
 <bean
 class=" org.springframework.aop.framework.autoproxy.BeanNameAutoProxyCreator "> 
 <property name=" beanNames "> 
 <list> 
 <value>* Service </value> 
 </list> 
 </property> 
 <property name= " interceptorNames "> 
 <list> 
 <value> transactionInterceptor </value> 
 </list> 
 </property> 
 </bean> 
 </beans>

2.3.3 配置 Spring MVC 配置文件

Spring MVC的配置文件spring-mvc.xml中主要是Controller的配置信息,该文件的参考配置如下:

<?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: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" 
 default-lazy-init="true">
 <context:annotation-config /> 
 <!-- 使Spring支持自动检测组件,如注解的Controller --> 
 <context:component-scan base-package="com.zuidaima.web"/> 

 <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"
 p:prefix="/WEB-INF"
 p:suffix=".jsp" /> 
 
 <bean class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping" /> 
 <!-- 启动 Spring MVC 的注解功能,完成请求和注解 POJO 的映射 --> 
 <bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">
 <property name="messageConverters">
 <list> 
 <bean class="org.springframework.http.converter.StringHttpMessageConverter"> 
 </bean> 
 </list> 
 </property> 
 </bean> 
 </beans>

2.4 创建数据库和表

创建test数据库和user_info表的SQL语句如下(为了简便,user_info只有一个USER_NAME字段):

CREATE DATABASE test;
 USER test;
 CREATE TABLE user_info (
 USER_NAME varchar ( 32 ) NOT NULL ,
 PRIMARY KEY ( USER_NAME )
) ENGINE=InnoDB DEFAULT CHARSET= utf8;

3、实例代码

3.1 DAO层

BaseHibernateDao类的代码如下所示:

package com.zuidaima.dao;

 import javax.annotation.Resource;

 import org.hibernate.HibernateException;
 import org.hibernate.Session;
 import org.hibernate.SessionFactory;
 import org.springframework.dao.DataAccessException;
 import org.springframework.dao.DataAccessResourceFailureException;
 import org.springframework.dao.support.DaoSupport;
 import org.springframework.orm.hibernate3.HibernateTemplate;
 import org.springframework.orm.hibernate3.SessionFactoryUtils;

 public class BaseHibernateDao extends DaoSupport {
 private SessionFactory sessionFactory;
 private HibernateTemplate hibernateTemplate;
 public SessionFactory getSessionFactory() {
 return sessionFactory;
 }

 @Resource(name="sessionFactory")
 public void setSessionFactory(SessionFactory sessionFactory) {
 this.sessionFactory=sessionFactory;
 this.hibernateTemplate=createHibernateTemplate(sessionFactory);
 }

 public Session getSession() {
 if (this.sessionFactory==null) {
 throw new HibernateException("Session Create Fail,SessionFactory is null!");
 }
 return this.sessionFactory.getCurrentSession();
 }

 protected HibernateTemplate createHibernateTemplate(
 SessionFactory sessionFactory) {
 return new HibernateTemplate(sessionFactory);
 }

 @Override
 protected void checkDaoConfig() throws IllegalArgumentException {
 if (this.hibernateTemplate==null) {
 throw new IllegalArgumentException("'sessionFactory' or 'hibernateTemplate' is required");
 }
 }
 
 protected final Session getSession(boolean allowCreate)
 throws DataAccessResourceFailureException, IllegalStateException {
 return (!allowCreate ? SessionFactoryUtils.getSession(
 getSessionFactory(), false) : SessionFactoryUtils.getSession(
 getSessionFactory(),

 this.hibernateTemplate.getEntityInterceptor(), this.hibernateTemplate.getJdbcExceptionTranslator()));
 }

 protected final DataAccessException convertHibernateAccessException(
 HibernateException ex) {
 return this.hibernateTemplate.convertHibernateAccessException(ex);
 }

 protected final void releaseSession(Session session) {
 SessionFactoryUtils.releaseSession(session, getSessionFactory());
 if(null!=session)session=null;
 }

 public final void setHibernateTemplate(HibernateTemplate hibernateTemplate) {
 this.hibernateTemplate=hibernateTemplate;
 }

 public final HibernateTemplate getHibernateTemplate() {
 return this.hibernateTemplate;
 }
}

USER_INFO表的Dao类UserInfoDao类的代码如下所示:

package com.zuidaima.dao;
 import org.springframework.stereotype.Repository;

@Repository
 public class UserInfoDao extends BaseHibernateDao {
}

3.2 业务逻辑层

接口类IHelloService的代码如下:

package com.zuidaima.service;
 public interface IHelloService {
 public int addUser(String userName) throws Exception;;
}

实现类HelloService类的代码如下:

package com.zuidaima.service;
 import javax.annotation.Resource;

 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.springframework.stereotype.Repository;
 import org.springframework.stereotype.Service;

 import com.zuidaima.dao.UserInfoDao;
 import com.zuidaima.model.UserInfo;

@Service( " helloService " )
@Repository
 public class HelloService implements IHelloService ;
 }
}

3.3 控制层

   控制类HelloControllor类接收userName参数,并调用相应的Service类将用户名保存到USER_INFO表中,该类的代码如下:

package com.zuidaima.web;

 import javax.annotation.Resource;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;

 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.springframework.stereotype.Controller;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.ResponseBody;
 import com.zuidaima.service.IHelloService;

@Controller
@RequestMapping( " /test " )
 public class HelloControllor {
 private static final Log log=LogFactory.getLog(HelloControllor.class);

 private IHelloService helloService;

 public IHelloService getHelloService() {
 return helloService;
 }

 @Resource
 public void setHelloService(IHelloService helloService) {
 this.helloService=helloService;
 }

 @RequestMapping("/hello.do")
 public @ResponseBody 
 String sayHello(HttpServletRequest request, HttpServletResponse response) throws Exception {
 request.setCharacterEncoding("UTF-8");
 String userName=request.getParameter("userName");
 log.info("userName="+ userName);
 int resultCode=helloService.addUser(userName);
 String rspInfo="你好!" + userName + ",操作结果码="+ resultCode;
 response.setHeader("Content-type","text/html;charset=UTF-8");
 response.getOutputStream().write(rspInfo.getBytes("UTF-8"));
 return "";
 }
}

@Controller注解标识一个控制器,@RequestMapping注解标记一个访问的路径;如果@RequestMapping注解在类级别上,则表示一相对路径,在方法级别上,则标记访问路径;

4、测试

测试时可以通过访问http://localhost:8080/springmvctest/test/hello.do?userName=amigo777,通过userName参数将用户名添加到USER_INFO表中。

从实例代码可以看出,POJO、DAO层、Service层和Controller层都是采用注解的方式将service、dao注入的,减少了配置量,方便了开发工作。

3
2
分享到:
评论
1 楼 liu1084 2014-05-27  
你这代码 缩进没有 注释没有 看起来真费劲啊

相关推荐

    spring mvc,spring, hibernate 整合登录实例

    在本文中,我们将深入探讨如何将Spring MVC、Spring和Hibernate这三大流行框架整合在一起,以构建一个完整的登录实例。这个实例旨在提供一个清晰、简洁且易于理解的代码结构,帮助初学者快速上手。 首先,Spring ...

    spring mvc + spring + hibernate 全注解整合开发视频教程 09

    【标题】"Spring MVC + Spring + Hibernate 全注解整合开发视频教程 09" 提供了一次深入了解Java企业级应用开发的机会,特别是在使用Spring MVC、Spring和Hibernate这三大核心框架进行全注解配置的场景下。...

    非注解Springmvc+spring+hibernate 入门实例

    总的来说,这个入门实例旨在帮助初学者理解如何在没有使用注解的情况下,通过XML配置文件集成SpringMVC、Spring和Hibernate,完成一个简单的Web应用。虽然现在的最佳实践倾向于使用注解和Spring Boot,但理解非注解...

    spring mvc + spring + hibernate 全注解整合开发视频教程 08

    【标题】"Spring MVC + Spring + Hibernate 全注解整合开发视频教程 08" 提供了一个关于使用Java技术栈进行Web开发的课程,重点在于如何通过注解实现Spring MVC、Spring和Hibernate的深度整合。这个系列教程的第八...

    Spring MVC注解项目实例

    在本项目实例中,我们探讨的是如何使用Spring MVC框架结合注解进行开发,以及如何实现对数据库表的CRUD(创建、读取、更新、删除)操作。Spring MVC是Spring框架的一部分,它专注于Web应用程序的模型-视图-控制器...

    基于jpa+hibernate+spring+spring mvc注解方式项目

    **基于JPA+Hibernate+Spring+Spring MVC注解方式项目详解** 在现代Java Web开发中,Spring框架扮演了核心角色,而Spring MVC作为其MVC(Model-View-Controller)实现,提供了强大的Web应用程序构建能力。同时,JPA...

    spring mvc 注解 增删改 实例

    在这个实例中,我们将重点讨论如何使用Spring MVC的注解进行数据的增删改操作,并结合Hibernate作为ORM(对象关系映射)工具。 首先,`@Controller`注解标记了一个类作为Spring MVC的控制器,负责处理HTTP请求。在...

    spring mvc+hibernate 简单 实例 代码,新手入门

    在这个简单的实例 "demo1" 中,你可以找到一个基础的 Spring MVC 和 Hibernate 结合的项目结构,包括配置文件、实体类、DAO、Service、Controller 和视图页面。通过这个实例,新手可以逐步了解和实践这两个框架的...

    搭建Spring+Spring MVC+Hibernate开发框架

    在IT行业中,构建高效、可扩展的Web应用是至关重要的,而Spring、Spring MVC和Hibernate是Java领域中广泛使用的三大框架,它们各自负责不同的职责,共同构建了一个强大的开发环境。本篇文章将深入探讨如何利用这三大...

    用Maven搭建Spring+Spring MVC+Hibernate框架

    在IT行业中,构建大型、模块化的Java应用时,通常会采用一些成熟的框架组合,例如Spring、Spring MVC和Hibernate。这些框架协同工作,可以提供强大的后端功能,包括依赖注入、模型-视图-控制器(MVC)架构以及对象...

    spring4MVC+Hibernate4实例(增删改查)

    在本实例中,"spring4MVC+Hibernate4实例(增删改查)"是一个基于Maven构建的Java Web项目,旨在演示如何整合Spring MVC和Hibernate框架来实现数据的CRUD(创建、读取、更新和删除)操作。Spring MVC是Spring框架的...

    Spring3mvc和hibernate整合示例代码.zip

    Spring3 MVC 和 Hibernate 是两个非常重要的 Java 开发框架,它们分别用于构建 Web 应用的模型-视图-控制器(MVC)架构和对象关系映射(ORM)。本示例代码将展示如何将这两个框架整合在一起,以实现高效、灵活的后端...

    spring mvc+spring+hibernate+bootstrap开发失物招领项目包括前台页面和后台管理系统

    该项目是基于Spring MVC、Spring、Hibernate和Bootstrap框架构建的一个失物招领系统,涵盖了前端用户界面和后台管理功能。这是一个典型的Java Web应用,利用了SSH(Spring、Struts和Hibernate)的经典组合,不过这里...

    spring+spring mvc+hibernate框架整合简单小例子

    通过实践,可以深入掌握Spring、Spring MVC和Hibernate的用法,为今后的Java Web开发打下坚实的基础。 总之,Spring、Spring MVC和Hibernate的整合是Java Web开发中的常见实践,这种模式不仅提高了开发效率,也增强...

    061、电子政务网站系统 spring mvc+spring+hibernate

    在本项目"061、电子政务网站系统 spring mvc+spring+hibernate"中,开发人员采用了Spring MVC、Spring和Hibernate这三大核心技术来构建高效、稳定且易于维护的后端架构。下面将详细介绍这三个技术及其在电子政务网站...

    Spring+Spring MVC+Struts+hibernate开发摄影平台完整版系统

    《构建摄影平台:Spring+Spring MVC+Struts+Hibernate整合详解》 在现代Web开发领域,Spring框架以其灵活性和强大的企业级应用支持而备受青睐。本项目“Spring+Spring MVC+Struts+Hibernate开发摄影平台完整版系统...

    Spring MVC jar包

    总之,这个压缩包提供了开发基于Spring MVC和Hibernate的Java Web应用所需要的基础资源,无论是初学者还是经验丰富的开发者,都能从中受益。通过学习和实践这些内容,可以提高开发效率,降低维护成本,并提升应用...

    Spring MVC4+Hibernate4整合

    Spring MVC和Hibernate是Java开发中两个非常重要的框架,Spring MVC用于构建Web应用程序的模型-视图-控制器(MVC)架构,而Hibernate则是一个对象关系映射(ORM)工具,帮助开发者将Java对象与数据库中的数据进行...

    最全最经典spring-mvc教程

    这个"最全最经典spring-mvc教程"应该会详细讲解上述所有概念,并可能通过实例演示如何配置、创建和调试Spring MVC项目。对于想要深入理解和使用Spring MVC的开发者来说,这是一份非常宝贵的资源。通过学习这个教程,...

    员工工资管理系统和酒家点餐系统 spring mvc、spring、hibernate、maven

    本项目"员工工资管理系统和酒家点餐系统"便是一个典型的实例,它采用了一系列主流的Java技术框架,包括Spring MVC、Spring、Hibernate和Maven,这些技术的结合使得系统具备了强大的功能和良好的可扩展性。...

Global site tag (gtag.js) - Google Analytics