1. 程式人生 > >框架篇:Spring+SpringMVC+hibernate整合開發

框架篇:Spring+SpringMVC+hibernate整合開發

前言:

  最近沒什麼事做,搭個框架寫成部落格記錄下來,拉通一下之前所學知識.

  話不多說,我們直接步入正題。

  準備工作:

     1/安裝並配置java執行環境

     2/資料庫的安裝配置(Mysql)

     3/安裝並配置伺服器(Tomcat)

     4/Maven

     5/ IntelliJIDEA的安裝配置(本人使用的主要軟體是IntelliJIDEA,沒用eclipse什麼的)

     6/ 使用IntelliJIDEA建立一個web app專案。

    貌似就這些了吧

導包

不同於以往的導包,由於我們建立的是maven的webapp專案,所以現在只需配置下pomxml這個配置檔案,系統會自動到maven的中央倉庫去下載相應的包.

本人的pom.xml配置檔案如下(都寫有說明的哈): 

<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>XRog</groupId>
  <
artifactId>ssh</artifactId> <packaging>war</packaging> <version>1.0-SNAPSHOT</version> <name>ssh Maven Webapp</name> <url>http://maven.apache.org</url> <!-- 本人將配置包的版本資訊都統一放入此處,方便以後管理--> <properties> <springVersion>4.3.1.RELEASE</
springVersion> <hibernateVersion>4.3.5.Final</hibernateVersion> <jstlVersion>1.2</jstlVersion> <taglibVersion>1.1.2</taglibVersion> <servletVersion>3.0-alpha-1</servletVersion> <jsonVersion>1.9.13</jsonVersion> <jacksonVersion>2.5.0</jacksonVersion> <mysqlVersion>6.0.3</mysqlVersion> <c3p0Version>0.9.1.2</c3p0Version> <log4jVersion>1.2.17</log4jVersion> <fileuploadVersion>1.3.1</fileuploadVersion> <lombokVersion>1.16.10</lombokVersion> </properties> <dependencies> <!-- 單元測試 --> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>3.8.1</version> <scope>test</scope> </dependency> <!-- spring--> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-beans</artifactId> <version>${springVersion}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-core</artifactId> <version>${springVersion}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>${springVersion}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-orm</artifactId> <version>${springVersion}</version> </dependency> <!-- spring web + spring MVC--> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-web</artifactId> <version>${springVersion}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>${springVersion}</version> </dependency> <!-- hibernate配置--> <dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-core</artifactId> <version>${hibernateVersion}</version> </dependency> <!-- hibernate 快取, 視情況新增--> <dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-ehcache</artifactId> <version>${hibernateVersion}</version> </dependency> <!-- jsp頁面使用的jstl支援--> <dependency> <groupId>jstl</groupId> <artifactId>jstl</artifactId> <version>${jstlVersion}</version> </dependency> <dependency> <groupId>taglibs</groupId> <artifactId>standard</artifactId> <version>${taglibVersion}</version> </dependency> <dependency> <groupId>javax.servlet</groupId> <artifactId>servlet-api</artifactId> <version>${servletVersion}</version> <scope>provided</scope> </dependency> <!-- DataBase資料庫連線 mysql包--> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>${mysqlVersion}</version> </dependency> <!-- 資料庫連線池--> <dependency> <groupId>c3p0</groupId> <artifactId>c3p0</artifactId> <version>${c3p0Version}</version> </dependency> <!-- json資料 使springMVC可以返回json值 ,視情況新增--> <dependency> <groupId>org.codehaus.jackson</groupId> <artifactId>jackson-mapper-asl</artifactId> <version>${jsonVersion}</version> </dependency> <!-- Jackson可以輕鬆的將Java物件轉換成json物件和xml文件,同樣也可以將json、xml轉換成Java物件--> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-core</artifactId> <version>${jacksonVersion}</version> </dependency> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-annotations</artifactId> <version>${jacksonVersion}</version> </dependency> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> <version>${jacksonVersion}</version> </dependency> <!-- log4j配置, 視情況新增--> <dependency> <groupId>log4j</groupId> <artifactId>log4j</artifactId> <version>${log4jVersion}</version> </dependency> <!--檔案 上傳--> <dependency> <groupId>commons-fileupload</groupId> <artifactId>commons-fileupload</artifactId> <version>${fileuploadVersion}</version> </dependency> <!-- lombok外掛導包--> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>${lombokVersion}</version> <scope>provided</scope> </dependency> </dependencies> <build> <finalName>ssh</finalName> </build> </project>

