建立一個SSM-Maven項目——整合SSM


這是一個java初學者在獨立開發一個項目時做的筆記,很多內容僅僅是為了解決當前需求,並未很深入的研究。

這是一個使用spring ,springMVC,Mybetis框架的項目。對於JAVA,Maven等安裝和配置不在記錄范圍

因為對於spring,springMVC,Mybetis相對比較熟悉,因此在開發此項目的時候,首選自然是ssm框架。

相對於以往的項目唯一基礎改動就是數據庫由Oracle改為了MySql,在Mysql下,c3p0的連接池會導致tomcat報內存溢出錯誤,用了半個月試圖解決無果,更換成dbcp后一切正常。

之前已經建立了一個Maven項目,下面我們把這個項目和SMM整合起來。

這是項目結構:

 

1、首先我們需要確定你的lib里面已經擁有jar包。

2、然后在src/main/resources里面建立jdbc.properties 、log4j.properties、  spring-mvc.xml 、 spring-mybatis.xml  共4個文件。

  什么是properties文件:java中的properties文件是一種配置文件,主要用於表達配置信息,文件類型為*.properties,格式為文本文件,文件的內容是格式是"鍵=值"的格式,在properties文件中,可以用"#"來作注釋

  properties會出現中文亂碼的情況,我們在eclipse里打開 Window >Preferences>General >Context Types>Text>Java Properties File 里選中*.properties 把Default encoding 改成GBK點擊update即可。

  接下來,我們先配置jdbc.properties:

 1 driver=com.mysql.jdbc.Driver
 2 url=jdbc:mysql://dbinstance.cm9i1t5ndph3.us-west-2.rds.amazonaws.com:3306/Insurrance
 3 username=root
 4 password=tiger123
 5 #初始化連接大小
 6 initialSize=0
 7 #連接池最大數量
 8 maxActive=20
 9 #連接池最大空閑
10 maxIdle=20
11 #連接池最小空閑
12 minIdle=1
13 #獲取連接最大等待時間
14 maxWait=60000
jdbc

 

  然后配置log4.properties:

 1 ### 設置###
 2 log4j.rootLogger = info,stdout,D,I,E
 3 
 4 ### 輸出信息到控制抬 ###
 5 log4j.appender.stdout = org.apache.log4j.ConsoleAppender
 6 log4j.appender.stdout.Target = System.out
 7 log4j.appender.stdout.layout = org.apache.log4j.PatternLayout
 8 log4j.appender.stdout.layout.ConversionPattern = [%-5p] %d{yyyy-MM-dd HH:mm:ss,SSS} method:%l%n%m%n
 9 
