这是一个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
然后配置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,对于做服务器端开发来说很关键,后面会单独为这一块做一篇笔记。
然后是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>
里面的上传和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-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>
因为这个笔记是项目中期开始记录的,所以顺手附上email.properties

#gmail email email.host=smtp.gmail.com email.port=587 email.username=username email.password=password
使用email功能还需要你在邮箱内部开启第三方授权,每个邮箱的方式不同,自行google
到这里,ssm项目的基本框架就已经完成了