OK,配置後執行下maven,就會自動向中央倉庫下載相應的包啦!(這個就不多說了)。

SpringMVC配置

我現在在這裡把我配置後的結構拿出來給你們看下

我們先配置下SpringMVC的配置:resources/META-INF/spring-mvc.xml

<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-4.1.xsd
        http://www.springframework.org/schema/context
        http://www.springframework.org/schema/context/spring-context-4.1.xsd
        http://www.springframework.org/schema/mvc
        http://www.springframework.org/schema/mvc/spring-mvc-4.1.xsd">
       
       <!-- 啟動註解驅動的spring MVC功能,註冊請求url和註解POJO類方法的對映-->
       <mvc:annotation-driven />
    <!-- 對模型檢視名稱的解析,在請求時模型檢視名稱新增前後綴 -->
    <context:component-scan base-package="com.ssh" />

    <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="viewClass" value="org.springframework.web.servlet.view.JstlView" />
        <property name="prefix" value="views/" />      <!-- 字首 -->
        <property name="suffix" value=".jsp" />   <!-- 字尾 -->
    </bean>
    
    <!--這裡是對靜態資源的對映-->
    <mvc:resources mapping="/js/**" location="/resources/js/" />
    <mvc:resources mapping="/css/**" location="/resources/css/" />
    <mvc:resources mapping="/img/**" location="/resources/img/" />

</beans>

 好了,我們現在修改下web.xml這個配置檔案,完善下SpringMVC的配置, 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"
         version="3.0">
        <!-- 地址為http://localhost:8080/  顯示的預設網頁-->
        <welcome-file-list>
          <welcome-file>/index.jsp</welcome-file>
        </welcome-file-list>

        <!-- spring MVC config start-->
        <servlet>
            <servlet-name>spring</servlet-name>
            <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
            <init-param>
              <param-name>contextConfigLocation</param-name>
              <!-- 此處指向的的是SpringMVC的配置檔案 -->
              <param-value>classpath:META-INF/spring-mvc.xml</param-value>
            </init-param>
            <!--配置容器在啟動的時候就載入這個servlet並例項化-->
            <load-on-startup>1</load-on-startup>
        </servlet>

        <servlet-mapping>
            <servlet-name>spring</servlet-name>
            <url-pattern>/</url-pattern>
        </servlet-mapping>
        <!-- spring MVC config end-->

</web-app>

OK,SpringMVC配置完成,現在我們進行一下測試吧

在controller層新建一個MainController,內容如下

package com.ssh.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;


/**
 * Created by XRog
 * On 2/1/2017.12:36 AM
 */
@Controller
public class MainController {

    @RequestMapping(value = "test", method = RequestMethod.GET)
    public String test(){
//        實際返回的是views/test.jsp ,spring-mvc.xml中配置過前後綴
        return "test";
    }
}

test.jsp網頁如下:

<html>
<body>
<center>
<h2 style="color: #ff261a;">this is my test page!</h2>
</center>
</body>
</html>

重啟Tomcat伺服器, 然後瀏覽器訪問http://localhost/test如下圖所示:

PS: Tomcat預設埠是8080,我更改了埠號,如若你們為更改,正確的訪問地址是localhost:8080/test

OK,成功訪問。 