10 #日志編碼  
11 #log4j.appender.D.Encoding=UTF-8  
12 
13 #定義的時間格式,如果時間定義到分鍾(mm)就是每分鍾生成一個日志文件,而這里定義的這個格式就是日志名后綴 
14 log4j.appender.D.DatePattern='_' yyyy-MM-dd
15 log4j.appender.I.DatePattern='_' yyyy-MM-dd 
16 log4j.appender.E.DatePattern='_' yyyy-MM-dd 
17     
18 ### 輸出DEBUG  ###
19 #每一天產生1個日志文件 
20 log4j.appender.D = org.apache.log4j.DailyRollingFileAppender
21 #定義日志存放路徑  
22 log4j.appender.D.File = /usr/local/apache-tomcat-7.0.76/webapps/Insurrance/logs/log.log
23 #日志文件是否追加  
24 log4j.appender.D.Append = true
25 #日志輸出級別  
26 log4j.appender.D.Threshold = DEBUG 
27 #日志中輸出的日志的格式  
28 log4j.appender.D.layout = org.apache.log4j.PatternLayout
29 #定義的日志格式
30 log4j.appender.D.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss}  [ %t:%r ] - [ %p ]  %m%n
31 
32 ### 輸出info  ###
33 log4j.appender.I = org.apache.log4j.DailyRollingFileAppender  
34 log4j.appender.I.File = /usr/local/apache-tomcat-7.0.76/webapps/Insurrance/logs/log.log
35 log4j.appender.I.Append = true
36 log4j.appender.I.Threshold = INFO 
37 log4j.appender.I.layout = org.apache.log4j.PatternLayout
38 log4j.appender.I.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss}  [ %t:%r ] - [ %p ]  %m%n
39 ### 輸出ERROR  ###
40 log4j.appender.E = org.apache.log4j.DailyRollingFileAppender
41 log4j.appender.E.File =/usr/local/apache-tomcat-7.0.76/webapps/Insurrance/logs/error.log 
42 log4j.appender.E.Append = true
43 log4j.appender.E.Threshold = ERROR 
44 log4j.appender.E.layout = org.apache.log4j.PatternLayout
45 log4j.appender.E.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss}  [ %t:%r ] - [ %p ]  %m%n
log4j

  log4j,對於做服務器端開發來說很關鍵,后面會單獨為這一塊做一篇筆記。

  然后是spring-mybatis.xml

  1 <?xml version="1.0" encoding="UTF-8"?>
  2 <beans xmlns="http://www.springframework.org/schema/beans"
  3     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"
  4     xmlns:context="http://www.springframework.org/schema/context"
  5     xmlns:mvc="http://www.springframework.org/schema/mvc"
  6     xsi:schemaLocation="http://www.springframework.org/schema/beans  
  7                         http://www.springframework.org/schema/beans/spring-beans-4.0.xsd  
  8                         http://www.springframework.org/schema/context  
  9                         http://www.springframework.org/schema/context/spring-context-4.0.xsd  
 10                         http://www.springframework.org/schema/mvc  
 11                         http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd">
 12     <!-- 自動掃描 -->
 13     <context:component-scan base-package="com.ic" />
 14 
 15     <!-- 引入配置文件 -->
 16     <bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">   
 17         <property name="locations">     
 18             <list>   
 19                <value>classpath:jdbc.properties</value> 
 20                <value>classpath:email.properties</value>  
 21                <!--如果有多個屬性文件,依次在下面列出來 -->  
 22            </list>   
 23        </property> 
 24        <property name="ignoreUnresolvablePlaceholders" value="true"/>
 25     </bean>
 26 
 27     <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"
 28         destroy-method="close">
 29         <property name="driverClassName" value="${driver}" />
 30         <property name="url" value="${url}" />
 31         <property name="username" value="${username}" />
 32         <property name="password" value="${password}" />
 33         <!-- 初始化連接大小 -->
 34         <property name="initialSize" value="${initialSize}"></property>
 35         <!-- 連接池最大數量 -->
 36         <property name="maxActive" value="${maxActive}"></property>
 37         <!-- 連接池最大空閑 -->
 38         <property name="maxIdle" value="${maxIdle}"></property>
 39         <!-- 連接池最小空閑 -->
 40         <property name="minIdle" value="${minIdle}"></property>
 41         <!-- 獲取連接最大等待時間 -->
 42         <property name="maxWait" value="${maxWait}"></property>
 43     </bean>
 44 
 45     <!-- spring和MyBatis完美整合,不需要mybatis的配置映射文件 -->
 46     <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
 47         <property name="dataSource" ref="dataSource" />
 48         <!-- 自動掃描mapping.xml文件 -->
 49         <property name="mapperLocations" value="classpath:com/ic/mapping/*.xml"></property>
 50     </bean>
 51 
 52     <!-- DAO接口所在包名,Spring會自動查找其下的類 -->
 53     <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
 54         <property name="basePackage" value="com.ic.dao" />
 55         <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"></property>
 56     </bean>
 57 
 58     <!-- (事務管理)transaction manager, use JtaTransactionManager for global tx -->
 59     <bean id="transactionManager"
 60         class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
 61         <property name="dataSource" ref="dataSource" />
 62     </bean>
 63     
 64     <!--設置發件人屬性  -->
 65     <bean id="javaMailSender"
 66         class="org.springframework.mail.javamail.JavaMailSenderImpl">
 67         <!-- SMTP發送郵件的服務器的IP和端口 -->
 68         <property name="host" value="${email.host}" />
 69         <property name="port" value="${email.port}" />
 70 
 71         <!-- 登陸SMTP郵件發送服務器的用戶名和密碼 -->
 72         <property name="username" value="${email.username}" />
 73         <property name="password" value="${email.password}" />
 74 
 75        <!-- 獲得郵件會話屬性,驗證登錄郵件服務器是否成功-->
 76         <property name="javaMailProperties">
 77             <props>
 78                  <prop key="mail.transport.protocol">smtp</prop>
 79                  <prop key="mail.smtp.auth">true</prop>
 80                  <prop key="mail.smtp.starttls.enable">true</prop>
 81              </props>
 82         </property>
 83     </bean>
 84     
 85     <!-- 發送郵件 -->
 86     <bean id="simpleMailMessage" class="org.springframework.mail.SimpleMailMessage">
 87         <property name="from" value="${mail.from}" />
 88         <property name="subject" value="${mail.subject}" />
 89         <property name="to" value="${mail.to}" />
 90         <property name="text" value="${mail.text}" />
 91       
 92        
 93     </bean>
 94     <!-- 上傳下載 -->
 95     <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">    
 96         <!-- 設置默認編碼 -->  
 97         <property name="defaultEncoding" value="utf-8"></property>  
 98         <!-- 上傳最大大小5M-->   
 99         <property name="maxUploadSize" value="5242440"></property>    
