GVKun编程网logo

Spring MVC Maven模块(springmvc的模块)

35

如果您想了解SpringMVCMaven模块和springmvc的模块的知识,那么本篇文章将是您的不二之选。我们将深入剖析SpringMVCMaven模块的各个方面,并为您解答springmvc的模块

如果您想了解Spring MVC Maven模块springmvc的模块的知识,那么本篇文章将是您的不二之选。我们将深入剖析Spring MVC Maven模块的各个方面,并为您解答springmvc的模块的疑在这篇文章中,我们将为您介绍Spring MVC Maven模块的相关知识,同时也会详细的解释springmvc的模块的运用方法,并给出实际的案例分析,希望能帮助到您!

本文目录一览:

Spring MVC Maven模块(springmvc的模块)

Spring MVC Maven模块(springmvc的模块)

假设我要拥有3个Maven模块:

  • parent
  • login
  • webapp

我想在两个模块(登录和webapp)中都包含Java类和jsp文件。我的解决方法部分起作用,它构建了一个WAR文件,呈现了网页,看上去还不错,但是当我尝试在webapp模块中使用API​​(登录模块的接口)时,找不到类。我认为POM文件有问题。

POM几乎相同,这是登录名和Webapp Poms之间的主要区别-Webapp与登录名具有依赖关系。

来自webapp模块的POM来源:

<?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/maven-v4_0_0.xsd">    <modelVersion>4.0.0</modelVersion>    <artifactId>webapp</artifactId>    <name>mano-webapp</name>    <packaging>war</packaging>    <properties>        <java-version>1.6</java-version>        <org.springframework-version>3.1.1.RELEASE</org.springframework-version>        <org.aspectj-version>1.6.10</org.aspectj-version>        <org.slf4j-version>1.6.6</org.slf4j-version>    </properties>    <dependencies>        <!-- Spring -->        <dependency>            <groupId>org.springframework</groupId>            <artifactId>spring-context</artifactId>            <version>${org.springframework-version}</version>            <exclusions>                <!-- Exclude Commons Logging in favor of SLF4j -->                <exclusion>                    <groupId>commons-logging</groupId>                    <artifactId>commons-logging</artifactId>                 </exclusion>            </exclusions>        </dependency>        <dependency>            <groupId>org.springframework</groupId>            <artifactId>spring-webmvc</artifactId>            <version>${org.springframework-version}</version>        </dependency>        <!-- AspectJ -->        <dependency>            <groupId>org.aspectj</groupId>            <artifactId>aspectjrt</artifactId>            <version>${org.aspectj-version}</version>        </dependency>        <!-- Logging -->        <dependency>            <groupId>org.slf4j</groupId>            <artifactId>slf4j-api</artifactId>            <version>${org.slf4j-version}</version>        </dependency>        <dependency>            <groupId>org.slf4j</groupId>            <artifactId>jcl-over-slf4j</artifactId>            <version>${org.slf4j-version}</version>            <scope>runtime</scope>        </dependency>        <dependency>            <groupId>org.slf4j</groupId>            <artifactId>slf4j-log4j12</artifactId>            <version>${org.slf4j-version}</version>            <scope>runtime</scope>        </dependency>        <dependency>            <groupId>log4j</groupId>            <artifactId>log4j</artifactId>            <version>1.2.15</version>            <exclusions>                <exclusion>                    <groupId>javax.mail</groupId>                    <artifactId>mail</artifactId>                </exclusion>                <exclusion>                    <groupId>javax.jms</groupId>                    <artifactId>jms</artifactId>                </exclusion>                <exclusion>                    <groupId>com.sun.jdmk</groupId>                    <artifactId>jmxtools</artifactId>                </exclusion>                <exclusion>                    <groupId>com.sun.jmx</groupId>                    <artifactId>jmxri</artifactId>                </exclusion>            </exclusions>            <scope>runtime</scope>        </dependency>        <!-- @Inject -->        <dependency>            <groupId>javax.inject</groupId>            <artifactId>javax.inject</artifactId>            <version>1</version>        </dependency>        <!-- Servlet -->        <dependency>            <groupId>javax.servlet</groupId>            <artifactId>servlet-api</artifactId>            <version>2.5</version>            <scope>provided</scope>        </dependency>        <dependency>            <groupId>javax.servlet.jsp</groupId>            <artifactId>jsp-api</artifactId>            <version>2.1</version>            <scope>provided</scope>        </dependency>        <dependency>            <groupId>javax.servlet</groupId>            <artifactId>jstl</artifactId>            <version>1.2</version>        </dependency>        <!-- Test -->        <dependency>            <groupId>junit</groupId>            <artifactId>junit</artifactId>            <version>4.7</version>            <scope>test</scope>        </dependency>        <dependency>            <groupId>com.beta.test</groupId>            <artifactId>mod-login</artifactId>            <version>0.0.1-SNAPSHOT</version>            <type>war</type>        </dependency>    </dependencies>    <build>        <plugins>            <plugin>                <artifactId>maven-eclipse-plugin</artifactId>                <version>2.9</version>                <configuration>                    <additionalProjectnatures>                        <projectnature>org.springframework.ide.eclipse.core.springnature</projectnature>                    </additionalProjectnatures>                    <additionalBuildcommands>                        <buildcommand>org.springframework.ide.eclipse.core.springbuilder</buildcommand>                    </additionalBuildcommands>                    <downloadSources>true</downloadSources>                    <downloadJavadocs>true</downloadJavadocs>                </configuration>            </plugin>            <plugin>                <groupId>org.apache.maven.plugins</groupId>                <artifactId>maven-compiler-plugin</artifactId>                <version>2.5.1</version>                <configuration>                    <source>1.6</source>                    <target>1.6</target>                    <compilerArgument>-Xlint:all</compilerArgument>                    <showWarnings>true</showWarnings>                    <showDeprecation>true</showDeprecation>                </configuration>            </plugin>            <plugin>                <groupId>org.codehaus.mojo</groupId>                <artifactId>exec-maven-plugin</artifactId>                <version>1.2.1</version>                <configuration>                    <mainClass>org.test.int1.Main</mainClass>                </configuration>            </plugin>        </plugins>    </build>    <parent>        <groupId>com.beta.test</groupId>        <artifactId>parent</artifactId>        <version>0.0.1-SNAPSHOT</version>        <relativePath>../parent</relativePath>    </parent></project>

答案1

小编典典

根据您的描述,您应该考虑使用Maven覆盖。

WAR文件的覆盖图只是一个Maven项目,该项目使用另一个项目的WAR输出作为依赖项,而不是一个项目的JAR。构建覆盖项目后,基础项目的WAR文件将爆炸,并将覆盖项目中的文件添加到其中。如果覆盖项目的文件和路径与名称与基础WAR中的文件相同,则它将替换它。

您将以与现在相同的方式将战争包含在一个模块中,并覆盖当前模块中的文件(类或静态资源)。一个博客,其中有更多说明和分步指南。

idea maven springmvc mybabit 多模块管理整合

idea maven springmvc mybabit 多模块管理整合

一、安装软件 jdk1.7,tomcat7.0,idea,mysql,maven

二、在 idea 中配置 jdk

1、依次点开 File -->Project Structure,点击左侧标签页,点击 SDKs

2、点击 + 号,选 SDK

3、在弹出框选择 jdk 路径(我本地装了两个 jdk,大家可以忽略)

 

4、点击 OK,可以看到 jdk 配置好了

 

5、按照这个顺序,可以配置多个 jdk

 

 

三、idea 配置 tomcat

1、点击 file->setting

2、进入 Build, Execution, Deployment->Application Server

 

 三、idea 配置 maven

1. 下载 Maven 
官方地址:http://maven.apache.org/download.cgi

下载

解压并新建一个本地仓库文件夹

解压新建本地仓库

2. 配置本地仓库路径 
打开此文件 
这里写图片描述

3. 配置 maven 环境变量

点击更改设置 
点击环境变量 
新建M2_HOME 
配置Path 
查询是否配置成功

4. 在 IntelliJ IDEA 中配置 maven 
打开 - File-Settings 
配置maven

四、创建多模块项目

1、创建项目 file->new->project

2、选择 maven 类型项目

3、填写 maven 项目信息

4、创建框架模块

5、按照框架模块方式创建工具模块(vlm_common)、web 模块 (vlm_web)、项目模块 1 (vlm_module1)、项目模块 2 (vlm_module2)

五、配置 vlm_web 项目 web 类型项目

 

 

 

六、配置根目录 pom.xml

<?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.vlm.system</groupId>
<artifactId>vlm_parent</artifactId>
<packaging>pom</packaging>
<version>1.0-SNAPSHOT</version>
<modules>
<module>vlm_frame</module>
<module>vlm_common</module>
<module>vlm_module1</module>
<module>vlm_web</module>
<module>vlm_module2</module>
<module>vlm_module3</module>
</modules>

<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>1.7</maven.compiler.source>
<maven.compiler.target>1.7</maven.compiler.target>
<!-- log4j日志文件管理包版本 -->
<slf4j.version>1.8.0-alpha2</slf4j.version>
<log4j.version>1.2.17</log4j.version>
</properties>

<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
<!-- 日志相关 -->
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>${log4j.version}</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>${slf4j.version}</version>
</dependency>

<!-- https://mvnrepository.com/artifact/org.slf4j/slf4j-log4j12 -->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>1.8.0-alpha2</version>
<scope>test</scope>
</dependency>
</dependencies>

<build>
<outputDirectory>C:\Users\Administrator\IdeaProjects\vlm_parent\vlm_web\src\main\webapp\WEB-INF\classes</outputDirectory>
<testOutputDirectory>C:\Users\Administrator\IdeaProjects\vlm_parent\vlm_web\src\main\webapp\WEB-INF\classes</testOutputDirectory>