SpringMVC+Spring整合

 這個就十分簡單了, 配置applicationContext.xml這個Spring的配置檔案如下:

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

        <!-- 自動掃描 -->
        <context:component-scan base-package="com.ssh">
            <!-- 掃描時跳過 @Controller 註解的JAVA類(控制器) -->
            <context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller"/>
        </context:component-scan>

</beans>

完善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"
         version="3.0">
        <!-- 地址為http://localhost:8080/  顯示的預設網頁-->
        <welcome-file-list>
          <welcome-file>/index.jsp</welcome-file>
        </welcome-file-list>

    <!--載入Spring的配置檔案到上下文中去-->
        <context-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>
                classpath:META-INF/applicationContext.xml
            </param-value>
        </context-param>

        <!-- spring MVC config start-->
        <servlet>
            <servlet-name>spring</servlet-name>
            <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
            <init-param>
              <param-name>contextConfigLocation</param-name>
              <!-- 此處指向的的是SpringMVC的配置檔案 -->
              <param-value>classpath:META-INF/spring-mvc.xml</param-value>
            </init-param>
            <!--配置容器在啟動的時候就載入這個servlet並例項化-->
            <load-on-startup>1</load-on-startup>
        </servlet>

        <servlet-mapping>
            <servlet-name>spring</servlet-name>
            <url-pattern>/</url-pattern>
        </servlet-mapping>
        <!-- spring MVC config end-->


        <!-- Spring監聽器 -->
        <listener>
            <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
        </listener>

        <!--  字符集過濾  -->
        <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-8</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>

web.xml配置檔案中更改了三處:引入Spring配置檔案 Spring的監聽器  以及 字符集過濾

OK,Spring+SpringMVC配置完成,下面我們開始測試:

在service寫一個TestServiceImpl實現TestService介面並實現其test()方法, 程式碼如下:

package com.ssh.service.impl;

import com.ssh.service.TestService;
import org.springframework.stereotype.Service;

/**
 * Created by XRog
 * On 2/1/2017.12:58 AM
 */
@Service
public class TestServiceImpl implements TestService {
    public String test() {
        return "test";
    }
}

PS:這裡注意寫@Service註解

MainController控制器更改如下:

package com.ssh.controller;

import com.ssh.service.TestService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;


/**
 * Created by XRog
 * On 2/1/2017.12:36 AM
 */
@Controller
public class MainController {

    @Autowired
    private TestService testService;

    @RequestMapping(value = "test", method = RequestMethod.GET)
    public String test(){
//        實際返回的是views/test.jsp ,spring-mvc.xml中配置過前後綴
        return "test";
    }

    @RequestMapping(value = "springtest", method = RequestMethod.GET)
    public String springTest(){
        return testService.test();
    }
}

控制器這裡我們運用了Spring的依賴注入自動裝配。

在瀏覽器中輸入地址http://localhost/springtest呼叫springtest方法     

yes,成功返回,說明我們之前的配置沒問題

Spring+SpringMVC+hibernate整合

好了,現在就缺hibernate這個框架了。。 我先給大家看些我搭建好之後的結構圖吧

我們想來編寫config.properties這個配置檔案,裡面存放的是hibernate的一些配置

#database connection config
jdbc.driver = com.mysql.jdbc.Driver
jdbc.url = jdbc:mysql://?????:3306/ssh?useUnicode=true&characterEncoding=utf-8
jdbc.username = root
jdbc.password = ???

#hibernate config
hibernate.dialect = org.hibernate.dialect.MySQLDialect
hibernate.show_sql = true
hibernate.format_sql = true
hibernate.hbm2ddl.auto = update

這裡連線資料庫的引數由於我是連線我晚上的資料庫,因此我資料庫地址和密碼打了“???”,你們連線時改成自己本地的就OK了

