項目管理工具--Maven的配置, 安裝和使用; 使用Maven搭建一套簡單的SSM框架

前言

  今天是10.24, 也是程序員的節日. 當然要祝各位程序員早日跳槽競升, 早日找到女盆友, 早日成爲技術大牛!(留下沒有技術的眼淚)

  做開發時,無人可避免導入jar包的繁瑣過程。去哪下載jar包呢?jar包是不是最新版呢?如何讓項目中添加的jar包不遺漏呢?諸多與jar包有關的問題困擾着有或沒有強迫症的java開發同胞們,有沒有什麼輕鬆,快捷,高效,便利,讓人愉悅的導包工具呢?答案是肯定的,能完成這個功能的就是maven。

1. Maven簡述&配置

  maven項目對象模型(POM), 通過一小段描述信息來管理項目的構建, 報告和文檔的軟件項目管理工具. maven通過配置文件pom.xml來獲取jar包.

  兩個網址:
    maven官網:http://maven.apache.org/
    導jar包用:http://mvnrepository.com/

下載+配置

  下載地址:http://maven.apache.org/download.cgi
  下載完成後解壓文件, 並配置環境變量: 在這裏插入圖片描述
  變量值爲maven解壓的路徑;

  win7 path中配置:
在這裏插入圖片描述

  win10, 添加輸入路徑即可.
在這裏插入圖片描述

  設置本地倉庫位置
  在D:\apache-maven-3.5.2\conf下有settings.xml的配置文件. 打開配置文件找到註解

<!-- localRepository
   | The path to the local repository maven will use to store artifacts.
   |
   | Default: ${user.home}/.m2/repository
  <localRepository>/path/to/local/repo</localRepository>
  -->

  這段註解就是在提示本地倉庫的配置, 只需自定義目錄設定就可以指定本地目錄的位置:

<localRepository>D:\apache-maven-3.5.2\repository</localRepository>

  然後找到元素, 在它之間加入jdk的默認版本信息:

	<profile>
		<id>jdk-1.8</id>
		<activation>
			 <activeByDefault>true</activeByDefault>
			 <jdk>1.8</jdk>
		</activation>
		<properties>
			 <maven.compiler.source>1.8</maven.compiler.source>
			 <maven.compiler.target>1.8</maven.compiler.target>
			 <maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion>
		</properties>
	</profile>

在這裏插入圖片描述

  maven倉庫一般分爲三種, 如上圖所示. 項目首先會去本地倉庫或私服中查找, 如果沒有去中央倉庫查找, 找到後將它下載到本地, 下次使用時就不需要再去那下載了. 私服需要單獨配置, 不配置默認不使用.

maven基本指令

在控制檯窗口中輸入

mvn –version : 查看maven版本(表示配置成功).
mvn help:system : 本地倉庫初始化指令.

2. eclipse-maven

eclipse如何中添加maven?

  新版的eclipse已經支持maven,可打開eclipse中Window –> Preferences進行查看,如果存在maven選項即表示已支持maven,如圖所示:
在這裏插入圖片描述

  如果沒有也無需擔心,可通過Help -> Install New Software,點擊Add進行添加,如圖所示:
在這裏插入圖片描述
Name : m2e
location : http://download.eclipse.org/technology/m2e/releases
點擊OK之後,Next下去即可完成安裝。

  安裝完成之後還需要在eclipse中設置,如圖所示:
在這裏插入圖片描述
  首先, 在Maven的Installations中add本地maven 的位置, 完成後選中新加的maven.

  然後, 在設置一下maven的配置文件和本地倉庫的位置.
在這裏插入圖片描述
  User Settings選擇我們之前重新寫的setting.xml(maven/config下),點擊Apply,Ok即可