<pluginManagement><!-- lock down plugins versions to avoid using Maven defaults (may be moved to parent pom) -->
<plugins>
<plugin>
<artifactId>maven-clean-plugin</artifactId>
<version>3.1.0</version>
</plugin>
<!-- see http://maven.apache.org/ref/current/maven-core/default-bindings.html#Plugin_bindings_for_war_packaging -->
<plugin>
<artifactId>maven-resources-plugin</artifactId>
<version>3.0.2</version>
</plugin>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.0</version>
</plugin>
<plugin>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.22.1</version>
</plugin>
<plugin>
<artifactId>maven-war-plugin</artifactId>
<version>3.2.2</version>
</plugin>
<plugin>
<artifactId>maven-install-plugin</artifactId>
<version>2.5.2</version>
</plugin>
<plugin>
<artifactId>maven-deploy-plugin</artifactId>
<version>2.8.2</version>
</plugin>
</plugins>
</pluginManagement>
<resources>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.xml</include>
</includes>
<filtering>true</filtering>
</resource>
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering>
</resource>
</resources>
</build>
</project>
七、配置框架模块pom.xml以及springmvc、mybabit框架配置信息
1、pom.xml
<?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>vlm_parent</artifactId>
<groupId>com.vlm.system</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>

<artifactId>vlm_frame</artifactId>
<packaging>jar</packaging>
<properties>
<!-- spring版本号 -->
<spring.version>4.3.9.RELEASE</spring.version>
<!-- mybatis版本号 -->
<mybatis.version>3.2.6</mybatis.version>
</properties>

<dependencies>
<!-- spring begin -->
<!--1)spring核心依赖-->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>${spring.version}</version>
</dependency>
<!--spring ioc依赖 -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-beans</artifactId>
<version>${spring.version}</version>
</dependency>
<!--spring 扩展依赖 -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>${spring.version}</version>
</dependency>
<!--2)spring dao层依赖-->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-tx</artifactId>
<version>${spring.version}</version>
</dependency>
<!--3)spring web相关依赖 -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>${spring.version}</version>
</dependency>
<!--4) spring 切面依赖 -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-aop</artifactId>
<version>${spring.version}</version>
</dependency>
<!--4) spring test相关依赖 -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-orm</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-expression</artifactId>
<scope>compile</scope>
<version>${spring.version}</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.springframework/spring-aspects -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-aspects</artifactId>
<version>${spring.version}</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.springframework/spring-context-support -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context-support</artifactId>
<version>${spring.version}</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.springframework/spring-instrument -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-instrument</artifactId>
<version>${spring.version}</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.springframework/spring-instrument-tomcat -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-instrument-tomcat</artifactId>
<version>${spring.version}</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.springframework/spring-jms -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jms</artifactId>
<version>${spring.version}</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.springframework/spring-jms -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jms</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-oxm</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-websocket</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc-portlet</artifactId>
<version>${spring.version}</version>
</dependency>
<!-- mybabit包-->
<!-- https://mvnrepository.com/artifact/org.mybatis/mybatis -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.4.1</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.mybatis/mybatis-spring -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>1.3.0</version>
</dependency>



<dependency>
<groupId>commons-beanutils</groupId>
<artifactId>commons-beanutils</artifactId>
<version>1.8.3</version>
</dependency>
<dependency>
<groupId>commons-collections</groupId>
<artifactId>commons-collections</artifactId>
<version>3.2.1</version>
</dependency>
<dependency>
<groupId>commons-dbcp</groupId>
<artifactId>commons-dbcp</artifactId>
<version>1.4</version>
</dependency>
<dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
<version>1.3.1</version>
</dependency>
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.5</version>
</dependency>
<dependency>
<groupId>commons-lang</groupId>
<artifactId>commons-lang</artifactId>
<version>2.6</version>
</dependency>
<dependency>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
<version>1.1.1</version>
</dependency>
<dependency>
<groupId>commons-pool</groupId>
<artifactId>commons-pool</artifactId>
<version>1.6</version>
</dependency>
<!-- 其他包-->
<dependency>
<groupId>org.antlr</groupId>
<artifactId>antlr-runtime</artifactId>
<version>3.4</version>
</dependency>

<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjweaver</artifactId>
<version>1.8.9</version>
</dependency>
<dependency>
<groupId>c3p0</groupId>
<artifactId>c3p0</artifactId>
<version>0.9.1.2</version>
</dependency>

<dependency>
<groupId>net.sf.ezmorph</groupId>
<artifactId>ezmorph</artifactId>
<version>1.0.3</version>
</dependency>
<!-- json架包 -->
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-annotations</artifactId>
<version>2.7.4</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
<version>2.7.4</version>
</dependency>
<dependency>
<groupId>org.codehaus.jackson</groupId>
<artifactId>jackson-core-asl</artifactId>
<version>1.8.8</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.7.4</version>
</dependency>
<dependency>
<groupId>org.codehaus.jackson</groupId>
<artifactId>jackson-mapper-asl</artifactId>
<version>1.8.8</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.module</groupId>
<artifactId>jackson-module-jaxb-annotations</artifactId>
<version>2.2.1</version>
</dependency>
<dependency>
<groupId>net.sf.json-lib</groupId>
<artifactId>json-lib</artifactId>
<version>2.4</version>
<classifier>jdk15</classifier>
</dependency>
<dependency>
<groupId>jstl</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>

<!--mysql链接架包-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.16</version>
</dependency>
<dependency>
<groupId>de.regnis.q.sequence</groupId>
<artifactId>sequence-library</artifactId>
<version>1.0.3</version>
</dependency>
<dependency>
<groupId>org.tmatesoft.sqljet</groupId>
<artifactId>sqljet</artifactId>
<version>1.1.11</version>
</dependency>
</dependencies>
</project>

2、springMvc_servlet.xml
<?xml version="1.0" encoding="UTF-8"?>
<!-- 引用spring的对个Schema空间的格式定义文件 -->
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:p="http://www.springframework.org/schema/p"
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"
xmlns:tx="http://www.springframework.org/schema/tx"
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-4.3.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc-4.3.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx-4.3.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-4.3.xsd">

<context:component-scan base-package="com.**.controller"/>
<context:component-scan base-package="com.**.dao"/>
<context:component-scan base-package="com.**.service"/>

<!-- <mvc:default-servlet-handler /> -->
<!-- <mvc:annotation-driven /> -->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver" id="internalResourceViewResolver">
<property name="prefix" value="/WEB-INF/ui/" />
<property name="suffix" value=".jsp" />
</bean>
<!-- <bean id="mappingJacksonHttpMessageConverter" -->
<!--> -->
<!-- <property name="supportedMediaTypes"> -->
<!-- <list> -->
<!-- <value>text/html;charset=UTF-8</value> -->
<!-- </list> -->
<!-- </property> -->
<!-- </bean> -->
<!-- <mvc:annotation-driven> -->
<!-- <mvc:message-converters register-defaults="true"> -->
<!-- <beanp:supportedMediaTypes="*/*" /> -->
<!-- </mvc:message-converters> -->
<!-- </mvc:annotation-driven> -->
<bean id="mappingJacksonHttpMessageConverter" class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">
<property name="supportedMediaTypes">
<list>
<value>application/json;charset=UTF-8</value>
<value>text/html;charset=UTF-8</value>
</list>
</property>
</bean>
<bean id="byteArrayHttpMessageConverter" class="org.springframework.http.converter.ByteArrayHttpMessageConverter"/>
<!-- 启动Spring MVC的注解功能,完成请求和注解POJO的映射 -->
<bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">
<property name="messageConverters">
<list>
<ref bean="byteArrayHttpMessageConverter"/>
<ref bean="mappingJacksonHttpMessageConverter" /><!-- json转换器 -->
</list>
</property>
</bean>


<!-- 引入配置文件 -->
<bean id="propertyConfigurer"
class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="location" value="classpath:jdbc.properties" />
</bean>
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"
destroy-method="close">
<property name="driverClassName" value="${driver}" />
<property name="url" value="${url}" />
<property name="username" value="${username}" />
<property name="password" value="${password}" />
<!-- 初始化连接大小 -->
<property name="initialSize" value="${initialSize}"></property>
<!-- 连接池最大数量 -->
<property name="maxActive" value="${maxActive}"></property>
<!-- 连接池最大空闲 -->
<property name="maxIdle" value="${maxIdle}"></property>
<!-- 连接池最小空闲 -->
<property name="minIdle" value="${minIdle}"></property>
<!-- 获取连接最大等待时间 -->
<property name="maxWait" value="${maxWait}"></property>
</bean>

<!-- 扫描配置文件 -->
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource"></property>
<property name="configLocation" value="classpath:mybatis-config.xml"></property>
<property name="mapperLocations" value="classpath:com/**/mapper/*.xml"></property>
</bean>
<!-- 扫描mapper.java -->
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="basePackage" value="com.**.dao" />
<property name="sqlSessionFactoryBeanName" value="sqlSessionFactory" />
</bean>





<!-- 配置事务管理器 -->
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource" />
</bean>

<!-- 注解方式配置事物 -->
<!-- <tx:annotation-driven transaction-manager="transactionManager" /> -->

<!-- 拦截器方式配置事物 -->
<tx:advice id="transactionAdvice" transaction-manager="transactionManager">
<tx:attributes>
<tx:method name="add*" propagation="REQUIRED" />
<tx:method name="append*" propagation="REQUIRED" />
<tx:method name="insert*" propagation="REQUIRED" />
<tx:method name="save*" propagation="REQUIRED" />
<tx:method name="update*" propagation="REQUIRED" />
<tx:method name="modify*" propagation="REQUIRED" />
<tx:method name="edit*" propagation="REQUIRED" />
<tx:method name="delete*" propagation="REQUIRED" />
<tx:method name="remove*" propagation="REQUIRED" />
<tx:method name="repair" propagation="REQUIRED" />
<tx:method name="delAndRepair" propagation="REQUIRED" />

