建立一个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项目的基本框架就已经完成了

  

 

posted on 2017-06-05 13:13  kaka_79  阅读(1831)  评论(0编辑  收藏  举报

导航