如何用eclipse創建maven項目?

  首先新建一個maven項目,File -> New -> Other,找到Maven下的Maven Project,Next,Next,選擇原型骨架,一般選擇quickstart(針對java項目)和webapp(針對web項目),Next,填寫項目(Group Id),模塊(Artifact Id),版本(Version)以及包(Package, 自動生成),

  groupId:一般指某個公司或者某個組織的某個項目 比如 org.springframework
  artifactId:一般指某個具體項目的某個具體模塊 比如 spring-context
如圖所示:
在這裏插入圖片描述
  完成之後會自動生成相應目錄。目錄結構如下:
在這裏插入圖片描述

index.jsp報錯問題:

  新建maven項目後, 會發現index.jsp報錯.這是因爲新項目使用 maven-artchetype-webapp, 由於這個catalog版本較舊, 用的servlet是2.3版本的, 因此我們需要稍加修改幾個地方.
在這裏插入圖片描述
  首先, 打開WEB-INF找到web.xml, 把其中的內容修改爲:

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.0" 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_3_0.xsd">

</web-app> 

  然後, 修改項目的運行環境, 設置爲本地jre, 默認eclipse自動jre. 如果是web項目在添加(AddLibrary)tomcat的運行環境.

  項目右鍵 -->Properties
在這裏插入圖片描述
  選中第三個選項, 使用本機jre.
在這裏插入圖片描述
  添加本機配置的tomcat.
在這裏插入圖片描述

  最後,在navigator視圖修改版本信息:
  打開navigator視圖
在這裏插入圖片描述

在這裏插入圖片描述
  檢查core中的jdk版本是否是自己想要的, 如果按照上文配置
settings後, 會指定版本, 否則默認都是1.5

在這裏插入圖片描述
  facet.core中修改web版本爲3.0;
  上邊幾步做好之後, 刷新錯誤就沒了, 可以開發maven項目.

3. pom.xml詳解

pom.xml 中的pom節點

    <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.qb.bigdata</groupId>
	<artifactId>MavenDemo</artifactId>
	<packaging>war</packaging>
	<version>0.0.1-SNAPSHOT</version>
	<name>MavenDemo Maven Webapp</name>
	<url>http://maven.apache.org</url>

	<!-- 依賴配置 -->
	<dependencies>
		 <dependency>
				 <groupId>junit</groupId>
				 <artifactId>junit</artifactId>
				 <version>4.12</version>
				 <scope>test</scope>
		 </dependency>
	</dependencies>

<!-- 構建配置 -->
	<build>...</build>
	<reporting>...</reporting>

	<!-- 項目信息 -->
	<name>...</name>
	<description>...</description>
	<url>...</url>
	<inceptionYear>...</inceptionYear>
	<licenses>...</licenses>
	<organization>...</organization>
	<developers>...</developers>
	<contributors>...</contributors>

	<!-- 環境設置 -->
	<issueManagement>...</issueManagement>
	<ciManagement>...</ciManagement>
	<mailingLists>...</mailingLists>
	<scm>...</scm>
	<prerequisites>...</prerequisites>
	<repositories>...</repositories>
	<pluginRepositories>...</pluginRepositories>
	<distributionManagement>...</distributionManagement>
	<profiles>...</profiles>

</project>

基本配置

  • modelVersion : pom模型版本, maven2和3只能爲4.0.0
  • groupId : 用於maven定位的ID組
  • artifactId : 用於定位的組中唯一Id
  • version : 項目版本
  • packaging : 項目打包方式, 取值有: pom, jar, maven-plugin, ejb, war, ear, rar, par

依賴配置

  • parent 用於確定父項目的座標.
  • groupId: 父項目構件標識符
  • artifactId: 父項目唯一標識符
  • relativePath: maven先在文件系統的relativePath位置找父項目的pom, 然後在本地倉庫找, 再在遠程(中央)倉庫找.
  • version: 父項目的版本
<parent>     
	<groupId>com.learnPro</groupId>  
	<artifactId>SIP-parent</artifactId> 
	<relativePath></relativePath> 
	<version>0.0.1-SNAPSHOT</version> 