<tx:method name="get*" propagation="SUPPORTS" />
<tx:method name="find*" propagation="SUPPORTS" />
<tx:method name="load*" propagation="SUPPORTS" />
<tx:method name="search*" propagation="SUPPORTS" />
<tx:method name="datagrid*" propagation="SUPPORTS" />

<tx:method name="*" propagation="SUPPORTS" />
</tx:attributes>
</tx:advice>
<!--切入的Bean -->
<!--前置增强切入的Bean -->
<!-- <bean id="beforeAdd"/> -->
<aop:config>
<aop:pointcut id="transactionPointcut" expression="execution(* com.*.service..*Impl.*(..))" />
<aop:advisor pointcut-ref="transactionPointcut" advice-ref="transactionAdvice" />
</aop:config>


<!-- 拦截器判断用户登陆是否超时 -->
<!-- <mvc:interceptors>
<mvc:interceptor>
&lt;!&ndash; 拦截所有的请求,这个必须写在前面,也就是写在【不拦截】的上面 &ndash;&gt;
<mvc:mapping path="/**" />
&lt;!&ndash; 但是排除下面这些,也就是不拦截请求 &ndash;&gt;
<mvc:exclude-mapping path="/user/login.do"/>
<mvc:exclude-mapping path="/user/regist.do"/>
<mvc:exclude-mapping path="/*/goTo*.do"/>
<bean/>
</mvc:interceptor>
</mvc:interceptors>-->
<!-- 配置druid监控spring jdbc -->
<!-- <bean id="druid-stat-interceptor">
</bean>
<bean id="druid-stat-pointcut"scope="prototype">
<property name="patterns">
<list>
<value>com.powervice.*</value>
</list>
</property>
</bean>
<aop:config>
<aop:advisor advice-ref="druid-stat-interceptor" pointcut-ref="druid-stat-pointcut" />
</aop:config> -->
</beans>
3、mybabit_config.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<settings>
<!-- 打印查询语句 -->
<setting name="logImpl" value="STDOUT_LOGGING" />
</settings>
</configuration>
4、log4j.properties
# rootLogger参数分别为:根Logger级别,输出器stdout,输出器log
#log4j.rootLogger = info,stdout,log

# 输出信息到控制台
#log4j.appender.stdout = org.apache.log4j.ConsoleAppender
#log4j.appender.stdout.layout = org.apache.log4j.PatternLayout
#log4j.appender.stdout.layout.ConversionPattern = %d [%-5p] %l %rms: %m%n

# 输出DEBUG级别以上的日志到D://logs/debug.log
#log4j.appender.log = org.apache.log4j.DailyRollingFileAppender
#log4j.appender.log.DatePattern = ''.''yyyy-MM-dd
#log4j.appender.log.File = D://debug.log
#log4j.appender.log.Encoding = UTF-8
#log4j.appender.log.Threshold = INFO
#log4j.appender.log.layout = org.apache.log4j.PatternLayout
#log4j.appender.log.layout.ConversionPattern = %d [%-5p] (%c.%t): %m%n
log4j.rootLogger= INFO,stdout,E

log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.Threshold=INFO
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern =%d [%-5p] (%c): %m%n



log4j.appender.D1 = org.apache.log4j.DailyRollingFileAppender
log4j.appender.D1.File = ${springLog.root}/WEB-INF/logs/error.log
log4j.appender.D1.Append = true
log4j.appender.D1.Threshold = ALL
log4j.appender.D1.layout = org.apache.log4j.PatternLayout
log4j.appender.D1.layout.ConversionPattern = %d [%-5p] (%c): %m%n


log4j.appender.E = org.apache.log4j.DailyRollingFileAppender
log4j.appender.E.File = ${springLog.root}/WEB-INF/logs/taskproject.log
log4j.appender.E.Append = true
log4j.appender.E.Threshold = INFO
log4j.appender.E.layout = org.apache.log4j.PatternLayout
log4j.appender.E.layout.ConversionPattern =%d [%-5p] (%c)\: %m%n
5、jdbc.properties
driver=com.mysql.jdbc.Driver
url=jdbc\:mysql\://localhost\:3306/taskms?allowMultiQueries=true
username=root
password=root
initialSize=0
maxActive=20
maxIdle=20
minIdle=1
maxWait=60000

七、配置vlm_common工具模块pom.xml
1pom.xml
<?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>vlm_parent</artifactId>
<groupId>com.vlm.system</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<packaging>jar</packaging>
<artifactId>vlm_common</artifactId>
<dependencies>
<dependency>
<groupId>com.vlm.system</groupId>
<artifactId>vlm_frame</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
</dependencies>

</project>
八、vlm_web模块pom.xmlweb.xml信息
1、pom.xml
<?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>vlm_parent</artifactId>
<groupId>com.vlm.system</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<packaging>war</packaging>
<artifactId>vlm_web</artifactId>
<dependencies>
<dependency>
<groupId>com.vlm.system</groupId>
<artifactId>vlm_frame</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
</dependencies>

</project>
2、web.xlm信息
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
version="4.0">
<display-name>Archetype Created Web Application</display-name>
<!-- <welcome-file-list>
<welcome-file>/WEB-INF/jsp/user/userLogin.jsp</welcome-file>
</welcome-file-list>-->
<welcome-file-list>
<welcome-file>/index.jsp</welcome-file>
</welcome-file-list>
<!-- log4j日志配置 -->
<!-- 路径变量值(是服务器的路径) -->
<context-param>
<param-name>webAppRootKey</param-name>
<param-value>springLog.root</param-value>
</context-param>
<!-- log4j配置文件 -->
<context-param>
<param-name>log4jConfigLocation</param-name>
<param-value>classpath:log4j.properties</param-value>
</context-param>

<context-param>
<!-- 日志页面的刷新间隔 -->
<param-name>log4jRefreshInterval</param-name>
<param-value>6000</param-value>
</context-param>
<!-- 设置日志监听 -->
<listener>
<listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
</listener>
<filter>
<filter-name>CharacterEncodingFilter</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>CharacterEncodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<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:springMvc-servlet.xml</param-value>
</init-param>
<load-on-startup>2</load-on-startup>
</servlet>
<!-- spring mvc处理的url -->
<servlet-mapping>
<servlet-name>springMvc</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
<session-config>
<session-timeout>60</session-timeout>
</session-config>
</web-app>
九、vlm_module1、vlm_module2 pom.xml

<?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>vlm_parent</artifactId>
<groupId>com.vlm.system</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>

<artifactId>vlm_module1</artifactId>
<dependencies>
<dependency>
<groupId>com.vlm.system</groupId>
<artifactId>vlm_common</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
</dependencies>

</project>

Idea SpringMVC+Spring+MyBatis+Maven 调整

Idea SpringMVC+Spring+MyBatis+Maven 调整

创建项目

File-New Project

选中左侧的 Maven,选中右侧上方的 Create from archetype,然后选中下方列表中的 webapp,然后点击 Next

 

在 GroupId 和 ArtifactId 中填入指定内容,点击 Next

直接点 Next

 

输入项目名称,Finish

 

Idea 会自动开始下载所依赖的包,等待其完成。

 

项目结构

 

项目刚建好的时候是没有这些文件的,所以自己手动创建缺少的文件夹(包)

创建完后的项目框架:

 

修改 pom.xml 导入依赖包插件

依赖包需要如下:

spring framework
aspectj 事务
c3p0 数据源
servlet/jsp api
junit4
mybatis
mybatis spring 整合
mysql driver

jstl

 

 

<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/maven-v4_0_0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>com.elin4it.ssm</groupId>
    <artifactId>ssm</artifactId>
    <packaging>war</packaging>
    <version>1.0-SNAPSHOT</version>
    <name>ssm Maven Webapp</name>
    <url>http://maven.apache.org</url>
    <build>
        <finalName>ssm</finalName>
        <plugins>
            <!--mybatis 逆向工程插件-->
            <plugin>
                <groupId>org.mybatis.generator</groupId>
                <artifactId>mybatis-generator-maven-plugin</artifactId>
                <version>1.3.2</version>
                <configuration>
                    <verbose>true</verbose>
                    <overwrite>true</overwrite>
                </configuration>
            </plugin>
        </plugins>
    </build>
    <properties>
        <spring.version>4.1.1.RELEASE</spring.version>
    </properties>
    <dependencies>
        <!-- springframe start -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-core</artifactId>
            <version>${spring.version}</version>
        </dependency>

        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-web</artifactId>
            <version>${spring.version}</version>
        </dependency>

        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-oxm</artifactId>
            <version>${spring.version}</version>
        </dependency>

        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-tx</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-aop</artifactId>
            <version>${spring.version}</version>
        </dependency>

        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context-support</artifactId>
            <version>${spring.version}</version>
        </dependency>

        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-test</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <!-- springframe end -->

        <!--aspectj start-->
        <dependency>
            <groupId>org.aspectj</groupId>
            <artifactId>aspectjweaver</artifactId>
            <version>1.8.6</version>
        </dependency>

        <dependency>
            <groupId>org.aspectj</groupId>
            <artifactId>aspectjrt</artifactId>
            <version>1.8.6</version>
        </dependency>
        <!--aspectj end-->

        <!--c3p0-->
        <dependency>
            <groupId>com.mchange</groupId>
            <artifactId>c3p0</artifactId>
            <version>0.9.5.1</version>
        </dependency>

        <!--servlet/jsp api start-->
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>servlet-api</artifactId>
            <version>2.5</version>
        </dependency>

        <dependency>
            <groupId>javax.servlet.jsp</groupId>
            <artifactId>jsp-api</artifactId>
            <version>2.1</version>
            <scope>provided</scope>
        </dependency>
        <!--servlet/jsp api end-->

        <!--junit4-->
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.11</version>
            <scope>test</scope>
        </dependency>

        <!--mybatis-->
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.3.0</version>
        </dependency>
        <!--mybatis spring整合-->
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis-spring</artifactId>
            <version>1.2.3</version>
        </dependency>

        <!--mysql driver-->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.6</version>
        </dependency>

        <!--jstl-->
        <dependency>
            <groupId>jstl</groupId>
            <artifactId>jstl</artifactId>
            <version>1.2</version>
        </dependency>

    </dependencies>