下面配置hibernate,這裡我為了方便,就直接寫進applicationContext.xml裡面。配置後的applicationContext.xml如下:

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

    <!--********************************************配置Spring***************************************-->
        <!-- 自動掃描 -->
        <context:component-scan base-package="com.ssh">
            <!-- 掃描時跳過 @Controller 註解的JAVA類(控制器) -->
            <context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller"/>
        </context:component-scan>


    <!--********************************************配置hibernate********************************************-->

    <!--掃描配置檔案(這裡指向的是之前配置的那個config.properties)-->
    <context:property-placeholder location="classpath:/config.properties" />

    <!--配置資料來源-->
    <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close">
        <property name="driverClass" value="${jdbc.driver}" />  <!--資料庫連線驅動-->
        <property name="jdbcUrl" value="${jdbc.url}" />     <!--資料庫地址-->
        <property name="user" value="${jdbc.username}" />   <!--使用者名稱-->
        <property name="password" value="${jdbc.password}" />   <!--密碼-->
        <property name="maxPoolSize" value="40" />      <!--最大連線數-->
        <property name="minPoolSize" value="1" />       <!--最小連線數-->
        <property name="initialPoolSize" value="10" />      <!--初始化連線池內的資料庫連線-->
        <property name="maxIdleTime" value="20" />  <!--最大空閒時間-->
    </bean>

    <!--配置session工廠-->
    <bean id="sessionFactory" class
            
           

相關推薦

框架Spring+SpringMVC+hibernate整合開發

前言:   最近沒什麼事做,搭個框架寫成部落格記錄下來,拉通一下之前所學知識.   話不多說,我們直接步入正題。   準備工作:      1/安裝並配置java執行環境      2/資料庫的安裝配置(Mysql)      3/安裝並配置伺服器(Tomcat)    

Spring+SpringMVC+hibernate整合開發

exp mvc margin tar e30 fio ilb fc14 h264 被瘟謎謫逼戲溫次蔡蒙磊疤回http://shequ.docin.com/vpe32249 空私錘氖園掠覆痔瓜傅殖http://jz.docin.com/gqsn83067 境噬栽品新嗚趙德

常用框架(一)spring+springMvc+mybatis+maven

專案說明: (1) 本例採用 maven web 工程做例子講解 (2) 利用mybaits 提供的程式碼生成工具自動生成程式碼(dao介面,sql mapper對映檔案,pojo資料庫對映類) (3) 資料庫用 MySQL 專案構建: 一,新建maven

[ssh] spring-springmvc-hibernate整合之配置檔案

1.web.xml檔案: <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:

小練習Spring + SpringMVC + Mybatis 整合

注:將涉及的類(包、模組)交給Spring容器管理後,可在開發過程中注入需要的東西,通過Spring容器的管理,避免了各種類及其屬性的額外宣告使用,簡化開發流程 web.xml中,可以通過<context-param>批量把各種xml裡配置好的Bean一起載入到Spring容器中

spring,springmvc,hibernate整合事務不起作用

剛學習完這三大框架,跟著別人的部落格整合一下,就測試一下事務是否起作用,用的1/0來測試,用的@Transactional註解在service層,發現事務始終不起作用,也在網上查了一些資料,發現spring,springmvc配置檔案中掃描包衝突了,因為我的是在web.xm

spring mvc高階(八):Spring+SpringMVC+Mybatis整合(採用泛型和註解優化)

8.1整合思路分析 用Spring對MyBatis進行整合,將使得采用MyBatis操作資料庫更加方便和簡單。由於Spring 3的開發在MyBatis 3官方釋出前就結束了,Spring開發團隊不想釋出一個基於非釋出版本的MyBatis的整合支援,因此Spring 3沒有

SpringMVC+Spring+Hibernate整合開發