</parent>
  • modules 用於多模塊的maven項目

  • module 指定某個模塊. 例如<module>com-a</module>

  • properties 用於定義pom常量

<properties>
	<java.version>1.8</java.version>
</properties>

  常量可在pom文件的任意位置通過${java.version}獲取

  • dependencies 項目相關依賴配置
	<dependencies>
		 <dependency>
			 <groupId>junit</groupId>
			 <artifactId>junit</artifactId>
			 <version>4.12</version>
			 <scope>test</scope>
		 </dependency>
	</dependencies>
  • dependencyManagement 父模塊定義後, 子模塊不會直接使用對應依賴(不會立刻導入jar包).

父項目:

<dependencyManagement>
     <dependencies>
         <dependency>
             <groupId>junit</groupId>
             <artifactId>junit</artifactId>
             <version>4.12</version>
             <scope>test</scope>
         </dependency>
     </dependencies>
 </dependencyManagement> 

子項目:

<dependency>
    <groupId>junit</groupId>
    <artifactId>junit</artifactId>
</dependency>

  優點: 父項目統一版本, 而子項目在需要的時候才引用對應依賴.

依賴怎麼寫?

  其實, 依賴並不需要開發人員手寫, 想要添加jar包,去http://mvnrepository.com/搜索,打開之後選擇版本,如圖所示:
在這裏插入圖片描述

  把Maven中的內容複製到pom.xml的標籤對中即可,保存之後自動查找本地倉庫, 沒有包則去中央倉庫下載。

4. 如何讓新項目利用maven依賴已經完成的項目?

  找到已完成項目,右鍵pom.xml –> Run As - >Maven install,如圖所示:
在這裏插入圖片描述

  經過這步處理之後,eclipse會自動在target目錄下新建一個項目的jar包,我們的新項目就要依賴這個jar包調用相關的內容。
  將完成項目的jar包導入新項目中與用maven添加其他jar包一樣,依然要在pom.xml中寫,其中與完成項目pom.xml中的描述要保持一致。

<dependency>
	<groupId>com.qibao.user</groupId>
	<artifactId>user-dao</artifactId>
	<version>0.0.1-SNAPSHOT</version>
</dependency>

5. maven 入門級SSM項目

  新建項目, 在project explorer視圖下的目錄結構