</project>

 

 

 

插件需要用到 mybatis 的逆向工程

 

完整的 pom.xml 代码清单:

 

 

使用 mybatis 逆向工程创建 mapper 接口和 xml 文件

user 表结构

 

DROP TABLE IF EXISTS `user`;
/*!40101 SET @saved_cs_client     = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `user` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `username` varchar(32) NOT NULL COMMENT ''用户名称'',
  `birthday` date DEFAULT NULL COMMENT ''生日'',
  `sex` char(1) DEFAULT NULL COMMENT ''性别'',
  `address` varchar(256) DEFAULT NULL COMMENT ''地址'',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=27 DEFAULT CHARSET=utf8;


在 main/resources 中创建 generatorConfig.xml 文件

 

generatorConfig.xml 代码清单

 

<?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="F:\jar\mysql\mysql-connector-java-5.1.7-bin.jar"/>
    <context id="testTables" targetRuntime="MyBatis3" >
        <commentGenerator>
            <!-- 是否去除自动生成的注释 true:是 : false:否 -->
            <property name="suppressAllComments" value="true" />
        </commentGenerator>
        <!--数据库连接的信息:驱动类、连接地址、用户名、密码 -->
        <!--<jdbcConnection driver-->
                        <!--connectionURL="${jdbc.url}"-->
                        <!--userId="${jdbc.username}"-->
                        <!--password="${jdbc.password}">-->
        <!--</jdbcConnection>-->
        <jdbcConnection driverClass="com.mysql.jdbc.Driver"
            connectionURL="jdbc:mysql://127.0.0.1:3306/mybatis?characterEncoding=UTF-8"
            userId="root"
            password="">
        </jdbcConnection>

        <!-- 默认false,把JDBC DECIMAL 和 NUMERIC 类型解析为 Integer,为 true时把JDBC DECIMAL 和
            NUMERIC 类型解析为java.math.BigDecimal -->
        <javaTypeResolver>
            <property name="forceBigDecimals" value="false" />
        </javaTypeResolver>

        <!-- targetProject:生成PO类的位置 -->
        <javaModelGenerator targetPackage="com.elin4it.springmvcMaven.pojo"
                            targetProject="src\main\java">
            <!-- enableSubPackages:是否让schema作为包的后缀 -->
            <property name="enableSubPackages" value="false" />
            <!-- 从数据库返回的值被清理前后的空格 -->
            <property name="trimStrings" value="true" />
        </javaModelGenerator>
        <!-- targetProject:mapper映射文件生成的位置 -->
        <sqlMapGenerator targetPackage="com.elin4it.springmvcMaven.mapper"
                         targetProject="src\main\resources">
            <!-- enableSubPackages:是否让schema作为包的后缀 -->
            <property name="enableSubPackages" value="false" />
        </sqlMapGenerator>
        <!-- targetPackage:mapper接口生成的位置 -->
        <javaClientGenerator type="XMLMAPPER"
                             targetPackage="com.elin4it.springmvcMaven.mapper"
                             targetProject="src\main\java">
            <!-- enableSubPackages:是否让schema作为包的后缀 -->
            <property name="enableSubPackages" value="false" />
        </javaClientGenerator>
        <!-- 指定数据库表 -->
        <table tableName="user"></table>

        <!-- 有些表的字段需要指定java类型
         <table schema="" tableName="">
            <columnOverride column="" javaType="" />
        </table> -->
    </context>
</generatorConfiguration>


点击 idea 右侧的 maven 选项卡,选择其中的 mybatis-generator,点击顶部的绿色按钮运行

 

 

如果没有出错的话,应该会自动生成 mapper 接口文件、xml 文件、pojo 文件。

 

db.properties 文件

在 resources/config 中创建 db.properties,该文件用来描述 mysql 连接信息

 

jdbc.driver = com.mysql.jdbc.Driver
jdbc.url = jdbc:mysql://127.0.0.1:3306/mybatis?characterEncoding=UTF-8
jdbc.username = root
jdbc.password =

 

 

SqlMapConfig 文件

在 resources/config/mybatis 中创建 SqlMapConfig.xml 文件,该文件为 Mybatis 的配置文件,由于跟 spring 整合,所以一些基础配置文件都在 spring 中,在这里该文件中值需要写文件的框架

 

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
        PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-config.dtd">

<configuration>

</configuration>


 

 

SpringMVC 配置文件

在 resources/config/spring 中创建 springmvc.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">

       <!--自动扫描控制器-->
       <context:component-scan base-package="com.elin4it.ssm.controller"/>
       <!--视图渲染-->
       <bean id="internalResourceViewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
              <property name="prefix" value="/WEB-INF/views/"/>
              <property name="suffix" value=".jsp"/>
       </bean>
       <!--控制器映射器和控制器适配器-->
       <mvc:annotation-driven></mvc:annotation-driven>
</beans>

 

框架 / 平台构成:
Maven+Springmvc + Mybatis + Shiro(权限)+ Tiles(模板) +ActiveMQ(消息队列) + Rest(服务) + WebService(服务)+ EHcache(缓存) + Quartz(定时调度)+ Html5(支持 PC、IOS、Android)

用户权限系统:
组织结构:角色、用户、用户组、组织机构;权限点:页面、方法、按钮、数据权限、分级授权

项目管理新体验:
快速出原型系统、组件树、版本控制、模块移植、协同开发、实时监控、发布管理

可持续集成:
所有组件可移植、可定制、可扩充,开发成果不断积累,形成可持续发展的良性循环

支持平台平台: 
Windows XP、Windows 7 、Windows 10 、 Linux 、 Unix

服务器容器:
Tomcat 5/6/7 、Jetty、JBoss、WebSphere 8.5 

JEESZ通用版本分布式模块化开发平台 - zookeeperflume - zookeeperflume的博客

 

JEESZ通用版本分布式模块化开发平台 - zookeeperflume - zookeeperflume的博客

 

JEESZ通用版本分布式模块化开发平台 - zookeeperflume - zookeeperflume的博客

 

JEESZ通用版本分布式模块化开发平台 - zookeeperflume - zookeeperflume的博客

 

JEESZ通用版本分布式模块化开发平台 - zookeeperflume - zookeeperflume的博客

 

JEESZ通用版本分布式模块化开发平台 - zookeeperflume - zookeeperflume的博客

 

JEESZ通用版本分布式模块化开发平台 - zookeeperflume - zookeeperflume的博客

 

JEESZ通用版本分布式模块化开发平台 - zookeeperflume - zookeeperflume的博客

 JEESZ通用版本分布式模块化开发平台 - zookeeperflume - zookeeperflume的博客

 

JEESZ通用版本分布式模块化开发平台 - zookeeperflume - zookeeperflume的博客

 

JEESZ通用版本分布式模块化开发平台 - zookeeperflume - zookeeperflume的博客

 

JEESZ通用版本分布式模块化开发平台 - zookeeperflume - zookeeperflume的博客

 

JEESZ通用版本分布式模块化开发平台 - zookeeperflume - zookeeperflume的博客

 

JEESZ通用版本分布式模块化开发平台 - zookeeperflume - zookeeperflume的博客

 

JEESZ通用版本分布式模块化开发平台 - zookeeperflume - zookeeperflume的博客

 

JEESZ通用版本分布式模块化开发平台 - zookeeperflume - zookeeperflume的博客

 

JEESZ通用版本分布式模块化开发平台 - zookeeperflume - zookeeperflume的博客

 

JEESZ通用版本分布式模块化开发平台 - zookeeperflume - zookeeperflume的博客

 JEESZ通用版本分布式模块化开发平台 - zookeeperflume - zookeeperflume的博客

 

JEESZ通用版本分布式模块化开发平台 - zookeeperflume - zookeeperflume的博客

 

JEESZ通用版本分布式模块化开发平台 - zookeeperflume - zookeeperflume的博客

 

JEESZ通用版本分布式模块化开发平台 - zookeeperflume - zookeeperflume的博客

 

JEESZ通用版本分布式模块化开发平台 - zookeeperflume - zookeeperflume的博客

 

JEESZ通用版本分布式模块化开发平台 - zookeeperflume - zookeeperflume的博客

 

JEESZ通用版本分布式模块化开发平台 - zookeeperflume - zookeeperflume的博客

 

JEESZ通用版本分布式模块化开发平台 - zookeeperflume - zookeeperflume的博客

 

JEESZ通用版本分布式模块化开发平台 - zookeeperflume - zookeeperflume的博客

 

JEESZ通用版本分布式模块化开发平台 - zookeeperflume - zookeeperflume的博客

 JEESZ通用版本分布式模块化开发平台 - zookeeperflume - zookeeperflume的博客

 

JEESZ通用版本分布式模块化开发平台 - zookeeperflume - zookeeperflume的博客

 

JEESZ通用版本分布式模块化开发平台 - zookeeperflume - zookeeperflume的博客

 

JEESZ通用版本分布式模块化开发平台 - zookeeperflume - zookeeperflume的博客

 

JEESZ通用版本分布式模块化开发平台 - zookeeperflume - zookeeperflume的博客

 

JEESZ通用版本分布式模块化开发平台 - zookeeperflume - zookeeperflume的博客

 

JEESZ通用版本分布式模块化开发平台 - zookeeperflume - zookeeperflume的博客

 

JEESZ通用版本分布式模块化开发平台 - zookeeperflume - zookeeperflume的博客

 

JEESZ通用版本分布式模块化开发平台 - zookeeperflume - zookeeperflume的博客

 

JEESZ通用版本分布式模块化开发平台 - zookeeperflume - zookeeperflume的博客

 JEESZ通用版本分布式模块化开发平台 - zookeeperflume - zookeeperflume的博客

 

JEESZ通用版本分布式模块化开发平台 - zookeeperflume - zookeeperflume的博客

 

JEESZ通用版本分布式模块化开发平台 - zookeeperflume - zookeeperflume的博客

 

JEESZ通用版本分布式模块化开发平台 - zookeeperflume - zookeeperflume的博客

 

JEESZ通用版本分布式模块化开发平台 - zookeeperflume - zookeeperflume的博客

Idea SpringMVC+Spring+MyBatis+Maven 调整 【转】

Idea SpringMVC+Spring+MyBatis+Maven 调整 【转】

创建项目

File-New Project

选中左侧的 Maven,选中右侧上方的 Create from archetype,然后选中下方列表中的 webapp,然后点击 Next

 

 

在 GroupId 和 ArtifactId 中填入指定内容,点击 Next

直接点 Next

 

输入项目名称,Finish

 

Idea 会自动开始下载所依赖的包,等待其完成。

 

项目结构

 

项目刚建好的时候是没有这些文件的,所以自己手动创建缺少的文件夹(包)

创建完后的项目框架:

 

修改 pom.xml 导入依赖包插件

依赖包需要如下:

spring framework
aspectj 事务
c3p0 数据源
servlet/jsp api
junit4
mybatis
mybatis spring 整合
mysql driver

jstl

 

<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/maven-v4_0_0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>com.elin4it.ssm</groupId>
    <artifactId>ssm</artifactId>
    <packaging>war</packaging>
    <version>1.0-SNAPSHOT</version>
    <name>ssm Maven Webapp</name>
    <url>http://maven.apache.org</url>
    <build>
        <finalName>ssm</finalName>
        <plugins>
            <!--mybatis 逆向工程插件-->
            <plugin>
                <groupId>org.mybatis.generator</groupId>
                <artifactId>mybatis-generator-maven-plugin</artifactId>
                <version>1.3.2</version>
                <configuration>
                    <verbose>true</verbose>
                    <overwrite>true</overwrite>
                </configuration>
            </plugin>
        </plugins>
    </build>
    <properties>
        <spring.version>4.1.1.RELEASE</spring.version>
    </properties>
    <dependencies>
        <!-- springframe start -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-core</artifactId>
            <version>${spring.version}</version>
        </dependency>

        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-web</artifactId>
            <version>${spring.version}</version>
        </dependency>

        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-oxm</artifactId>
            <version>${spring.version}</version>
        </dependency>

        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-tx</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-aop</artifactId>
            <version>${spring.version}</version>
        </dependency>

        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context-support</artifactId>
            <version>${spring.version}</version>
        </dependency>

        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-test</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <!-- springframe end -->

        <!--aspectj start-->
        <dependency>
            <groupId>org.aspectj</groupId>
            <artifactId>aspectjweaver</artifactId>
            <version>1.8.6</version>
        </dependency>

        <dependency>
            <groupId>org.aspectj</groupId>
            <artifactId>aspectjrt</artifactId>
            <version>1.8.6</version>
        </dependency>
        <!--aspectj end-->

        <!--c3p0-->
        <dependency>
            <groupId>com.mchange</groupId>
            <artifactId>c3p0</artifactId>
            <version>0.9.5.1</version>
        </dependency>

        <!--servlet/jsp api start-->
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>servlet-api</artifactId>
            <version>2.5</version>
        </dependency>

        <dependency>
            <groupId>javax.servlet.jsp</groupId>
            <artifactId>jsp-api</artifactId>
            <version>2.1</version>
            <scope>provided</scope>
        </dependency>
        <!--servlet/jsp api end-->

        <!--junit4-->
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.11</version>
            <scope>test</scope>
        </dependency>

        <!--mybatis-->
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.3.0</version>
        </dependency>
        <!--mybatis spring整合-->
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis-spring</artifactId>
            <version>1.2.3</version>
        </dependency>

        <!--mysql driver-->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.6</version>
        </dependency>

        <!--jstl-->
        <dependency>
            <groupId>jstl</groupId>
            <artifactId>jstl</artifactId>
            <version>1.2</version>
        </dependency>

    </dependencies>
</project>

 

 

 

插件需要用到 mybatis 的逆向工程

 

完整的 pom.xml 代码清单:

 

 

使用 mybatis 逆向工程创建 mapper 接口和 xml 文件

user 表结构

 

DROP TABLE IF EXISTS `user`;
/*!40101 SET @saved_cs_client     = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `user` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `username` varchar(32) NOT NULL COMMENT ''用户名称'',
  `birthday` date DEFAULT NULL COMMENT ''生日'',
  `sex` char(1) DEFAULT NULL COMMENT ''性别'',
  `address` varchar(256) DEFAULT NULL COMMENT ''地址'',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=27 DEFAULT CHARSET=utf8;


在 main/resources 中创建 generatorConfig.xml 文件

 

generatorConfig.xml 代码清单

 

<?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="F:\jar\mysql\mysql-connector-java-5.1.7-bin.jar"/>
    <context id="testTables" targetRuntime="MyBatis3" >
        <commentGenerator>
            <!-- 是否去除自动生成的注释 true:是 : false:否 -->
            <property name="suppressAllComments" value="true" />
        </commentGenerator>
        <!--数据库连接的信息:驱动类、连接地址、用户名、密码 -->
        <!--<jdbcConnection driver-->
                        <!--connectionURL="${jdbc.url}"-->
                        <!--userId="${jdbc.username}"-->
                        <!--password="${jdbc.password}">-->
        <!--</jdbcConnection>-->
        <jdbcConnection driverClass="com.mysql.jdbc.Driver"
            connectionURL="jdbc:mysql://127.0.0.1:3306/mybatis?characterEncoding=UTF-8"
            userId="root"
            password="">
        </jdbcConnection>

        <!-- 默认false,把JDBC DECIMAL 和 NUMERIC 类型解析为 Integer,为 true时把JDBC DECIMAL 和
            NUMERIC 类型解析为java.math.BigDecimal -->
        <javaTypeResolver>
            <property name="forceBigDecimals" value="false" />
        </javaTypeResolver>

        <!-- targetProject:生成PO类的位置 -->
        <javaModelGenerator targetPackage="com.elin4it.springmvcMaven.pojo"
                            targetProject="src\main\java">
            <!-- enableSubPackages:是否让schema作为包的后缀 -->
            <property name="enableSubPackages" value="false" />
            <!-- 从数据库返回的值被清理前后的空格 -->
            <property name="trimStrings" value="true" />
        </javaModelGenerator>
        <!-- targetProject:mapper映射文件生成的位置 -->
        <sqlMapGenerator targetPackage="com.elin4it.springmvcMaven.mapper"
                         targetProject="src\main\resources">
            <!-- enableSubPackages:是否让schema作为包的后缀 -->
            <property name="enableSubPackages" value="false" />
        </sqlMapGenerator>
        <!-- targetPackage:mapper接口生成的位置 -->
        <javaClientGenerator type="XMLMAPPER"
                             targetPackage="com.elin4it.springmvcMaven.mapper"
                             targetProject="src\main\java">
            <!-- enableSubPackages:是否让schema作为包的后缀 -->
            <property name="enableSubPackages" value="false" />
        </javaClientGenerator>
        <!-- 指定数据库表 -->
        <table tableName="user"></table>

        <!-- 有些表的字段需要指定java类型
         <table schema="" tableName="">
            <columnOverride column="" javaType="" />
        </table> -->
    </context>
</generatorConfiguration>


点击 idea 右侧的 maven 选项卡,选择其中的 mybatis-generator,点击顶部的绿色按钮运行

 

 

如果没有出错的话,应该会自动生成 mapper 接口文件、xml 文件、pojo 文件。

 

db.properties 文件

在 resources/config 中创建 db.properties,该文件用来描述 mysql 连接信息

 

jdbc.driver = com.mysql.jdbc.Driver
jdbc.url = jdbc:mysql://127.0.0.1:3306/mybatis?characterEncoding=UTF-8
jdbc.username = root
jdbc.password =

 

 

SqlMapConfig 文件

在 resources/config/mybatis 中创建 SqlMapConfig.xml 文件,该文件为 Mybatis 的配置文件,由于跟 spring 整合,所以一些基础配置文件都在 spring 中,在这里该文件中值需要写文件的框架

 

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
        PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-config.dtd">

<configuration>

</configuration>


 

 

SpringMVC 配置文件

在 resources/config/spring 中创建 springmvc.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">

       <!--自动扫描控制器-->
       <context:component-scan base-package="com.elin4it.ssm.controller"/>
       <!--视图渲染-->
       <bean id="internalResourceViewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
              <property name="prefix" value="/WEB-INF/views/"/>
              <property name="suffix" value=".jsp"/>
       </bean>
       <!--控制器映射器和控制器适配器-->
       <mvc:annotation-driven></mvc:annotation-driven>
</beans>

 

框架 / 平台构成:
Maven+Springmvc + Mybatis + Shiro(权限)+ Tiles(模板) +ActiveMQ(消息队列) + Rest(服务) + WebService(服务)+ EHcache(缓存) + Quartz(定时调度)+ Html5(支持 PC、IOS、Android)

用户权限系统:
组织结构:角色、用户、用户组、组织机构;权限点:页面、方法、按钮、数据权限、分级授权

项目管理新体验:
快速出原型系统、组件树、版本控制、模块移植、协同开发、实时监控、发布管理

可持续集成:
所有组件可移植、可定制、可扩充,开发成果不断积累,形成可持续发展的良性循环

支持平台平台: 
Windows XP、Windows 7 、Windows 10 、 Linux 、 Unix

服务器容器:
Tomcat 5/6/7 、Jetty、JBoss、WebSphere 8.5 

JEESZ通用版本分布式模块化开发平台 - zookeeperflume - zookeeperflume的博客

 

JEESZ通用版本分布式模块化开发平台 - zookeeperflume - zookeeperflume的博客

 

JEESZ通用版本分布式模块化开发平台 - zookeeperflume - zookeeperflume的博客

 

JEESZ通用版本分布式模块化开发平台 - zookeeperflume - zookeeperflume的博客

 

JEESZ通用版本分布式模块化开发平台 - zookeeperflume - zookeeperflume的博客

 

JEESZ通用版本分布式模块化开发平台 - zookeeperflume - zookeeperflume的博客

 

JEESZ通用版本分布式模块化开发平台 - zookeeperflume - zookeeperflume的博客

 

JEESZ通用版本分布式模块化开发平台 - zookeeperflume - zookeeperflume的博客

 JEESZ通用版本分布式模块化开发平台 - zookeeperflume - zookeeperflume的博客

 

JEESZ通用版本分布式模块化开发平台 - zookeeperflume - zookeeperflume的博客

 

JEESZ通用版本分布式模块化开发平台 - zookeeperflume - zookeeperflume的博客

 

JEESZ通用版本分布式模块化开发平台 - zookeeperflume - zookeeperflume的博客

 

JEESZ通用版本分布式模块化开发平台 - zookeeperflume - zookeeperflume的博客

 

JEESZ通用版本分布式模块化开发平台 - zookeeperflume - zookeeperflume的博客

 

JEESZ通用版本分布式模块化开发平台 - zookeeperflume - zookeeperflume的博客

 

JEESZ通用版本分布式模块化开发平台 - zookeeperflume - zookeeperflume的博客

 

JEESZ通用版本分布式模块化开发平台 - zookeeperflume - zookeeperflume的博客

 

JEESZ通用版本分布式模块化开发平台 - zookeeperflume - zookeeperflume的博客

 JEESZ通用版本分布式模块化开发平台 - zookeeperflume - zookeeperflume的博客

 

JEESZ通用版本分布式模块化开发平台 - zookeeperflume - zookeeperflume的博客

 

JEESZ通用版本分布式模块化开发平台 - zookeeperflume - zookeeperflume的博客

 

JEESZ通用版本分布式模块化开发平台 - zookeeperflume - zookeeperflume的博客

 

JEESZ通用版本分布式模块化开发平台 - zookeeperflume - zookeeperflume的博客

 

JEESZ通用版本分布式模块化开发平台 - zookeeperflume - zookeeperflume的博客

 

JEESZ通用版本分布式模块化开发平台 - zookeeperflume - zookeeperflume的博客

 

JEESZ通用版本分布式模块化开发平台 - zookeeperflume - zookeeperflume的博客

 

JEESZ通用版本分布式模块化开发平台 - zookeeperflume - zookeeperflume的博客

 

JEESZ通用版本分布式模块化开发平台 - zookeeperflume - zookeeperflume的博客

 JEESZ通用版本分布式模块化开发平台 - zookeeperflume - zookeeperflume的博客

 

JEESZ通用版本分布式模块化开发平台 - zookeeperflume - zookeeperflume的博客

 

JEESZ通用版本分布式模块化开发平台 - zookeeperflume - zookeeperflume的博客

 

JEESZ通用版本分布式模块化开发平台 - zookeeperflume - zookeeperflume的博客

 

JEESZ通用版本分布式模块化开发平台 - zookeeperflume - zookeeperflume的博客

 

JEESZ通用版本分布式模块化开发平台 - zookeeperflume - zookeeperflume的博客

 

JEESZ通用版本分布式模块化开发平台 - zookeeperflume - zookeeperflume的博客

 

JEESZ通用版本分布式模块化开发平台 - zookeeperflume - zookeeperflume的博客

 

JEESZ通用版本分布式模块化开发平台 - zookeeperflume - zookeeperflume的博客

 

JEESZ通用版本分布式模块化开发平台 - zookeeperflume - zookeeperflume的博客

 JEESZ通用版本分布式模块化开发平台 - zookeeperflume - zookeeperflume的博客

 

JEESZ通用版本分布式模块化开发平台 - zookeeperflume - zookeeperflume的博客

 

JEESZ通用版本分布式模块化开发平台 - zookeeperflume - zookeeperflume的博客

 

JEESZ通用版本分布式模块化开发平台 - zookeeperflume - zookeeperflume的博客

 

JEESZ通用版本分布式模块化开发平台 - zookeeperflume - zookeeperflume的博客

IntelliJ IDEA + Maven 的多模块Spring MVC + Spring + Mybatis项目骨架

IntelliJ IDEA + Maven 的多模块Spring MVC + Spring + Mybatis项目骨架

点击上方 Java后端选择 设为星标

优质文章,及时送达


我想大多数做 Java 开发的同学对SSM框架的搭建已经都轻车熟路了,但是大家搭建的大多数是单模块的,网上也有非常多的例子,但是如何用maven去构建多module的ssm项目呢? 下面来手把手的,利用IntelliJ IDEA搭建一次多module的ssm项目,给大家一个参考。

为什么要搭建多模块的maven项目?

首先抛出这么一个问题,我们为什么要搭建多模块的maven项目呢?以多模块的方式组织项目,其实也是maven一直倡导的。做开发的同学都知道的一个概念就是“低耦合,高内聚”,将项目划分多模块,可以极大的增大代码的重用性,防止随着项目的增大,pom文件越来越臃肿。
对于一般的java项目我们一般是这么分层的:
  • dao层负责数据库的交互。
  • service层主要处理业务逻辑。
  • web层负责与客户端交互。
  • pojo层存放的是实体类。
  • common层存放我们常用的一些公用的工具类等。
  • 对应的,在一个项目中,我们会看到一些包名:
  • com.leeyom.ssm.dao
  • com.leeyom.ssm.service
  • com.leeyom.ssm.web
  • com.leeyom.ssm.common
  • com.leeyom.ssm.pojo

  • 这样整个项目的框架就清晰了,但随着项目的进行,你可能会遇到如下问题:
  • 这个应用可能需要有一个前台和一个后台管理端,你发现大部分dao,一些service,和大部分util是在两个应用中均可用。
  • pom.xml中的依赖列表越来越长以重用的,但是,由于目前只有一个项目(WAR),你不得不新建一个项目依赖这个WAR,这变得非常的恶心,因为在Maven中配置对WAR的依赖远不如依赖JAR那样简单明了,而且你根本不需要com.leeyom.ssm.web。有人修改了dao,提交到svn并且不小心导致build失败了,你在编写service的代码,发现编译不过,只能等那人把dao修复了,你才能继续进行,很多人都在修改,到后来你根本就不清楚哪个依赖是谁需要的,渐渐的,很多不必要的依赖被引入。甚至出现了一个依赖有多个版本存在。
  • build整个项目的时间越来越长,尽管你只是一直在web层工作,但你不得不build整个项目。
  • 某个模块,比如util,你只想让一些经验丰富的人来维护,可是,现在这种情况,每个开发者都能修改,这导致关键模块的代码质量不能达到你的要求。
  • 我们会发现,其实这里实际上没有遵守一个设计模式原则:“高内聚,低耦合”。虽然我们通过包名划分了层次,并且你还会说,这些包的依赖都是单向的,没有包的环依赖。这很好,但还不够,因为就构建层次来说,所有东西都被耦合在一起了。因此我们需要使用Maven划分模块。
    以上的讲解是参考:
    https://www.iteye.com/blog/juvenshun-305865

    项目结构

    项目整体目录

    
       
       
       

    ssm-demo
    ├── ssm-common -- 公共模块,主要存放一些工具类
    | ├── src
    | ├── pom.xml -- 打包方式:jar
    ├── ssm-dao -- 存放mybatis相关的mapper接口
    | ├── src
    | ├── pom.xml -- 打包方式:jar
    ├── ssm-pojo -- 存放实体类
    | ├── src
    | ├── pom.xml -- 打包方式:jar
    ├── ssm-service -- 存放业务逻辑类
    | ├── src
    | ├── pom.xml -- 打包方式:jar
    ├── ssm-web -- 存放前台页面,客户端交互相关的controller
    | ├── src
    | ├── pom.xml -- 打包方式:war
    ├── pom.xml --打包方式为pom,一些公用的依赖

    各模块的依赖关系

    Maven多模块项目创建

    1. 先创建一个空的maven项目(ssm-demo)作为父级项目,创建成功后,删除掉src目录! 保留 pom 文件。
    2. 在pom文件中添加公有的依赖,公有的依赖主要有:spring核心包、日志包、json包、apache工具包,点击查看完整的父级pom.xml。
    右击我们刚刚创建的父级项目ssm-demo,选择 new --> Module,创建ssm-common模块
    填写Artifactldssm-common:

    点击Finish,就可以建好ssm-common模块。
    打开ssm-common的pom.xml文件,添加该模块的打包方式为jar,不需要依赖其他的模块,也不需要继承父级的依赖,所以需要删掉parent标签段,完整的如下:

    <modelVersion>4.0.0</modelVersion>
    <groupId>com.leeyom.ssm</groupId>
    <artifactId>ssm-common</artifactId>
    <version>1.0-SNAPSHOT</version>
    <packaging>jar</packaging>
    <properties>
       <!--编译级别-->
       <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
       <maven.compiler.source>1.8</maven.compiler.source>
       <maven.compiler.target>1.8</maven.compiler.target>
       <maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion>
    </properties>

    完整源码地址在公众号 Java后端 后台回复「多模块」获取。
    由于该模块是共有的依赖的,也就是说其他的模块可能会用到,所以需要将他添加到父级pom的dependencies中去。
    1. 创建ssm-pojo模块,该模块主要存放实体类,不需要依赖其他的模块,处理方式和ssm-common大致相似。
    2. 创建ssm-dao模块,由于该模块需要跟数据库打交道,所以跟数据库相关的依赖,应该放到该模块的pom文件中,同时该模块依赖于ssm-pojo模块进行数据库实体映射,如下所示:
    
       
       
       

    <dependencies>
        <!--添加 ssm-pojo module依赖-->
        <dependency>
            <groupId>com.leeyom.ssm</groupId>
            <artifactId>ssm-pojo</artifactId>
            <version>1.0-SNAPSHOT</version>
        </dependency>

        <!-- mybatis核心包 -->
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>${mybatis.version}</version>
        </dependency>

        <!-- mybatis集成spring包 -->
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis-spring</artifactId>
            <version>${mybatis-spring.version}</version>
        </dependency>

        <!-- Mysql数据库链接jar包 -->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>${mysql-connector.version}</version>
            <scope>runtime</scope>
        </dependency>

        <!-- mybatis分页插件 -->
        <dependency>
            <groupId>com.github.pagehelper</groupId>
            <artifactId>pagehelper</artifactId>
            <version>${pagehelper.version}</version>
        </dependency>

        <!--阿里巴巴德鲁伊数据库连接池-->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid</artifactId>
            <version>${druid.version}</version>
        </dependency>
    </dependencies>

    3. 创建ssm-service模块,该模块主要用于处理业务逻辑,需要依赖ssm-dao模块和数据库打交道,同时还需要在此处继承父级的依赖,实现事务管理,自动装配等等:

    <parent>
            <artifactId>ssm</artifactId>
            <groupId>com.leeyom.ssm</groupId>
            <version>1.0-SNAPSHOT</version>
        </parent>
        <modelVersion>4.0.0</modelVersion>
        <artifactId>ssm-service</artifactId>
        <packaging>jar</packaging>

        <properties>
            <!--编译级别-->
            <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
            <maven.compiler.source>1.8</maven.compiler.source>
            <maven.compiler.target>1.8</maven.compiler.target>
            <maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion>
        </properties>

        <dependencies>
            <!--添加 ssm-dao module依赖-->
            <dependency>
                <groupId>com.leeyom.ssm</groupId>
                <artifactId>ssm-dao</artifactId>
                <version>1.0-SNAPSHOT</version>
            </dependency>
        </dependencies>

    
       
       
       

    4. 创建`ssm-web`,该模块主要的作用是处理http请求,所以servlet、jsp、文件上传组件包相关的依赖写在该模块的pom文件中,该模块主要跟客户端打交道,该模块需要依赖于`ssm-service`模块,该模块集成了所有的依赖,为什么这么说,可以什么理解:

    • ssm-web依赖于ssm-service。

    • ssm-service 继承了父级的pom,同时还依赖ssm-dao模块。

    • ssm-dao模块依赖于ssm-pojo。

    • 父级pom依赖ssm-common。


    SSM框架的整合

    通过上面搭建maven好的maven多模块项目的骨架,现在就可以开始ssm项目的整合了,我的开发环境和所用的三大框架的版本如下:
  • 开发环境是:
  • IntelliJ IDEA 2017.1
  • JDK 1.8.0_45
  • Tomcat 7
  • Maven 3.3.9
  • MySQL 5.7.16  
  • 三大框架版本:
  • Spring 4.1.7.RELEASE
  • Spring MVC 4.1.7.RELEASE
  • MyBatis 3.3.0
  • 核心配置文件:
  • Spring 与 mybatis 的整合
    所有的ssm整合配置项都是在ssm-web这个子模块下面进行配置,先来看一下ssm-web模块的目录结构:
    建立jdbc.properties数据库属性文件
    
       
       
       

    jdbc.url=jdbc:mysql://localhost:3306/ssm-demo?useUnicode=true&characterEncoding=utf8
    jdbc.username=root
    jdbc.password=root

    因为我们这边用的是阿里巴巴的德鲁伊数据库连接池,并不需要配置jdbc.driver,如果你用的是c3p0或者dbcp数据库连接池,是要配置jdbc.driver。
    创建spring-mybatis.xml核心配置文件
    该配置文件也是spring整合mybatis的核心配置文件,事务管理,数据源,自动扫描都是在这里配置,具体的详情,可以看配置文件里面的注释。
    
       
       
       

    <?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"
             xsi:schemaLocation="http://www.springframework.org/schema/beans
                              http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
                              http://www.springframework.org/schema/context
                              http://www.springframework.org/schema/context/spring-context-3.1.xsd"
    >

          <!-- 自动扫描 -->
          <context:component-scan base-package="com.leeyom"/>
          <!-- 引入配置文件 -->
          <bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
              <property name="location" value="classpath:jdbc.properties"/>
          </bean>
          <!--使用阿里巴巴的德鲁伊数据源-->
          <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource" init-method="init" destroy-method="close">
              <!-- 基本属性 url、user、password -->
              <property name="url" value="${jdbc.url}"/>
              <property name="username" value="${jdbc.username}"/>
              <property name="password" value="${jdbc.password}"/>
              <!-- 配置初始化大小、最小、最大 -->
              <property name="initialSize" value="1"/>
              <property name="minIdle" value="1"/>
              <property name="maxActive" value="20"/>
              <!-- 配置获取连接等待超时的时间 -->
              <property name="maxWait" value="60000"/>
              <!-- 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒 -->
              <property name="timeBetweenEvictionRunsMillis" value="60000"/>
              <!-- 配置一个连接在池中最小生存的时间,单位是毫秒 -->
              <property name="minEvictableIdleTimeMillis" value="300000"/>
              <property name="validationQuery" value="SELECT ''x''"/>
              <property name="testWhileIdle" value="true"/>
              <property name="testOnBorrow" value="false"/>
              <property name="testOnReturn" value="false"/>
              <!-- 打开PSCache,并且指定每个连接上PSCache的大小 -->
              <property name="poolPreparedStatements" value="true"/>
              <property name="maxPoolPreparedStatementPerConnectionSize" value="20"/>
              <!-- 配置监控统计拦截的filters -->
              <property name="filters" value="stat"/>
          </bean>
          <!-- spring和MyBatis整合 -->
          <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
              <property name="dataSource" ref="dataSource"/>
              <!--mybatis分页插件-->
              <property name="configLocation" value="classpath:spring/mybatis-config.xml"></property>
              <!-- 自动扫描mapping.xml文件 -->
              <property name="mapperLocations" value="classpath:mapper/*.xml"></property>
          </bean>
          <!-- DAO接口所在包名,Spring会自动查找其下的类 -->
          <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
              <property name="basePackage" value="com.leeyom.dao"/>
              <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"></property>
          </bean>
          <!-- 事务管理 -->
          <bean id="transactionManager"
               class="org.springframework.jdbc.datasource.DataSourceTransactionManager">

              <property name="dataSource" ref="dataSource"/>
          </bean>
          <tx:annotation-driven />
      </beans>


    创建mybatis-config.xml分页插件配置文件
    mybatis分页插件PaheHelper是一个非常好用的分页插件,也可以通过配置文件的形式整合到mybatis中,具体怎么使用可以参考我以前写的文章:mybatis 分页插件PageHelper使用及总结。
    http://www.leeyom.top/2016/12/05/tech-mybatis-pagehelper/
    具体的配置如下:
    
       
       
       

    <?xml version="1.0" encoding="UTF-8" ?>
    <!DOCTYPE configuration
    PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
    "http://mybatis.org/dtd/mybatis-3-config.dtd">

    <configuration>
        <settings>
            <setting name="mapUnderscoreToCamelCase" value="true" />
        </settings>
        <!-- 配置分页插件 -->
        <plugins>
            <plugin interceptor="com.github.pagehelper.PageHelper">
                <!-- 指定数据库方言 -->
                <property name="dialect" value="mysql" />
            </plugin>
        </plugins>
    </configuration>


    创建Log4j日志
    为了方便查看控制台打印的日志,需要配置log4j日志配置文件:
    
       
       
       

    #定义LOG输出级别
    log4j.rootLogger=INFO,Console,File
    #定义日志输出目的地为控制台
    log4j.appender.Console=org.apache.log4j.ConsoleAppender
    log4j.appender.Console.Target=System.out
    #可以灵活地指定日志输出格式,下面一行是指定具体的格式
    log4j.appender.Console.layout=org.apache.log4j.PatternLayout
    log4j.appender.Console.layout.ConversionPattern=[%c] - %m%n
    #文件大小到达指定尺寸的时候产生一个新的文件
    log4j.appender.File=org.apache.log4j.RollingFileAppender
    #指定输出目录
    log4j.appender.File.File=${catalina.home}/logs/ssm.log
    #定义文件最大大小
    log4j.appender.File.MaxFileSize=10MB
    #输出所以日志,如果换成DEBUG表示输出DEBUG以上级别日志
    log4j.appender.File.Threshold=ALL
    log4j.appender.File.layout=org.apache.log4j.PatternLayout
    log4j.appender.File.layout.ConversionPattern=[%p] [%d{yyyy-MM-dd HH\:mm\:ss}][%c]%m%n

    测试spring与mybatis的整合情况
    创建测试表t_user,表结构如下:
    
       
       
       

    DROP TABLE IF EXISTS `t_user`;
    CREATE TABLE `t_user` (
      `u_id` int(100) NOT NULL AUTO_INCREMENT,
      `u_name` varchar(100) DEFAULT NULL,
      `u_password` varchar(100) DEFAULT NULL,
      PRIMARY KEY (`u_id`)
    ) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8;
    SET FOREIGN_KEY_CHECKS = 1;


    再往该表中随便插入两条条数据:
    
       
       
       

    INSERT INTO `t_user` VALUES (''1'', ''leeyom'', ''root''), (''2'', ''小明'', ''admin'');


    利用mybatis-generator生成UserMapper.java、User.java、UserMapper.xml等相关的文件。文件是生成了,但是得放到对的位置,UserMapper.java放到ssm-dao模块下面,因为该层主要跟数据库进行交互,所以,dao层的接口文件就是放在该模块下面。User.java放到ssm-pojo模块下面,该模块主要存放实体类的bean,而UserMapper.xml文件则放在ssm-web模块的resources资源目录下面的mapper文件夹下面,放在此模块下面的原因是,该映射文件将打包一起部署到web服务器上面,如果放到ssm-dao模块,ssm-dao的打包方式是jar,到时候会出现引用到不该数据库映射文件。
    最后我们还需要在ssm-service模块创建接口类UserService.java
    
       
       
       

    package com.leeyom.service.user;
    import com.leeyom.pojo.User;
    public interface UserService {
        public User getUserById(Integer userId);
    }


    接口的实现类UserServiceImpl.java
    
       
       
       

    package com.leeyom.service.user.impl;
    import com.leeyom.dao.user.UserMapper;
    import com.leeyom.pojo.User;
    import com.leeyom.service.user.UserService;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.stereotype.Service;
    @Service("userService")
    public class UserServiceImpl implements UserService {
        @Autowired
        UserMapper userMapper;
        @Override
        public User getUserById(Integer userId) {
            return userMapper.selectByPrimaryKey(userId);
        }
    }


    整个的目录如下:

    下面进行测试,在ssm-web模块的的test/java目录下面,新建测试类TestMybatis.java
    
       
       
       

    import com.leeyom.pojo.User;
    import com.leeyom.service.user.UserService;
    import org.junit.Before;
    import org.junit.Test;
    import org.springframework.context.ApplicationContext;
    import org.springframework.context.support.ClassPathXmlApplicationContext;
    public class TestMybatis {
        private ApplicationContext ac = null;
        private UserService userService = null;
        @Before
        public void before() {
            ac = new ClassPathXmlApplicationContext("classpath:spring/spring-mybatis.xml");
            userService = (UserService) ac.getBean("userService");
        }
        @Test
        public void testMybtis() {
            User user = userService.getUserById(1);
            System.out.println(user.getuName() + "------>" + user.getuPassword());
        }
    }

    如果打印信息如下,说明是spring与mybatis整合成功

    那其实现在就有个问题,为什么ssm-service模块可以调用到ssm-dao模块呢?这就是我们之前说的,模块之间的依赖的关系,因为ssm-service的pom文件中有依赖到ssm-dao模块,所以在ssm-service模块可以调用到ssm-dao中的类,这也就验证了我们之前的各模块的依赖关系图。

    整合Spring mvc

    spring 与 mybatis已经整合完毕,接下来Spring mvc的整合。
    创建spring-mvc.xml配置文件
    该配置文件的存放路径依旧是ssm-web模块的资源文件夹resources/spring下面,主要的内容如下:

    <?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">


        <!-- 自动装配 -->
        <context:component-scan base-package="com.leeyom.controller" use-default-filters="false">
            <context:include-filter type="annotation" expression="org.springframework.stereotype.Controller"/>
            <context:include-filter type="annotation" expression="org.springframework.web.bind.annotation.ControllerAdvice"/>
        </context:component-scan>

        <!--视图解析器-->
        <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
            <!--前缀-->
            <property name="prefix" value="/WEB-INF/"/>
            <!--后缀-->
            <property name="suffix" value=".jsp"></property>
        </bean>

        <!-- 文件上传 -->
        <bean id="multipartResolver"
              class="org.springframework.web.multipart.commons.CommonsMultipartResolver">

            <!-- 默认编码 -->
            <property name="defaultEncoding" value="utf-8"/>
            <!-- 文件大小最大值 -->
            <property name="maxUploadSize" value="10485760000"/>
            <!-- 内存中的最大值 -->
            <property name="maxInMemorySize" value="40960"/>
        </bean>

        <!--启用该标签代表 spring mvc 不拦截css、js、jpg等相关的静态资源-->
        <mvc:default-servlet-handler/>

        <!-- 启用spring mvc 注解 -->
        <mvc:annotation-driven></mvc:annotation-driven>
    </beans>


    配置ssm-web模块下面的web.xml文件
    千万别忘记配置web.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_3_0.xsd"
             version="3.0">

        <display-name>Archetype Created Web Application</display-name>
        <!-- Spring和mybatis的配置文件 -->
        <context-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>classpath:spring/spring-mybatis.xml</param-value>
        </context-param>
        <!-- 编码过滤器 -->
        <filter>
            <filter-name>encodingFilter</filter-name>
            <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
            <async-supported>true</async-supported>
            <init-param>
                <param-name>encoding</param-name>
                <param-value>UTF-8</param-value>
            </init-param>
        </filter>
        <filter-mapping>
            <filter-name>encodingFilter</filter-name>
            <url-pattern>/*</url-pattern>
        </filter-mapping>

        <!-- Spring监听器 -->
        <listener>
            <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
        </listener>

        <!-- 防止Spring内存溢出监听器 -->
        <listener>
            <listener-class>org.springframework.web.util.IntrospectorCleanupListener</listener-class>
        </listener>

        <!-- 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/spring-mvc.xml</param-value>
            </init-param>
            <load-on-startup>1</load-on-startup>
            <async-supported>true</async-supported>
        </servlet>
        <servlet-mapping>
            <servlet-name>SpringMVC</servlet-name>
            <url-pattern>/</url-pattern>
        </servlet-mapping>
        <welcome-file-list>
            <welcome-file>/index.jsp</welcome-file>
        </welcome-file-list>
    </web-app>

    在ssm-web模块的java文件夹下面创建UserHandler.java测试handler类

    @Controller
    public class UserHandler {
        @Autowired
        UserService userService;
      
        @RequestMapping(value = "/getUserById", method = {RequestMethod.POST, RequestMethod.GET})
        public String getUserById(HttpServletRequest request, Model model) {
            //参数
            Integer userId = StringUtils.notNull(request.getParameter("userId")) ? Integer.parseInt(request.getParameter("userId")) : 1;
            User user = userService.getUserById(userId);
            model.addAttribute("user", user);
            return "test";
        }
    }


    在ssm-web模块的WEB-INF文件夹下面创建test.jsp页面

    <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    <html>
    <head>
        <title>测试spring mvc</title>
    </head>
    <body>
        <h1> hello world! </h1> ${user.uName}
    </body>
    </html>


    经过以上的准备,我们现在就可以编译整个项目,编译的结果如下,就说明编译成功,否则就是编译失败。
    通过整个项目的编译,ssm-common,ssm-pojo,ssm-dao,ssm-service分别被达成jar,ssm-web被打包成war,最后我们就是要把war通过tomcat容器跑起来。
    访问localhost:8089/ssm-demo/getUserById?userId=1,如果页面出现如下的熟悉界面,恭喜你,三大框架整合成功!!!

    总结

    到此为止我们Maven的多模块 Spring MVC + Spring + Mybatis 项目的搭建就已经完成,后期就可以在此基础上添加更多的功能。写这篇文章的目的是看到很多的单模块的ssm项目的搭建,却很少看到多模块的ssm项目搭建,所以就在此抛砖迎玉,重新搭建了一番,中间如果有什么不懂的,或者我写的不对的,大家都可以讨论。如果你觉得有用,就帮忙点个star吧!源码地址在公众号 Java后端 后台回复「多模块」获取。

    本文由作者「王前奔」授权发布,欢迎访问作者博客:www.leeyom.top , 点击阅读原文直接跳转。



    -END-
    如果看到这里,说明你喜欢这篇文章,请 转发、点赞 。同时  标星(置顶) 本公众号可以第一时间接受到博文推送。
    1. Nginx 从入门到实践,万字详解!
    2. 我用一根网线攻击了舍友!
    3. Spring Boot+Redis 实现接口自动幂等
    4.  Typora 终于支持图片上传了!

    最近整理一份面试资料 《Java技术栈学习手册》 ,覆盖了Java技术、面试题精选、Spring全家桶、Nginx、SSM、微服务、数据库、数据结构、架构等等。
    获取方式:点“  在看 ,关注公众号 Java后端 并回复  777  领取,更多内容陆续奉上。

    喜欢文章,点个在看  

    本文分享自微信公众号 - Java后端(web_resource)。
    如有侵权,请联系 support@oschina.cn 删除。
    本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。

    今天关于Spring MVC Maven模块springmvc的模块的介绍到此结束,谢谢您的阅读,有关idea maven springmvc mybabit 多模块管理整合、Idea SpringMVC+Spring+MyBatis+Maven 调整、Idea SpringMVC+Spring+MyBatis+Maven 调整 【转】、IntelliJ IDEA + Maven 的多模块Spring MVC + Spring + Mybatis项目骨架等更多相关知识的信息可以在本站进行查询。

    本文标签:

    上一篇Spring 4.0.x JSON / Ajax HTTP / 1.1 406不可接受(springboot接收不到json)

    下一篇将SpringMVC应用程序热部署到Tomcat7时出现OutOfMemoryError-可能与log4j2相关