1:创建聚合项目的父项目
二:创建一个web子工程和三个JAR子工程
三:整个聚合项目目录
四:在父工程中添加依赖管理
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.cctv</groupId>
<artifactId>crm</artifactId>
<packaging>pom</packaging>
<version>1.0-SNAPSHOT</version>
<modules>
<module>crm-controller</module>
<module>crm-serverce</module>
<module>crm-dao</module>
<module>crm-vo</module>
</modules>
<!--对子项目的jar做统一管理-->
<properties>
<junit.version>4.12</junit.version>
<spring.version>4.1.3.RELEASE</spring.version>
<mybatis.version>3.2.8</mybatis.version>
<mybatis.spring.version>1.2.2</mybatis.spring.version>
<mysql.version>5.1.32</mysql.version>
<druid.version>1.0.9</druid.version>
<jstl.version>1.2</jstl.version>
<servlet.version>2.5</servlet.version>
<jsp.version>2.0</jsp.version>
<tomcat.version>2.2</tomcat.version>
</properties>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>${junit.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>${mybatis.version}</version>
</dependency>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>${mybatis.spring.version}</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>${mysql.version}</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>${druid.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-beans</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-aspects</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>jstl</groupId>
<artifactId>jstl</artifactId>
<version>${jstl.version}</version>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>${servlet.version}</version>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jsp-api</artifactId>
<version>${jsp.version}</version>
</dependency>
</dependencies>
</dependencyManagement>
<build>
<!--配置资源拷贝插件-->
<resources>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.xml</include>
</includes>
</resource>
<resource>
<directory>src/main/resources</directory>
<includes>
<include>**/*.xml</include>
<include>**/*.properties</include>
</includes>
</resource>
</resources>
<!--配置tomcat插件-->
<pluginManagement>
<plugins>
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<version>${tomcat.version}</version>
</plugin>
</plugins>
</pluginManagement>
</build>
</project>
五: 配置子模块的依赖注入
-
crm-controller模块
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>crm</artifactId>
<groupId>com.cctv</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<groupId>com.cctv</groupId>
<artifactId>crm-controller</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>war</packaging>
<dependencies>
<dependency>
<groupId>com.cctv</groupId>
<artifactId>crm-serverce</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>com.cctv</groupId>
<artifactId>crm-vo</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
</dependency>
<dependency>
<groupId>jstl</groupId>
<artifactId>jstl</artifactId>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jsp-api</artifactId>
<scope>provided</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<configuration>
<path>/</path>
<port>8080</port>
</configuration>
</plugin>
</plugins>
</build>
</project>
- crm-serverce模块
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>crm</artifactId>
<groupId>com.cctv</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>crm-serverce</artifactId>
<dependencies>
<dependency>
<groupId>com.cctv</groupId>
<artifactId>crm-dao</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>com.cctv</groupId>
<artifactId>crm-vo</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-beans</artifactId>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-aspects</artifactId>
</dependency>
</dependencies>
</project>
- crm-dao模块
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>crm</artifactId>
<groupId>com.cctv</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>crm-dao</artifactId>
<dependencies>
<dependency>
<groupId>com.cctv</groupId>
<artifactId>crm-vo</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
</dependency>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
</dependency>
</dependencies>
</project>
六:SSM框架整合:文件放在controller模块resources目录下
- 数据库的配置db.properties
db.driver=com.mysql.jdbc.Driver
db.url=jdbc:mysql://localhost:3306/crm?useUnicode=true&characterEncoding=utf-8
db.uname=root
db.pwd=roo
- 日志信息的配置log4j.properties
# 记录的级别(其他类错误才记录TRACE,DEBUG,info,warn,ERROR,fatal,off)
log4j.rootLogger=DEBUG, stdout
# 控制台输出【log4j支持的输出:控制台,文件,数据库,邮件。。。】
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
# ConversionPattern 输出信息的格式 %m输出的内容 %n 输出换行
log4j.appender.stdout.layout.ConversionPattern = %p %d %m%n
- dao模块的配置 spring-app.xml
<?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-4.1.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">
<!-- 扫描properties的数据方便在xml或代码中通过${取出数据} -->
<context:property-placeholder location="classpath:db.properties" />
<!-- 扫描整体项目:排除controller -->
<context:component-scan base-package="com.cdsxt">
<context:exclude-filter type="annotation"
expression="org.springframework.stereotype.Controller" />
</context:component-scan>
<!--
数据源:获取数据库连接的数据源
a)单链接数据源:DriverManagerDataSource,每次使用一个连接
b)连接池数据源:cp30,druild,dbcp连接池,缓存多个连接重复使用,效率高
-->
<bean id="myDataSource"
class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName">
<value>${db.driver}</value>
</property>
<property name="url">
<value>${db.url}</value>
</property>
<property name="username">
<value>${db.uname}</value>
</property>
<property name="password">
<value>${db.pwd}</value>
</property>
</bean>
<!--sqlSessionFactory的配置
1)spring帮我们创建sqlSessionFactory对象,单例 ,放入spring beanfac工厂 -->
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="myDataSource" />
<!-- 配置javabean所在的包 -->
<!-- 配置参数和结果类型bean所在位置,自动设置别名 -->
<property name="typeAliasesPackage" value="com.cdsxt.vo" />
<!-- mybatis-spring 1.3之后支持 -->
<property name="configuration">
<bean class="org.apache.ibatis.session.Configuration">
<!-- myabtis使用的日志框架为log4j -->
<property name="logImpl" value="org.apache.ibatis.logging.log4j.Log4jImpl"></property>
<property name="mapUnderscoreToCamelCase" value="true" />
<!--批量执行sql优化:回显自动id需要注意-->
<!-- <property name="defaultExecutorType" value="BATCH" /> -->
</bean>
</property>
<!-- 配置mybatis入口文件 -->
<!-- <property name="configLocation" value="classpath:conf/mybatis-config.xml" /> -->
<!-- 自动扫描mybatis的mapping.xml文件 -->
<property name="mapperLocations" value="classpath:com/cdsxt/dao/**/*.xml" />
<!-- 注意其他配置 -->
<property name="plugins">
<array>
<bean class="com.github.pagehelper.PageInterceptor">
<property name="properties">
<!--使用下面的方式配置参数,一行配置一个 -->
<value>
helperDialect=mysql
</value>
</property>
</bean>
</array>
</property>
</bean>
<!--【需要面向接口开发使用】 扫描mapper(dao)接口
1)myabtis会扫描com.cdsxt.dao包,为其接口生成实现类(动态代理类)
2)myabtis会创建反射创建对象
3)把dao对象放入spring beanfac工厂
-->
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="basePackage" value="com.cdsxt.dao" />
</bean>
<!-- 定义事务管理器:mybatis和spring jdbc使用同款 -->
<bean id="transactionManager"
class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="myDataSource" />
</bean>
<!--使用注释事务 -->
<tx:annotation-driven transaction-manager="transactionManager" />
<!-- 可选:在集成了myabtis之后,也可以配置jdbctemplate使用,不会冲突 -->
<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
<property name="dataSource" ref="myDataSource" />
</bean>
</beans>
- controller模块配置 spring-mvc.xml
<?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:mvc="http://www.springframework.org/schema/mvc"
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/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd">
<!-- 扫描注解的包,写Controller(action)包 -->
<context:component-scan base-package="com.cdsxt.controller" />
<!-- 让spring mvc的注解生效 -->
<mvc:annotation-driven />
<!-- 默认首页 -->
<!-- <mvc:redirect-view-controller redirect-url="/stu/query" path="/"/> -->
<!-- 处理静态资源 <mvc:resources location="" mapping=""></mvc:resources> -->
<mvc:default-servlet-handler/>
<!-- spring mvc 的视图解析器(这里是jsp),也可以配置freemaker等 -->
<bean
class="org.springframework.web.servlet.view.InternalResourceViewResolver"
id="internalResourceViewResolver">
<!-- 前缀 -->
<property name="prefix" value="/page/" />
<!-- 后缀 -->
<property name="suffix" value=".jsp" />
</bean>
<!-- SpringMVC上传文件时,需要配置MultipartResolver处理器 -->
<!-- CommonsMultipartResolver MultipartResolver的一个实现,需要commons-fileupload
等 jar 包支持, 但它能在比较旧的 servlet 版本中使用 -->
<!-- <bean id="multipartResolver"
class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
字符集设置
<property name="defaultEncoding" value="utf-8" />
文件大小的上限=字节
<property name="maxUploadSize" value="10485760000" />
内存缓存的文件大小 1m
<property name="maxInMemorySize" value="1024000" />
</bean> -->
<!-- spirng、 mvc 的拦截器 -->
<!-- spirng、 mvc 的拦截器 -->
<mvc:interceptors>
<!--登录的拦截(
有些功能不能拦截:静态资源,登录页面需要的功能
) -->
<mvc:interceptor>
<mvc:mapping path="/**" />
<mvc:exclude-mapping path="/login/**" />
<bean class="com.cdsxt.interceptor.LoginInterceptor"></bean>
</mvc:interceptor>
<!--权限的拦截(
有些功能不能拦截:静态资源,登录页面需要的功能
) -->
<mvc:interceptor>
<mvc:mapping path="/**"/>
<mvc:exclude-mapping path="/login/**"/>
<bean class="com.cdsxt.interceptor.AuthInterceptor"></bean>
</mvc:interceptor>
</mvc:interceptors>
</beans>
- 在web.xml配置Spring-mvc.xml和Spring-app.xml文件的加载
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://java.sun.com/xml/ns/javaee"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
id="WebApp_ID" version="2.5">
<display-name>test_ssm_1802_1</display-name>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
<!-- spring -->
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>
classpath:spring-app.xml
</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<!-- spring 字符集过滤器-->
<filter>
<description>字符集过滤器</description>
<filter-name>encodingFilter</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<init-param>
<description>字符集编码</description>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
<init-param>
<param-name>forceEncoding</param-name>
<param-value>true</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>encodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<!-- spring mvc-->
<servlet>
<servlet-name>springmvc</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>
classpath: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>
</web-app>
七:tomcat插件命令
- 如果tomcat插件安装在controller模块中:
需要对每个子模块通过Maven自己的命令进行install(考虑依赖关系,被依赖的先打包),最后通过tomcat插件的run运行项目
- 如果tomcat插件安装在父项目中
直接run即可运行
八:IDEA项目打包
- 对于Maven
- 对非Maven项目