在這裏插入圖片描述
  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>com.qb.bigdata</groupId>
	<artifactId>MavenDemo</artifactId>
	<packaging>war</packaging>
	<version>0.0.1-SNAPSHOT</version>
	<name>MavenDemo Maven Webapp</name>
	<url>http://maven.apache.org</url>

	<properties>
		<srping.version>4.3.7.RELEASE</srping.version>
		<mybatis.version>3.2.8</mybatis.version>
		<slf4j.version>1.7.12</slf4j.version>
		<log4j.version>1.2.17</log4j.version>
		<jackson.version>2.8.8</jackson.version>
		<freemarker.version>2.3.23</freemarker.version>
		<druid.version>1.0.5</druid.version>
	</properties>
	<!-- 用到的jar包 -->
	<dependencies>
		<!-- 單元測試 -->
		<dependency>
			<groupId>junit</groupId>
			<artifactId>junit</artifactId>
			<version>4.9</version>
			<!-- 表示開發的時候引入,發佈的時候不會加載此包 -->
			<scope>test</scope>
		</dependency>
		<!-- https://mvnrepository.com/artifact/c3p0/c3p0 -->
		<dependency>
			<groupId>c3p0</groupId>
			<artifactId>c3p0</artifactId>
			<version>0.9.1.2</version>
		</dependency>
		<dependency>
			<groupId>javax.servlet</groupId>
			<artifactId>javax.servlet-api</artifactId>
			<version>3.1.0</version>
			<scope>provided</scope>
		</dependency>
		<dependency>
			<groupId>javax.servlet.jsp</groupId>
			<artifactId>javax.servlet.jsp-api</artifactId>
			<version>2.3.1</version>
			<scope>provided</scope>
		</dependency>
		<!-- java ee包 -->
		<dependency>
			<groupId>javax</groupId>
			<artifactId>javaee-api</artifactId>
			<version>7.0</version>
		</dependency>
		<!-- spring框架包 start -->
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-beans</artifactId>
			<version>${srping.version}</version>
		</dependency>
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-test</artifactId>
			<version>${srping.version}</version>
		</dependency>
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-core</artifactId>
			<version>${srping.version}</version>
		</dependency>
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-oxm</artifactId>
			<version>${srping.version}</version>
		</dependency>
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-tx</artifactId>
			<version>${srping.version}</version>
		</dependency>
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-jdbc</artifactId>
			<version>${srping.version}</version>
		</dependency>
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-aop</artifactId>
			<version>${srping.version}</version>
		</dependency>
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-context</artifactId>
			<version>${srping.version}</version>
		</dependency>
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-context-support</artifactId>
			<version>${srping.version}</version>
		</dependency>
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-expression</artifactId>
			<version>${srping.version}</version>
		</dependency>
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-orm</artifactId>
			<version>${srping.version}</version>
		</dependency>
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-web</artifactId>
			<version>${srping.version}</version>
		</dependency>
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-webmvc</artifactId>
			<version>${srping.version}</version>
		</dependency>
		<!-- spring框架包 end -->
		<!-- jackson -->
		<dependency>
			<groupId>com.fasterxml.jackson.core</groupId>
			<artifactId>jackson-core</artifactId>
			<version>${jackson.version}</version>
		</dependency>
		<dependency>
			<groupId>com.fasterxml.jackson.core</groupId>
			<artifactId>jackson-databind</artifactId>
			<version>${jackson.version}</version>
		</dependency>
		<dependency>
			<groupId>com.fasterxml.jackson.core</groupId>
			<artifactId>jackson-annotations</artifactId>
			<version>${jackson.version}</version>
		</dependency>
		<!-- mybatis框架包 start -->
		<dependency>
			<groupId>org.mybatis</groupId>
			<artifactId>mybatis</artifactId>
			<version>${mybatis.version}</version>
		</dependency>
		<dependency>
			<groupId>org.mybatis</groupId>
			<artifactId>mybatis-spring</artifactId>
			<version>1.2.2</version>
		</dependency>
		<!-- mybatis框架包 end -->
		<!-- 通用mapper start -->
		<dependency>
			<groupId>com.github.abel533</groupId>
			<artifactId>mapper</artifactId>
			<version>2.3.4</version>
		</dependency>
		<dependency>
			<groupId>com.github.jsqlparser</groupId>
			<artifactId>jsqlparser</artifactId>
			<version>0.9.5</version>
		</dependency>
		<dependency>
			<groupId>com.github.pagehelper</groupId>
			<artifactId>pagehelper</artifactId>
			<version>5.0.0</version>
		</dependency>
		<!-- 數據庫驅動 -->
		<dependency>
			<groupId>mysql</groupId>
			<artifactId>mysql-connector-java</artifactId>
			<version>5.1.35</version>
		</dependency>
		<dependency>
			<groupId>com.alibaba</groupId>
			<artifactId>druid</artifactId>
			<version>${druid.version}</version>
		</dependency>
		<!-- 導入dbcp的jar包,用來在applicationContext.xml中配置數據庫 -->
		<dependency>
			<groupId>commons-dbcp</groupId>
			<artifactId>commons-dbcp</artifactId>
			<version>1.4</version>
		</dependency>
		<!-- jstl標籤類 -->
		<dependency>
			<groupId>jstl</groupId>
			<artifactId>jstl</artifactId>
			<version>1.2</version>
		</dependency>
		<!-- log start -->
		<dependency>
			<groupId>log4j</groupId>
			<artifactId>log4j</artifactId>
			<version>${log4j.version}</version>
		</dependency>
		<dependency>
			<groupId>org.slf4j</groupId>
			<artifactId>slf4j-api</artifactId>
			<version>${slf4j.version}</version>
		</dependency>
		<dependency>
			<groupId>org.slf4j</groupId>
			<artifactId>slf4j-log4j12</artifactId>
			<version>${slf4j.version}</version>
		</dependency>
		<!-- log END -->
		<!-- Json -->
		<dependency>
			<groupId>com.google.code.gson</groupId>
			<artifactId>gson</artifactId>
			<version>2.3.1</version>
		</dependency>
		<!-- 格式化對象,方便輸出日誌 -->
		<dependency>
			<groupId>com.alibaba</groupId>
			<artifactId>fastjson</artifactId>
			<version>1.2.6</version>
		</dependency>
		<dependency>
			<groupId>org.codehaus.jackson</groupId>
			<artifactId>jackson-mapper-asl</artifactId>
			<version>1.9.1</version>
		</dependency>
		<!-- 上傳組件包 start -->
		<dependency>
			<groupId>commons-io</groupId>
			<artifactId>commons-io</artifactId>
			<version>2.4</version>
		</dependency>
		<dependency>
			<groupId>commons-fileupload</groupId>
			<artifactId>commons-fileupload</artifactId>
			<version>1.3.1</version>
		</dependency>
		<dependency>
			<groupId>commons-lang</groupId>
			<artifactId>commons-lang</artifactId>
			<version>2.6</version>
		</dependency>
		<dependency>
			<groupId>org.apache.commons</groupId>
			<artifactId>commons-lang3</artifactId>
			<version>3.4</version>
		</dependency>
		<dependency>
			<groupId>commons-collections</groupId>
			<artifactId>commons-collections</artifactId>
			<version>3.2</version>
		</dependency>
		<dependency>
			<groupId>commons-beanutils</groupId>
			<artifactId>commons-beanutils</artifactId>
			<version>1.9.2</version>
		</dependency>
		<dependency>
			<groupId>commons-codec</groupId>
			<artifactId>commons-codec</artifactId>
			<version>1.10</version>
		</dependency>
		<!-- 上傳組件包 end -->
		<!-- View管理 start -->
		<dependency>
			<groupId>org.freemarker</groupId>
			<artifactId>freemarker</artifactId>
			<version>${freemarker.version}</version>
		</dependency>
		<!-- View管理 end -->
	</dependencies>

	<build>
		<finalName></finalName>
		<plugins>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-compiler-plugin</artifactId>
				<version>2.3.2</version>
				<configuration>
					<source>1.8</source>
					<target>1.8</target>
				</configuration>
			</plugin>
		</plugins>
	</build>
