使用Maven整合一个SSM,当然要配有Maven环境,Maven的环境配置自行百度,挺好配的
创建一个Maven项目以后,目录结构如图所示:
然后就是各部分配置:
首先pom导入依赖jar包:
1 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 2 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> 3 <modelVersion>4.0.0</modelVersion> 4 <groupId>com.57.DXYHospital</groupId> 5 <artifactId>demo1</artifactId> 6 <packaging>war</packaging> 7 <version>0.0.1-SNAPSHOT</version> 8 <name>DXYHospital Maven Webapp</name> 9 <url>http://maven.apache.org</url> 10 <dependencies> 11 <!-- Json依赖 --> 12 <!-- https://mvnrepository.com/artifact/org.json/json --> 13 <dependency> 14 <groupId>com.fasterxml.jackson.core</groupId> 15 <artifactId>jackson-core</artifactId> 16 <version>2.8.0</version> 17 </dependency> 18 <dependency> 19 <groupId>com.fasterxml.jackson.core</groupId> 20 <artifactId>jackson-annotations</artifactId> 21 <version>2.8.0</version> 22 </dependency> 23 <dependency> 24 <groupId>com.fasterxml.jackson.core</groupId> 25 <artifactId>jackson-databind</artifactId> 26 <version>2.8.0</version> 27 </dependency> 28 29 <dependency> 30 <groupId>org.json</groupId> 31 <artifactId>json</artifactId> 32 <version>20160810</version> 33 </dependency> 34 35 <dependency> 36 <groupId>com.alibaba</groupId> 37 <artifactId>fastjson</artifactId> 38 <version>1.2.39</version> 39 </dependency> 40 <!-- maven fonts 字体 --> 41 <!-- shiro相关依赖 --> 42 <dependency> 43 <groupId>org.apache.shiro</groupId> 44 <artifactId>shiro-core</artifactId> 45 <version>1.2.2</version> 46 </dependency> 47 <dependency> 48 <groupId>org.apache.shiro</groupId> 49 <artifactId>shiro-ehcache</artifactId> 50 <version>1.2.2</version> 51 </dependency> 52 <dependency> 53 <groupId>org.apache.shiro</groupId> 54 <artifactId>shiro-web</artifactId> 55 <version>1.2.2</version> 56 </dependency> 57 <dependency> 58 <groupId>org.apache.shiro</groupId> 59 <artifactId>shiro-quartz</artifactId> 60 <version>1.2.2</version> 61 </dependency> 62 <dependency> 63 <groupId>org.apache.shiro</groupId> 64 <artifactId>shiro-spring</artifactId> 65 <version>1.2.2</version> 66 </dependency> 67 <dependency> 68 <groupId>mysql</groupId> 69 <artifactId>mysql-connector-java</artifactId> 70 <version>5.1.25</version> 71 </dependency> 72 <dependency> 73 <groupId>com.alibaba</groupId> 74 <artifactId>druid</artifactId> 75 <version>0.2.23</version> 76 </dependency> 77 <!-- 单元测试 --> 78 <dependency> 79 <groupId>junit</groupId> 80 <artifactId>junit</artifactId> 81 <version>4.10</version> 82 <scope>test</scope> 83 </dependency> 84 85 <!-- Spring 相关依赖 --> 86 <dependency> 87 <groupId>org.springframework</groupId> 88 <artifactId>spring-context</artifactId> 89 <version>4.1.3.RELEASE</version> 90 </dependency> 91 <dependency> 92 <groupId>org.springframework</groupId> 93 <artifactId>spring-beans</artifactId> 94 <version>4.1.3.RELEASE</version> 95 </dependency> 96 <dependency> 97 <groupId>org.springframework</groupId> 98 <artifactId>spring-webmvc</artifactId> 99 <version>4.1.3.RELEASE</version> 100 </dependency> 101 <dependency> 102 <groupId>org.springframework</groupId> 103 <artifactId>spring-jdbc</artifactId> 104 <version>4.1.3.RELEASE</version> 105 </dependency> 106 <dependency> 107 <groupId>org.springframework</groupId> 108 <artifactId>spring-aspects</artifactId> 109 <version>4.1.3.RELEASE</version> 110 </dependency> 111 112 <!-- Mybatis 依赖 --> 113 <dependency> 114 <groupId>org.mybatis</groupId> 115 <artifactId>mybatis</artifactId> 116 <version>3.4.2</version> 117 </dependency> 118 119 <!-- mybatis整合Spring --> 120 <dependency> 121 <groupId>org.mybatis</groupId> 122 <artifactId>mybatis-spring</artifactId> 123 <version>1.3.0</version> 124 </dependency> 125 126 <!-- Mysql 依赖 --> 127 <dependency> 128 <groupId>mysql</groupId> 129 <artifactId>mysql-connector-java</artifactId> 130 <version>5.1.6</version> 131 </dependency> 132 133 <!-- log4j日志 依赖 --> 134 <!-- 如果log4j的版本在1.2.14以上,则会出现下面的错误: 135 Missing artifact javax.jms:jms:jar:1.1:compile 136 Missing artifact com.sun.jdmk:jmxtools:jar:1.2.1:compile 137 Missing artifact com.sun.jmx:jmxri:jar:1.2.1:compile 138 解决方案:原因是log4j在1.2.15及以上版本更换了协议,与jms冲突。 139 解决办法有两种:一是使用1.2.14版本,二是手动下载jms.jar,安装到maven本地仓库中 140 --> 141 <dependency> 142 <groupId>log4j</groupId> 143 <artifactId>log4j</artifactId> 144 <version>1.2.15</version> 145 <exclusions> 146 <exclusion> 147 <groupId>com.sun.jmx</groupId> 148 <artifactId>jmxri</artifactId> 149 </exclusion> 150 <exclusion> 151 <groupId>com.sun.jdmk</groupId> 152 <artifactId>jmxtools</artifactId> 153 </exclusion> 154 <exclusion> 155 <groupId>javax.jms</groupId> 156 <artifactId>jms</artifactId> 157 </exclusion> 158 </exclusions> 159 </dependency> 160 161 <!-- JSP相关 --> 162 <dependency> 163 <groupId>jstl</groupId> 164 <artifactId>jstl</artifactId> 165 <version>1.2</version> 166 </dependency> 167 <dependency> 168 <groupId>javax.servlet</groupId> 169 <artifactId>servlet-api</artifactId> 170 <version>2.5</version> 171 <scope>provided</scope> 172 </dependency> 173 <dependency> 174 <groupId>javax.servlet</groupId> 175 <artifactId>jsp-api</artifactId> 176 <version>2.0</version> 177 <scope>provided</scope> 178 </dependency> 179 <!-- 阿里 --> 180 <dependency> 181 <groupId>com.alibaba</groupId> 182 <artifactId>druid</artifactId> 183 <version>0.2.23</version> 184 </dependency> 185 </dependencies> 186 <build> 187 <finalName>demo1</finalName> 188 </build> 189 </project>
里面的 shiro依赖可以去掉,和json依赖里面的fastjson也可以去掉,
首先配置 applicationContext-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" xmlns:tx="http://www.springframework.org/schema/tx" 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/mvc 9 http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd 10 http://www.springframework.org/schema/context 11 http://www.springframework.org/schema/context/spring-context.xsd 12 http://www.springframework.org/schema/tx 13 http://www.springframework.org/schema/tx/spring-tx-4.0.xsd"> 14 15 <context:component-scan base-package="org.team57.dxyh.mapper"/> 16 <context:component-scan base-package="org.team57.dxyh.service"/> 17 18 <!-- Mybatis 和 Spring的整合 --> 19 <!-- 数据源 --> 20 21 <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource" init-method="init" destroy-method="close"> 22 <!-- 基本属性 url、user、password --> 23 <property name="url" value="jdbc:mysql://localhost:3306/ceshi"/> 24 <property name="username" value="root"/> 25 <property name="password" value="123456"/> 26 27 <!-- 配置初始化大小、最小、最大 --> 28 <property name="initialSize" value="10"/> 29 <property name="minIdle" value="10"/> 30 <property name="maxActive" value="50"/> 31 32 <!-- 配置获取连接等待超时的时间 --> 33 <property name="maxWait" value="60000"/> 34 <!-- 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒 --> 35 <property name="timeBetweenEvictionRunsMillis" value="60000" /> 36 37 <!-- 配置一个连接在池中最小生存的时间,单位是毫秒 --> 38 <property name="minEvictableIdleTimeMillis" value="300000" /> 39 <property name="validationQuery" value="SELECT 'x'" /> 40 <property name="testWhileIdle" value="true" /> 41 <property name="testOnBorrow" value="false" /> 42 <property name="testOnReturn" value="false" /> 43 44 <!-- 打开PSCache,并且指定每个连接上PSCache的大小 如果用Oracle,则把poolPreparedStatements配置为true,mysql可以配置为false。--> 45 <property name="poolPreparedStatements" value="true" /> 46 <property name="maxPoolPreparedStatementPerConnectionSize" value="20" /> 47 <!-- 配置监控统计拦截的filters --> 48 <property name="filters" value="wall,stat" /> 49 </bean> 50 51 <!-- 2.Mybatis 的 SqlSession的工厂:SqlSessionFactoryBean dataSource引用数据源 Mybatis 52 定义数据源,同意加载配置 --> 53 <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> 54 <property name="dataSource" ref="dataSource"></property> 55 <property name="mapperLocations" value="classpath:org/team57/dxyh/mapper/*.xml" /> 56 <property name="configLocation" value="classpath:mybatis-config.xml"></property> 57 </bean> 58 59 <!-- 3. Mybatis自动扫描加载Sql映射文件/接口:MapperScannerConfigurer sqlSessionFactory 60 basePackage:指定sql映射文件/接口所在的包(自动扫描) --> 61 <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"> 62 <property name="basePackage" value="org.team57.dxyh.mapper"></property> 63 <property name="sqlSessionFactory" ref="sqlSessionFactory"></property> 64 </bean> 65 66 <!-- 4.事务管理:DataSourceTransactionManager dataSource 引用上面定义好的数据源 --> 67 <bean id="txManager" 68 class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> 69 <property name="dataSource" ref="dataSource"></property> 70 </bean> 71 72 <!-- 5.使用声明式事务: transaction-manager = "txManager" tx:advice 这种 是用 aop方式管理事物 73 annotation-driven 这种是注解方式管理事物 第一种方式,需要在spring配置文件配置一些参数 第二种方式,需要在 类里 加一些注解进行事物管理 74 用一种就行,没必须都用 --> 75 <tx:annotation-driven transaction-manager="txManager" /> 78 79 </beans>
再配置 mybatis-config.xml 这是一个全局配置,可以省略
1 <?xml version="1.0" encoding="UTF-8" ?> 2 <!DOCTYPE configuration 3 PUBLIC "-//mybatis.org//DTD Config 3.0//EN" 4 "http://mybatis.org/dtd/mybatis-3-config.dtd"> 5 <configuration> 6 <!-- 配置打印 SQL 到控制台 以及懒加载 --> 7 <settings> 8 <setting name="logImpl" value="STDOUT_LOGGING" /> 9 <!-- 打开延迟加载的全局开关 --> 10 <setting name="lazyLoadingEnabled" value="true" /> 11 <setting name="aggressiveLazyLoading" value="false" /> 12 <setting name="mapUnderscoreToCamelCase" value="true" /> 13 </settings> 14 <typeAliases> 15 <package name="org.team57.dxyh.entity"/> 16 </typeAliases> 17 <mappers> 18 <package name="org.team57.dxyh.mapper"/> 19 </mappers> 20 </configuration>
再配置 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" xmlns:tx="http://www.springframework.org/schema/tx" 6 xmlns:task="http://www.springframework.org/schema/task" 7 xsi:schemaLocation="http://www.springframework.org/schema/beans 8 http://www.springframework.org/schema/beans/spring-beans.xsd 9 http://www.springframework.org/schema/mvc 10 http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd 11 http://www.springframework.org/schema/context 12 http://www.springframework.org/schema/context/spring-context.xsd 13 http://www.springframework.org/schema/tx 14 http://www.springframework.org/schema/tx/spring-tx-4.0.xsd 15 http://www.springframework.org/schema/task 16 http://www.springframework.org/schema/task/spring-task-4.0.xsd"> 17 <!-- 开启注解 --> 18 <mvc:annotation-driven/> 19 <!-- 配置自定扫描包 --> 20 <context:component-scan base-package="org.team57.dxyh.controller"/> 21 <context:component-scan base-package="org.team57.dxyh.service"/> 22 <context:component-scan base-package="org.team57.dxyh.Shiro"/> 23 <context:component-scan base-package="org.team57.dxyh.service.impl"/> 24 25 <!-- 定时器,住院自动扣费 --> 26 <task:executor pool-size="5" id="executor"/> 27 <task:scheduler pool-size="10" id="scheduler"/> 28 <task:annotation-driven scheduler="scheduler" executor="executor"/> 29 30 <!-- 配置视图解析器: 如何把 handler 方法返回值解析为实际的物理视图 --> 31 <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"> 32 <property name="prefix" value="/"></property> 33 <property name="suffix" value=".jsp"></property> 34 </bean> 35 <!-- 处理静态资源 --> 36 <mvc:resources location="/js/" mapping="/js/**"/> 37 <mvc:resources location="/css/" mapping="/css/**"/> 38 <mvc:resources location="/fonts/" mapping="/fonts/**"/> 39 </beans>
最后配置web.xml
1 <!DOCTYPE web-app PUBLIC 2 "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" 3 "http://java.sun.com/dtd/web-app_2_3.dtd" > 4 5 <web-app> 6 <!-- 加载spring与mybatis的整合配置 --> 7 <context-param> 8 <param-name>contextConfigLocation</param-name> 9 <param-value>classpath:applicationContext-mybatis.xml</param-value> 10 </context-param> 11 12 13 <!-- 解决工程编码过滤器 14 注意:请将此过滤器放在所有过滤器的前面,否则有可能出现乱码 --> 15 <filter> 16 <filter-name>encodingFilter</filter-name> 17 <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class> 18 <init-param> 19 <param-name>encoding</param-name> 20 <param-value>UTF-8</param-value> 21 </init-param> 22 <init-param> 23 <param-name>forceEncoding</param-name> 24 <param-value>true</param-value> 25 </init-param> 26 </filter> 27 <filter> 28 <filter-name>shiroFilter</filter-name> 29 <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class> 30 <init-param> 31 <param-name>targetFilterLifecycle</param-name> 32 <param-value>true</param-value> 33 </init-param> 34 </filter> 35 <filter-mapping> 36 <filter-name>shiroFilter</filter-name> 37 <url-pattern>/*</url-pattern> 38 </filter-mapping> 39 <filter> 40 <filter-name>HiddenHttpMethodFilter</filter-name> 41 <filter-class>org.springframework.web.filter.HiddenHttpMethodFilter</filter-class> 42 </filter> 43 <filter-mapping> 44 <filter-name>encodingFilter</filter-name> 45 <url-pattern>/*</url-pattern> 46 </filter-mapping> 47 48 <!-- 配置HiddenHttpMethodFilter过滤器,把 POST 请求 转换为 DELETE/PUT请求 --> 49 <filter-mapping> 50 <filter-name>HiddenHttpMethodFilter</filter-name> 51 <url-pattern>/*</url-pattern> 52 </filter-mapping> 53 <!-- 加载Spring 容器配置 --> 54 <listener> 55 <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> 56 </listener> 57 <!-- 防止Spring内存溢出监听器 --> 58 <listener> 59 <listener-class>org.springframework.web.util.IntrospectorCleanupListener</listener-class> 60 </listener> 61 <!-- 配置 springMVC 核心控制器 --> 62 <servlet> 63 <servlet-name>springMVC</servlet-name> 64 <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 65 <init-param> 66 <param-name>contextConfigLocation</param-name> 67 <param-value>classpath:spring-MVC.xml</param-value> 68 </init-param> 69 <load-on-startup>1</load-on-startup> 70 </servlet> 71 72 73 <servlet-mapping> 74 <servlet-name>springMVC</servlet-name> 75 <url-pattern>/</url-pattern> 76 </servlet-mapping> 77 <welcome-file-list> 78 <welcome-file>login.jsp</welcome-file> 79 </welcome-file-list> 80 <login-config> 81 <auth-method>BASIC</auth-method> 82 </login-config> 83 </web-app>