最近突然想認真研究下java web常用框架,雖然現在一直在用,但實現的整體流程不是很瞭解,就在網上搜索資料,嘗試自己搭建,以下是自己的搭建及測試過程。 一、準備工作:      1/安裝並配置java執行環境      2/資料庫的安裝配置(Mysql)      3/安裝並配置伺服器(Tom

Java進階學習第二十四天(Spring框架事務管理、SpringHibernate整合

一、事務控制 1、引入 使用者訪問 > Action > Service > Dao 如何保證: 在service中呼叫2次dao,其中一個dao執行失敗,整個操作要回滾 2、事務控制概述 ① 程式設計式事務控制:自己手動控制事務 Jdbc程式

springMVC系列之(四) spring+springMVC+hibernate 三大框架整合

         首先我們要知道Hibernate五大物件:,本例項通過深入的使用這五大物件和spring+springMVC相互結合,體會到框架的好處,提高我們的開發效率          Hibernate有五大核心介面,分別是:Session Transaction

spring+springMVC+hibernate 三大框架整合

 首先我們要知道hibernate五大物件:,本例項通過深入的使用這五大物件和spring+springMVC相互結合,體會到框架的好處,提高我們的開發效率          Hibernate有五大核心介面,分別是:Session Transaction Query S

SpringBoot自學教程 | 第四Spring Boot整合mybatis

整合 com 字段 apach param pack image ice rac   引入依賴   1:在pom文件引入mybatis-spring-boot-starter的依賴: 1 <dependency> 2 <groupId>

Struts2+Spring+Hibernate整合開發(Maven多模組搭建)

Struts2+Spring+Hibernate整合開發(Maven多模組搭建) 0.專案結構 Struts2:web層 Spring:物件的容器 Hibernate:資料庫持久化操作   1.父模組匯入和管理所有需要的jar包 <?xml v

第九Spring Boot整合RabbitMQ

RabbitMQ是一個開源的訊息代理和佇列伺服器,用來通過普通協議在完全不同的應用之間共享資料,或者簡單地將作業佇列以便讓分散式伺服器進行處理。訊息佇列使用訊息將應用程式連線起來,這些訊息通過像RabbitMQ這樣的訊息代理伺服器在應用程式之間路由。這篇文章將帶你瞭解怎麼整合Rabbit

第七Spring Boot整合Spring Cache

為了提高效能,減少資料庫的壓力,使用快取是非常好的手段之一。因此本文講解 Spring Boot 如何整合快取管理。 宣告式快取 Spring 定義 CacheManager 和 Cache 介面用來統一不同的快取技術。例如 JCache、 EhCache、 Hazelcast、

第六Spring Boot整合Swagger2構建RESTful API文件

由於Spring Boot有快速開發、便捷部署等特性,所以很大一部分Spring Boot的使用者會用來構建RESTfulAPI。而我們構建RESTfulAPI的目的通常都是由於多終端的原因,這些終端會共用很多底層業務邏輯,因此我們會抽象出這樣一層來同時服務於多個移動端或者Web前端。

第五Spring Boot整合Redis

Redis 是一個高效能的key-value資料庫,它支援儲存的value型別相對更多,包括string(字串)、list(連結串列)、set(集合)、zset(sorted set --有序集合)和hash(雜湊型別)。使用redis作為快取技術方案,主要是因為Redis快取技

第三Spring Boot整合MyBatis

本文主要講解如何在Spring Boot下整合MyBatis並訪問資料庫。MyBatis 是一款優秀的持久層框架,它支援定製化 SQL、儲存過程以及高階對映。(如不瞭解點選前往) 環境依賴 修改 POM 檔案,新增mybatis-spring-boot-starter依賴。值得注

Spring Cloud系列教程 | 第十四Spring Cloud與Kubernetes的整合

推薦 Spring Cloud 視訊: Spring Cloud與Kubernetes的整合      Spring Cloud提供了專門的spring-cloud-kubernetes專案與k8s整合,儘管k8s提供了服務註冊和發現等功能與Spring cl

框架整合spring+springmvc+mybatis整合

Spingmvc +mybatis整合 思路 第一步:整合dao層              mybatis和spring整合,通過spirng管理mapper介面。 使用mapper掃描器自動掃描mapper介面在spring中進行註冊。 第二步:整合serv