</project>

  資源文件db.properties

jdbc.drivername=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/mybatis?characterEncoding=utf-8
jdbc.username=root
jdbc.password=77123

maxPoolSize=20
minPoolSize=5
initialPoolSize=10
checkoutTimeout=10000

  日誌文件log4j.properties

# DEBUG,INFO,WARN,ERROR,FATAL
LOG_LEVEL=INFO

log4j.rootLogger=${LOG_LEVEL},CONSOLE,FILE

log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
log4j.appender.CONSOLE.Encoding=utf-8
log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
#log4j.appender.CONSOLE.layout.ConversionPattern=[%-5p] %d{yyyy-MM-dd HH:mm:ss} %C{8}@(%F:%L):%m%n 
#log4j.appender.CONSOLE.layout.ConversionPattern=[%-5p] %d{yyyy-MM-dd HH:mm:ss} %C{1}@(%F:%L):%m%n
log4j.appender.CONSOLE.layout.ConversionPattern=%d: %l [%-p] - %m%n

log4j.appender.FILE=org.apache.log4j.DailyRollingFileAppender
log4j.appender.FILE.File=${user.home}/logs/24K-admin.log
log4j.appender.FILE.Encoding=utf-8
log4j.appender.FILE.DatePattern='.'yyyy-MM-dd
log4j.appender.FILE.layout=org.apache.log4j.PatternLayout
#log4j.appender.FILE.layout=org.apache.log4j.HTMLLayout
log4j.appender.FILE.layout.ConversionPattern=[%-5p] %d{yyyy-MM-dd HH\:mm\:ss} %C{8}@(%F\:%L)\:%m%n 

  spring核心配置文件applicationContext.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:context="http://www.springframework.org/schema/context"
	xmlns:aop="http://www.springframework.org/schema/aop"
	xmlns:tx="http://www.springframework.org/schema/tx"
	 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	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/aop http://www.springframework.org/schema/aop/spring-aop.xsd
        http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd
        ">
	<!-- 1.外部資源 -->
	<context:property-placeholder location="classpath:db.properties"/>
        
    <!-- 2.c3p0數據庫連接池 -->
    <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
    	<property name="driverClass" value="${jdbc.drivername}"></property>
    	<property name="jdbcUrl" value="${jdbc.url}"></property>
    	<property name="user" value="${jdbc.username}"></property>
    	<property name="password" value="${jdbc.password}"></property>
    </bean>
    
    <!-- 3.會話工廠 -->
    <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
    	<property name="dataSource" ref="dataSource"></property>
    	<property name="typeAliasesPackage" value="com.qb.bigdata.pojo"></property>
    	<!-- ***Mapper.xml放置位置 -->
    	<property name="mapperLocations" value="classpath*:mybatis/*.xml"></property>
		<property name="plugins">
			<array>
				<!-- pagehelper分頁配置。 -->
				<bean class="com.github.pagehelper.PageInterceptor">
					<property name="properties">
						<value>
							helperDialect=mysql
							offsetAsPageNum=true
							<!-- 防止出現小於第一頁,大於最後一頁的異常情況出現。 -->
							reasonable=true
						</value>
					</property>
				</bean>
				<!-- 通用mapper的配置 -->
				<bean class="com.github.abel533.mapperhelper.MapperInterceptor">
					<property name="properties">
						<value>
							<!-- 主鍵自增回寫方法,默認值MYSQL -->
							IDENTITY=MYSQL
							mappers=com.github.abel533.mapper.Mapper
						</value>
					</property>
				</bean>
			</array>
		</property>
    </bean>
    
    <!-- 4.批量加載mapper代理bean -->
    <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
    	<property name="basePackage" value="com.qb.bigdata.mapper"></property>
    </bean>
    
    <!-- 5.註解掃描 -->
    <context:component-scan base-package="com.qb.bigdata.service"></context:component-scan>
    
    <!-- 6.事務管理器 -->
    <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
    	<property name="dataSource" ref="dataSource"></property>
    </bean>
    
    <!-- 7.註解事務管理驅動 -->
    <tx:annotation-driven transaction-manager="transactionManager"/>
    