100     </bean>  
101 </beans>
spring-mybatis.xml

  里面的上傳和email功能如果不需要可以給他刪除

  還有spring-mvc.xml

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <beans xmlns="http://www.springframework.org/schema/beans"
 3     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"
 4     xmlns:context="http://www.springframework.org/schema/context"
 5     xmlns:mvc="http://www.springframework.org/schema/mvc"
 6     xsi:schemaLocation="http://www.springframework.org/schema/beans  
 7                             http://www.springframework.org/schema/beans/spring-beans.xsd  
 8                             http://www.springframework.org/schema/context  
 9                             http://www.springframework.org/schema/context/spring-context.xsd  
10                             http://www.springframework.org/schema/mvc  
11                             http://www.springframework.org/schema/mvc/spring-mvc.xsd">
12                     
13     <!-- 自動掃描該包,使SpringMVC認為包下用了@controller注解的類是控制器 -->
14     <context:component-scan base-package="com.ic.controller" />
15 
16     <!-- 添加注解驅動 -->
17     <mvc:annotation-driven enable-matrix-variables="true" />
18     <!-- 允許對靜態資源文件的訪問 -->
19 
20     <mvc:default-servlet-handler />
21 
22 
23     <!-- 定義跳轉的文件的前后綴 ,視圖模式配置 -->
24     <bean
25         class="org.springframework.web.servlet.view.InternalResourceViewResolver">
26         <!-- 這里的配置我的理解是自動給后面action的方法return的字符串加上前綴和后綴,變成一個 可用的url地址 -->
27         <property name="prefix" value="" />
28         <property name="suffix" value="" />
29     </bean> 
30               
31                             
32 </beans>
spring-mvc

 

  

   對比於很多人更喜歡把spring-mybatis細分成applicationContext-dao,applicationContext-service,applicationContext-transaction。因為學習的比較淺,只能從感覺上來說,細分成applicationContext更符合規范也更加清楚。

 

  最后,我們需要配置一下我們web.xml

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 3     xmlns="http://java.sun.com/xml/ns/javaee"
 4     xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
 5     version="3.0">
 6     <display-name>Ic-SSM</display-name>
 7     
 8     <!-- Spring和mybatis的配置文件 -->
 9     <context-param>
10         <param-name>contextConfigLocation</param-name>
11         <param-value>classpath:spring-mybatis.xml</param-value>
12     </context-param>
13     
14     <!-- 編碼過濾器 -->
15     <filter>
16         <filter-name>encodingFilter</filter-name>
17         <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
18         <async-supported>true</async-supported>
19         <init-param>
20             <param-name>encoding</param-name>
21             <param-value>UTF-8</param-value>
22         </init-param>
23     </filter>
24     <filter-mapping>
25         <filter-name>encodingFilter</filter-name>
26         <url-pattern>/*</url-pattern>
27     </filter-mapping>
28     
29     <!-- 設置由Sprng載入的Log4j配置文件位置 -->
30     <context-param> 
31         <param-name>log4jConfigLocation</param-name> 
32         <param-value>classpath:log4.properties</param-value> 
33     </context-param> 
34     <!-- Spring刷新Log4j配置文件變動的間隔,單位為毫秒 -->
35     <context-param> 
36         <param-name>log4jRefreshInterval</param-name> 
37         <param-value>10000</param-value> 
38     </context-param> 
39      
40     <listener> 
41         <listener-class>org.springframework.web.util.Log4jConfigListener</listener-class> 
42     </listener>
43     
44     <!-- Spring監聽器 -->
45     <listener>
46         <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
47     </listener>
48     
49     <!-- 防止Spring內存溢出監聽器 -->
50     <listener>
51         <listener-class>org.springframework.web.util.IntrospectorCleanupListener</listener-class>
52     </listener>
53     
54     <!-- Spring MVC servlet -->
55     <servlet>
56         <servlet-name>Ic-SSM</servlet-name>
57         <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
58         <init-param>
59             <param-name>contextConfigLocation</param-name>
60             <param-value>classpath:spring-mvc.xml</param-value>
61         </init-param>
62         <load-on-startup>1</load-on-startup>
63         <async-supported>true</async-supported>
64     </servlet>
65     <servlet-mapping>
66         <servlet-name>Ic-SSM</servlet-name>
67         <url-pattern>/</url-pattern>
68     </servlet-mapping>
69     
70     <welcome-file-list>
71         <welcome-file>/jsp.admin.Admin.jsp</welcome-file>
72         <welcome-file>/index.jsp</welcome-file>
73     </welcome-file-list>
74 </web-app>
web.xml

 

  因為這個筆記是項目中期開始記錄的,所以順手附上email.properties

#gmail email
email.host=smtp.gmail.com
email.port=587
email.username=username
email.password=password
email

  使用email功能還需要你在郵箱內部開啟第三方授權,每個郵箱的方式不同,自行google

  到這里,ssm項目的基本框架就已經完成了

  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM