SSM框架目前比较流行的web框架之一,学会搭建并熟悉其如何使用很有必要!!!
一.gradle配置
group 'domeTest' version '1.0-SNAPSHOT' apply plugin: 'java' apply plugin: 'war' apply plugin: 'maven' sourceCompatibility = 1.8 targetCompatibility = 1.8 repositories { mavenLocal() maven { url "http://112.74.19.176:8081/repository/maven-central/" } mavenCentral() maven { url "http://repo.maven.apache.org/maven2" } } configurations { mybatisGenerator } dependencies { compileOnly group: 'javax.servlet', name: 'javax.servlet-api', version: '3.1.0' compileOnly group: 'javax.servlet.jsp', name: 'javax.servlet.jsp-api', version: '2.3.1' compileOnly group: 'javax', name: 'javaee-web-api', version: '6.0' compileOnly group: 'mysql', name: 'mysql-connector-java', version: '5.1.34' compileOnly group: 'com.rabbitmq', name: 'amqp-client', version: '3.6.0' compileOnly group: 'redis.clients', name: 'jedis', version: '2.6.0' compileOnly group: 'com.zaxxer', name: 'HikariCP', version: '2.5.1' compileOnly group: 'jstl', name: 'jstl', version: '1.2' compileOnly group: 'commons-codec', name: 'commons-codec', version: '1.10' compileOnly group: 'commons-io', name: 'commons-io', version: '2.2' compileOnly group: 'commons-fileupload', name: 'commons-fileupload', version: '1.3.1' compileOnly group: 'commons-logging', name: 'commons-logging', version: '1.2' compileOnly group: 'com.google.guava', name: 'guava', version: '16.0.1' compileOnly group: 'commons-lang', name: 'commons-lang', version: '2.6' compileOnly group: 'commons-collections', name: 'commons-collections', version: '3.2.2' compileOnly group: 'commons-beanutils', name: 'commons-beanutils', version: '1.9.2' compileOnly group: 'org.springframework.data', name: 'spring-data-redis', version: '1.7.4.RELEASE' compileOnly group: 'org.springframework', name: 'spring-jdbc', version: '4.3.3.RELEASE' compileOnly group: 'org.springframework', name: 'spring-context', version: '4.3.3.RELEASE' compileOnly group: 'org.springframework', name: 'spring-context-support', version: '4.3.3.RELEASE' compileOnly group: 'org.springframework', name: 'spring-aop', version: '4.3.3.RELEASE' compile group: 'org.springframework', name: 'spring-webmvc', version: '4.3.3.RELEASE' compile group: 'org.springframework', name: 'spring-aspects', version: '4.3.3.RELEASE' compile group: 'org.aspectj', name: 'aspectjweaver', version: '1.6.12' compile group: 'org.aspectj', name: 'aspectjrt', version: '1.6.10' compile group: 'aopalliance', name: 'aopalliance', version: '1.0' compileOnly group: 'log4j', name: 'log4j', version: '1.2.16' compileOnly fileTree(dir: 'libs', include: ['*.jar']) compile fileTree(dir: 'maven_install', include: ['*.jar']) compile group: 'net.sf.ezmorph', name: 'ezmorph', version: '1.0.6' compile group: 'net.sf.json-lib', name: 'json-lib', version: '2.4', classifier: 'jdk15' compile group: 'com.sun.codemodel', name: 'codemodel', version: '2.6' compile group: 'org.apache.commons', name: 'commons-math3', version: '3.5' compile group: 'com.google.zxing', name: 'javase', version: '3.1.0' compile group: 'org.jsoup', name: 'jsoup', version: '1.8.1' compile group: 'com.sun.jna', name: 'jna', version: '3.0.9' compile group: 'com.spatial4j', name: 'spatial4j', version: '0.5' compile group: 'junit', name: 'junit', version: '4.10' compile group: 'org.mybatis', name: 'mybatis', version: '3.4.1' compile group: 'org.mybatis', name: 'mybatis-spring', version: '1.3.0' compile group: 'org.mybatis.generator', name: 'mybatis-generator-core', version: '1.3.5'
//用于声明一下任务所引用的jar包 mybatisGenerator 'org.mybatis.generator:mybatis-generator-core:1.3.5' mybatisGenerator 'mysql:mysql-connector-java:5.1.34' }
//执行mybatisGenerate任务自动生成model mapper和dao文件 task mybatisGenerate << { ant.taskdef( name: 'mbgenerator', classname: 'org.mybatis.generator.ant.GeneratorAntTask', classpath: configurations.mybatisGenerator.asPath ) ant.mbgenerator(overwrite: true, configfile: 'src/main/webapp/WEB-INF/config/generatorConfig.xml', verbose: true) { // propertyset { // propertyref(name: 'targetProject') // propertyref(name: 'jarDirection') // propertyref(name: 'userId') // propertyref(name: 'driverClass') // propertyref(name: 'connectionURL') // propertyref(name: 'password') // propertyref(name: 'src_main_java') // propertyref(name: 'src_main_resources') // propertyref(name: 'modelPackage') // propertyref(name: 'mapperPackage') // propertyref(name: 'sqlMapperPackage') // } } } sourceSets { main { java { srcDir 'src/main/support' } } } //编译groovy代码时采用 UTF-8 tasks.withType(GroovyCompile) { groovyOptions.encoding = "MacRoman" } //编译JAVA文件时采用UTF-8 tasks.withType(JavaCompile) { options.encoding = "UTF-8" } //如果生成javadoc出现编码问题添加 javadoc { options{ encoding "UTF-8" charSet 'UTF-8' author true version true links "http://docs.oracle.com/javase/7/docs/api" title "帮助文档" } }
二 Spring 与mybatis 整合 并配置redis
<?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:tx="http://www.springframework.org/schema/tx" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd"> <context:property-placeholder file-encoding="utf-8" location="WEB-INF/config/jdbc.properties" ignore-unresolvable="true"/> <context:property-placeholder file-encoding="utf-8" location="WEB-INF/config/cache.properties" ignore-unresolvable="true"/> <!--配置数据源--> <bean id="hikariConfig" class="com.zaxxer.hikari.HikariConfig"> <property name="poolName" value="springHikariCP"/> <property name="connectionTestQuery" value="${init.sql.checkTypeTable}"/> <property name="dataSourceClassName" value="com.mysql.jdbc.jdbc2.optional.MysqlDataSource"/> <property name="maximumPoolSize" value="${jdbc.maxPoolSize}"/> <property name="maxLifetime" value="${jdbc.maxLifetime}"/> <property name="idleTimeout" value="${jdbc.idleConnectionTestPeriod}"/> <property name="dataSourceProperties"> <props> <prop key="url">${jdbc.url}</prop> <prop key="user">${jdbc.username}</prop> <prop key="password">${jdbc.password}</prop> </props> </property> </bean> <bean id="dataSource" class="com.zaxxer.hikari.HikariDataSource"> <constructor-arg ref="hikariConfig"/> </bean> <!--扫描xml--> <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> <property name="dataSource" ref="dataSource"/> <property name="typeAliasesPackage" value="com.cs.mapper"/> <property name="mapperLocations" value="classpath:mapper/*Mapper.xml"/> </bean> <bean id="scannerConfigurer" class="org.mybatis.spring.mapper.MapperScannerConfigurer"> <property name="basePackage" value="com.cs.dao"/> <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"/> </bean> <!--事务管理--> <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> <constructor-arg name="dataSource" ref="dataSource"/> </bean>、 <!--配置redis--> <bean id="jedisConnectionFactory" class="org.springframework.data.redis.connection.jedis.JedisConnectionFactory"> <property name="port" value="${redis.port}"/> <property name="usePool" value="true"/> <property name="hostName" value="${redis.host-name}"/> <property name="password" value="${redis.pwd}"/> </bean> <bean id="redisTemplate" class="org.springframework.data.redis.core.RedisTemplate"> <property name="connectionFactory" ref="jedisConnectionFactory"/> </bean> <bean id="redisCacheManager" class="org.springframework.data.redis.cache.RedisCacheManager"> <constructor-arg index="0" ref="redisTemplate"/> </bean> </beans>
jdbc 配置
jdbc.driverClassName=com.mysql.jdbc.Driver jdbc.url=自己的url jdbc.username=用户名 jdbc.password=密码 jdbc.initialPoolSize=1 jdbc.minPoolSize=1 jdbc.maxPoolSize=2 jdbc.maxIdleTime=0 jdbc.acquireIncrement=1 jdbc.acquireRetryAttempts=10 jdbc.breakAfterAcquireFailure=true jdbc.maxStatements=0 jdbc.maxLifetime=50 jdbc.testConnectionOnCheckout=false jdbc.testConnectionOnCheckin=true jdbc.idleConnectionTestPeriod=300 jdbc.maxIdleTimeExcessConnections=240 init.sql.checkTypeTable=select 1; ###hikariCP dataSource.cachePrepStmts=true dataSource.prepStmtCacheSize=250 dataSource.prepStmtCacheSqlLimit=2048cache 配置
redis.host-name=redis链接IP redis.port=redis端口号 redis.pwd=redis密码三 Spring-mvc.xml (配置静态文件以及Spring的自动注入和view解析,如果Controller和Service层需要注入配置文件中的内容 需要再这里注入)
<?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:task="http://www.springframework.org/schema/task" xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:aop="http://www.springframework.org/schema/aop" 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/task http://www.springframework.org/schema/task/spring-task-3.1.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd"> <context:component-scan base-package="com.cs"/> <context:property-placeholder file-encoding="utf-8" location="WEB-INF/config/app.properties" ignore-unresolvable="true"/> <mvc:annotation-driven/> <task:annotation-driven/> <aop:aspectj-autoproxy proxy-target-class="true" /> <!--静态资源--> <mvc:resources mapping="/static/**" location="/static/"/> <!--<mvc:default-servlet-handler/>--> <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="prefix" value="/WEB-INF/views"/> <property name="suffix" value=".jsp"/> </bean> </beans>四 generatorConfig 自动生成Model mapper和dao文件
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE generatorConfiguration PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN" "http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd"> <generatorConfiguration> <classPathEntry location="C:/Users/remote_user/.gradle/caches/modules-2/files-2.1/mysql/mysql-connector-java/5.1.34/46deba4adbdb4967367b013cbc67b7f7373da60a/mysql-connector-java-5.1.34.jar"/> <context id="mysql" targetRuntime="MyBatis3"> <commentGenerator> <!-- 是否去除自动生成的注释 true:是 : false:否 --> <property name="suppressAllComments" value="false" /> </commentGenerator> <!--数据库连接的信息:驱动类、连接地址、用户名、密码 --> <jdbcConnection driverClass="com.mysql.jdbc.Driver" connectionURL="数据库URL" userId="账号" password="密码"> </jdbcConnection> <javaTypeResolver > <property name="forceBigDecimals" value="false" /> </javaTypeResolver> <javaModelGenerator targetPackage="com.cs.model" targetProject="F:/ndm-workspace/domeTest/src/main/support"> <property name="enableSubPackages" value="true" /> <property name="trimStrings" value="true" /> </javaModelGenerator>//配置这里的时候 如果不把mapper 设置为资源文件,在访问的时候一直报mapper没有注入的情况(好像eclipse和mylicpse没有这样的毛病) <sqlMapGenerator targetPackage="mapper" targetProject="F:/ndm-workspace/domeTest/src/main/resources"> <property name="enableSubPackages" value="true" /> </sqlMapGenerator> <javaClientGenerator type="XMLMAPPER" targetPackage="com.cs.dao" targetProject="F:/ndm-workspace/domeTest/src/main/support"> <property name="enableSubPackages" value="true" /> </javaClientGenerator> <!--创建含有example的model--> <!--<!– 每一个数据库表都需要建立一个对应的table字段 –>--> <!--<table tableName="cms_index">--> <!--<property name="useActualColumnNames" value="true"/>--> <!--<generatedKey column="ID" sqlStatement="DB2" identity="true" />--> <!--<columnOverride column="DATE_FIELD" property="startDate" />--> <!--<ignoreColumn column="FRED" />--> <!--<columnOverride column="LONG_VARCHAR_FIELD" jdbcType="VARCHAR" />--> <!--</table>--> <!--创建没有example的model--> <table tableName="cms_index" domainObjectName="CmsIndex" enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false"> <property name="useActualColumnNames" value="false" /> <property name="useActualColumnNames" value="true"/> <generatedKey column="ID" sqlStatement="DB2" identity="true" /> <columnOverride column="DATE_FIELD" property="startDate" /> <ignoreColumn column="FRED" /> <columnOverride column="LONG_VARCHAR_FIELD" jdbcType="VARCHAR" /> </table> </context> </generatorConfiguration>+五 web.xml
搭建完的项目布局<?xml version="1.0" encoding="UTF-8"?> <web-app 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" version="3.0"> <welcome-file-list> <welcome-file>index.jsp</welcome-file> </welcome-file-list> <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener> <context-param> <param-name>contextConfigLocation</param-name> <param-value>/WEB-INF/config/Spring-*.xml,/WEB-INF/config/generatorConfig.xml</param-value> </context-param> <servlet> <servlet-name>SpringMvc</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <init-param> <param-name>contextConfigLocation</param-name> <param-value>/WEB-INF/config/Spring-mvc.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> <listener> <listener-class>org.springframework.web.util.IntrospectorCleanupListener</listener-class> </listener> </web-app>调一下试试看看成功没有:
![]()
![]()
调用接口运行
![]()