</beans>

  springmvc配置文件springmvc.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">
	
	
	<!-- 1.註解驅動   -->
	<mvc:annotation-driven />
	
	<!-- 配置靜態資源的訪問映射  -->
	<mvc:default-servlet-handler/>
	
	<context:component-scan base-package="com.qb.bigdata.controller"></context:component-scan>
	
	<!-- JSP視圖解析器 -->
	<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
		<property name="viewClass" value="org.springframework.web.servlet.view.JstlView"></property>
		<property name="prefix" value="/WEB-INF/jsps/"></property>
		<property name="suffix" value=".jsp"></property>
	</bean>	
</beans>

  web.xml配置

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.0" 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_3_0.xsd">

	<welcome-file-list>
    	<welcome-file>index.jsp</welcome-file>
  	</welcome-file-list>
  
  <!-- 全局配置參數, applicationContext.xml的位置-->
  <context-param>
  	<param-name>contextConfigLocation</param-name>
  	<param-value>classpath:applicationContext.xml</param-value>
  </context-param>
  <!-- 配置spring監聽器, 監聽ServletContext的創建 -->
  <listener>
  	<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
  </listener>
  
  <!-- 前端控制器 -->
  <servlet>
  	<servlet-name>springmvc</servlet-name>
  	<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
  	<!-- springmvc配置文件的位置 -->
  	<init-param>
  		<param-name>contextConfigLocation</param-name>
  		<param-value>classpath:springmvc.xml</param-value>
  	</init-param>
  	<load-on-startup>1</load-on-startup>
  </servlet>
  
  <servlet-mapping>
  	<servlet-name>springmvc</servlet-name>
  	<url-pattern>/</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-8</param-value>
		</init-param>
	</filter>
	<filter-mapping>
		<filter-name>EncodingFilter</filter-name>
		<url-pattern>/*</url-pattern>
	</filter-mapping>

</web-app> 

  pojo實體類

@Table(name="user")
public class User implements Serializable{

	private static final long serialVersionUID = 1L;
	@Id
	@GeneratedValue(strategy=GenerationType.IDENTITY)
	private	int id;
	
	private String username;
	
	private String sex;
	
	private Date birthday;
	
	private String address;
	
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	public String getUsername() {
		return username;
	}
	public void setUsername(String username) {
		this.username = username;
	}
	public String getSex() {
		return sex;
	}
	public void setSex(String sex) {
		this.sex = sex;
	}
	public Date getBirthday() {
		return birthday;
	}
	public void setBirthday(Date birthday) {
		this.birthday = birthday;
	}
	public String getAddress() {
		return address;
	}
	public void setAddress(String address) {
		this.address = address;
	}
	public static long getSerialversionuid() {
		return serialVersionUID;
	}
	public User() {
		super();
	}
	public User(int id, String username, String sex, Date birthday, String address) {
		super();
		this.id = id;
		this.username = username;
		this.sex = sex;
		this.birthday = birthday;
		this.address = address;
	}
	@Override
	public String toString() {
		return "User [id=" + id + ", username=" + username + ", sex=" + sex + ", birthday=" + birthday + ", address="
				+ address + "]";
	}	
}

  dao層, 繼承通用mapper

public interface UserMapper extends Mapper<User> {

}

  service層, 接口

public interface UserService {

	/**
	 * 方法描述 根據id查詢
	 * @param id
	 */
	public User selectById(int id);

}

  service層, 實現類

