前言
最近這幾年JetBrains
公司開發(fā)的IDEA
是越來越流行了,甚至Google的官方IDE都是IDEA
來定制的葛圃,可見IDEA的發(fā)展趨勢是越來越好桶唐,由于博主接觸IDEA的時間也不長缰儿,所以有關(guān)IDEA
和Eclipse
的區(qū)別和優(yōu)劣勢請自行百度了元镀。
借此機會我就使用IDEA來整合一下SSM,針對于初學者(初次使用IDEA和JAVAEE初學者)還是有幫助的掌测。
新建SSM項目
哦對了内贮,關(guān)于IDEA的版本問題強烈建議使用旗艦版,有條件的就購買汞斧,沒條件的嘛夜郁。。天朝你懂的粘勒。
在歡迎界面點擊Create New Project
竞端。
之后選擇
Maven
(新建JAVAEE項目是需要安裝JDK的,這個就不在這里講解了庙睡。)選好之后點擊下一步事富。之后填入
GroupID
和ArtifactID
這里盡量按照Maven的命名規(guī)范來即可技俐。之后點擊下一步,填入項目名稱统台,這里我建議和之前填寫的
ArtifactID
名稱一樣即可雕擂。點擊Finish完成項目的創(chuàng)建。
之后盡量不要做其他操作贱勃,讓IDEA完成索引創(chuàng)建井赌。
完善目錄結(jié)構(gòu)
首先觀察一下IDEA給我們生成的目錄結(jié)構(gòu),這是一個標準的Maven目錄贵扰。但是其中少了一個webapp
目錄用于存放jsp
仇穗、css
、js
戚绕、圖片之類的文件纹坐。之后還需要完善我們的目錄結(jié)構(gòu),如下圖:
以上的命名都是我們開發(fā)過程中常用的命名規(guī)則舞丛,不一定按照我這樣來恰画,但是最好是有一定的規(guī)范。
POM.xml
pom.xml
是整個maven的核心配置文件瓷马,里面有對項目的描述和項目所需要的依賴。哦對了跨晴,在修改pom.xml
文件之前我們最好先設(shè)置一下該項目的Maven設(shè)置(IDEA對每個項目的maven設(shè)置和Eclipse不一樣欧聘,不是設(shè)置一次就可了,如果今后還要新建項目那就還需要設(shè)置端盆,同時按住ctrl
,alt
,s
是打開設(shè)置的快捷鍵怀骤,更多有關(guān)IDEA的操作今后會更新相關(guān)博文。)
IDEA的Maven設(shè)置
在Eclipse
中用過Maven的都應該知道焕妙,這里是將項目的Maven換成我們自己安裝的Maven蒋伦,下面兩個目錄是選擇Maven配置文件,不知道是什么原因在Eclipse
中選擇了配置文件之后會自動的將Maven本地廠庫的路徑更改為你settings.xml
中配置的路徑焚鹊。既然這里沒有自動選中那我們就手動修改即可痕届,盡量不要放在C盤,一是用久之后本地廠庫占用的空間會比較大末患,二是萬一系統(tǒng)崩潰的話還有可能找回來研叫。
修改pom.xml
以下是我的pom.xml
文件:
<?xml version="1.0" encoding="UTF-8"?>
<!--suppress MavenModelInspection -->
<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/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.crossoverJie</groupId>
<artifactId>SSM</artifactId>
<version>1.0-SNAPSHOT</version>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.6</source>
<target>1.6</target>
</configuration>
</plugin>
</plugins>
</build>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<spring.version>4.1.4.RELEASE</spring.version>
<jackson.version>2.5.0</jackson.version>
</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-core</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-beans</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-tx</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
<version>${spring.version}</version>
<scope>test</scope>
</dependency>
<!-- 使用SpringMVC需配置 -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>${spring.version}</version>
</dependency>
<!-- 關(guān)系型數(shù)據(jù)庫整合時需配置 如hibernate jpa等 -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-orm</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>1.2.4</version>
</dependency>
<!-- log4j -->
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
<!-- mysql連接 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.34</version>
</dependency>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.3.1</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.0.18</version>
</dependency>
<!-- json -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.3</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-annotations</artifactId>
<version>${jackson.version}</version>
</dependency>
<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>
<!-- aop -->
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjweaver</artifactId>
<version>1.8.4</version>
</dependency>
<!-- servlet -->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>3.0-alpha-1</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.4</version>
</dependency>
<!-- 上傳文件 -->
<dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
<version>1.3.1</version>
</dependency>
</dependencies>
</project>
關(guān)于maven
的知識點我就不細講了,畢竟這是一個整合教程璧针。
spring-mvc.xml
這個配置文件是springMVC的配置文件:
里面的我都寫有注釋嚷炉,應該都能看懂。
<?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.1.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.1.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd">
<!-- 自動掃描該包探橱,使SpringMVC認為包下用了@controller注解的類是控制器 -->
<context:component-scan base-package="com.crossoverJie.controller" />
<!--避免IE執(zhí)行AJAX時申屹,返回JSON出現(xiàn)下載文件 -->
<!--<bean id="mappingJacksonHttpMessageConverter"
class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter">
<property name="supportedMediaTypes">
<list>
<value>text/html;charset=UTF-8</value>
</list>
</property>
</bean>-->
<mvc:annotation-driven/>
<!-- 啟動SpringMVC的注解功能绘证,完成請求和注解POJO的映射
-->
<!-- 定義跳轉(zhuǎn)的文件的前后綴 ,視圖模式配置-->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<!-- 這里的配置我的理解是自動給后面action的方法return的字符串加上前綴和后綴哗讥,變成一個 可用的url地址 -->
<property name="prefix" value="/WEB-INF/jsp/" />
<property name="suffix" value=".jsp" />
</bean>
<!-- 配置文件上傳嚷那,如果沒有使用文件上傳可以不用配置,當然如果不配忌栅,那么配置文件中也不必引入上傳組件包 -->
<bean id="multipartResolver"
class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<!-- 默認編碼 -->
<property name="defaultEncoding" value="utf-8" />
<!-- 文件大小最大值 -->
<property name="maxUploadSize" value="10485760000" />
<!-- 內(nèi)存中的最大值 -->
<property name="maxInMemorySize" value="40960" />
</bean>
<!-- 配置攔截器 -->
<!--<mvc:interceptors>
<mvc:interceptor>
<!– <mvc:mapping path="/**"/>攔截所有 –>
<mvc:mapping path="/user/**"/>
<mvc:mapping path="/role/**"/>
<mvc:mapping path="/function/**"/>
<mvc:mapping path="/news/**"/>
<mvc:mapping path="/img/**"/>
<bean class="com.crossoverJie.intercept.Intercept"></bean>
</mvc:interceptor>
</mvc:interceptors>-->
</beans>
關(guān)于上面攔截器注釋掉的那里车酣,配置是沒有問題的,因為這是一個整合項目索绪,所以里邊也沒有用到攔截器湖员,為了防止運行報錯所以就先注釋掉了。如果后續(xù)需要增加攔截器瑞驱,可以參考這里的配置娘摔。
spring-mybatis.xml
這個是spring和mybatis的整合配置文件,其中還有Druid
連接池的配置唤反。
<?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"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.1.xsd">
<!-- 自動掃描 -->
<context:component-scan base-package="com.crossoverJie" />
<!-- 引入配置文件 -->
<bean id="propertyConfigurer"
class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="location" value="classpath:jdbc.properties" />
</bean>
<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource"
init-method="init" destroy-method="close">
<!-- 指定連接數(shù)據(jù)庫的驅(qū)動 -->
<property name="driverClassName" value="${jdbc.driverClass}" />
<property name="url" value="${jdbc.url}" />
<property name="username" value="${jdbc.user}" />
<property name="password" value="${jdbc.password}" />
<!-- 配置初始化大小凳寺、最小、最大 -->
<property name="initialSize" value="3" />
<property name="minIdle" value="3" />
<property name="maxActive" value="20" />
<!-- 配置獲取連接等待超時的時間 -->
<property name="maxWait" value="60000" />
<!-- 配置間隔多久才進行一次檢測彤侍,檢測需要關(guān)閉的空閑連接肠缨,單位是毫秒 -->
<property name="timeBetweenEvictionRunsMillis" value="60000" />
<!-- 配置一個連接在池中最小生存的時間,單位是毫秒 -->
<property name="minEvictableIdleTimeMillis" value="300000" />
<property name="validationQuery" value="SELECT 'x'" />
<property name="testWhileIdle" value="true" />
<property name="testOnBorrow" value="false" />
<property name="testOnReturn" value="false" />
<!-- 打開PSCache盏阶,并且指定每個連接上PSCache的大小 -->
<property name="poolPreparedStatements" value="true" />
<property name="maxPoolPreparedStatementPerConnectionSize"
value="20" />
<!-- 配置監(jiān)控統(tǒng)計攔截的filters绑谣,去掉后監(jiān)控界面sql無法統(tǒng)計 -->
<property name="filters" value="stat" />
</bean>
<!-- spring和MyBatis完美整合负甸,不需要mybatis的配置映射文件 -->
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource" />
<!-- 自動掃描mapping.xml文件 -->
<property name="mapperLocations" value="classpath:mapping/*.xml"></property>
</bean>
<!-- DAO接口所在包名兄裂,Spring會自動查找其下的類 -->
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="basePackage" value="com.crossoverJie.dao" />
<property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"></property>
</bean>
<!-- (事務(wù)管理)transaction manager, use JtaTransactionManager for global tx -->
<bean id="transactionManager"
class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource" />
</bean>
</beans>
以上兩個就是最重要的配置文件了枣察,只要其中的包名和配置文件中的名字一樣就不會出問題。
關(guān)于xxMpper.xml
以及實體類的生成砰盐,我們可以借助mybatis-generator
自動生成工具來生成闷袒,方便快捷。
IDEA配置Tomcat
關(guān)于Tomcat的下載與安裝我這里就不多介紹了岩梳。
按照下圖選擇:
在
name
中為這個Tomcat輸入一個名字囊骤。之后選擇你本地Tomcat的目錄點擊Ok
即可。點擊
apply
和保存之后就返回首頁即可看到Tomcat的標識蒋腮。根據(jù)需要點擊
Run
和Debug
即可運行淘捡。
運行結(jié)果如下:
點擊上圖的2,3,4可看到不同用戶的結(jié)果,如果你走到這一步池摧,那么恭喜你整合成功焦除。
總結(jié)
以上源碼都在我的Github上。
項目地址:SSM
其中有問題或者不對的地方歡迎交流作彤。
個人博客地址:http://crossoverjie.top膘魄。
GitHub地址:https://github.com/crossoverJie乌逐。