@Service("userService")
public class UserServiceImpl implements UserService {

	@Autowired
	private UserMapper userMapper;

	@Override
	public User selectById(int id) {
		return userMapper.selectByPrimaryKey(id);
	}
	
}

  controller層, 執行器

@Controller
@RequestMapping("/user")
public class UserController {

	@Autowired
	private UserService userService;
	
	//RESTful風格請求路徑
	@RequestMapping(value="/select/{id}")
	public ModelAndView select(@PathVariable("id") int id){
		ModelAndView mv = new ModelAndView();
		User user = null;
		try {
			user = userService.selectById(id);
		} catch (Exception e) {
			e.printStackTrace();
		}
		mv.addObject("user", user);
		mv.setViewName("user");
		
		return mv;
	}
	
	@RequestMapping("/findUserById")
	public String findUserById(int id, Model model){
		User user = userService.selectById(id);
		model.addAttribute("user", user);
		return "user";
	}

}

  默認頁面index.jsp, 發送請求

    <%@ 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>
    	Welcome.<br>
    	<a href="${pageContext.request.contextPath}/user/select/1">select</a>
    </body>
    </html>

  前端執行器返回視圖 user.jsp

    <%@ 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>
    	<table border="1">
    		<tr>
    			<td>id</td>
    			<td>username</td>
    			<td>sex</td>
    			<td>birthday</td>
    			<td>address</td>
    		</tr>
    		<tr>
    			<td>${user.id }</td>
    			<td>${user.username }</td>
    			<td>${user.sex }</td>
    			<td>${user.birthday }</td>
    			<td>${user.address}</td>
    		</tr>
    	</table>
    </body>
    </html>

  導入tomcat中並執行.

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章