搭建ssm项目

一. 创建父项目容器

  1. 创建父项目容器
    在这里插入图片描述
  2. 什么都不选在这里插入图片描述
  3. 输入项目名称,项目所在路径,点击Finish创建

在这里插入图片描述
4.配置Maven
在这里插入图片描述
在这里插入图片描述
5. 创建成功
在这里插入图片描述
5. 在父容器的pom.xml文件中添加整个项目所需要的依赖jar包,对依赖jar包做大统一管理,父项目中创建的指定服务,使用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.ssm</groupId>
    <artifactId>ssm-parent</artifactId>
    <!-- 打包方式,容器是pom-->
    <packaging>pom</packaging>
    <version>1.0-SNAPSHOT</version>
    
	<!--父项目容器中包含的子项目,子项目容器等-->
    <modules>
        <module>ssm-common</module>
        <module>ssm-manager</module>
        <!--正常情况下下面三个应该在ssm-manager的pom中-->
        <module>ssm-manager/ssm-mapper</module>
        <module>ssm-manager/ssm-server</module>
        <module>ssm-manager/ssm-web</module>
    </modules>

    <!-- <packaging>pom</packaging>-->
    <!-- 集中定义依赖组件版本号, 
    后续如果项目中还要添加依赖,
    将依赖的版本在此处添加,
    在需要依赖的地方,使用${依赖版本号}获取 -->
    <properties>
        <!-- junit 依赖 -->
        <junit.version>4.12</junit.version>
        <!-- spring 依赖 -->
        <spring-version>4.3.4.RELEASE</spring-version>
        <!-- hibernate 数据验证框架依赖 -->
        <hibernate-validator.version>5.3.3.Final</hibernate-validator.version>
        <!-- spring-mybatis 依赖 -->
        <mybatis-spring.version>1.3.0</mybatis-spring.version>
        <!-- mybatis 依赖 -->
        <mybatis.version>3.4.1</mybatis.version>
        <!-- servlet api 依赖 -->
        <servlet.version>3.0.1</servlet.version>
        <!-- jsp 依赖 -->
        <jstl.version>1.2</jstl.version>
        <standard.version>1.1.2</standard.version>
        <!-- slf4j 依赖 -->
        <slf4j-log4j12.version>1.7.22</slf4j-log4j12.version>
        <!-- json 相关依赖 -->
        <jackson.version>2.8.5</jackson.version>
        <!-- 数据库连接池相关依赖 -->
        <druid.version>1.0.27</druid.version>
        <!-- mysql 依赖 -->
        <mysql.version>5.1.8</mysql.version>
        <!-- ibatis 依赖 -->
        <ibatis.version>3.0</ibatis.version>
        <!-- 分页工具依赖 -->
        <pagehelper.version>4.1.6</pagehelper.version>
        <!-- 文件上传依赖 -->
        <commons-fileupload.version>1.3.2</commons-fileupload.version>
        <!-- redis 依赖 2.9.1 版本为了兼容 springdata-redis -->
        <jedis.version>2.9.1</jedis.version>
        <!-- spring data redis 依赖使用 1+最新版本因为 2+需要 spring5+版本 -->
        <springdata-redis.version>1.8.18.RELEASE</springdata-redis.version>
        <!-- solr 依赖 -->
        <solrj.version>7.6.0</solrj.version>
        <!-- jdk 依赖 -->
        <jdk.version>1.8</jdk.version>
        <!-- Apache 其他依赖 -->
        <maven-compiler-plugin.version>3.5.1</maven-compiler-plugin.version>
        <poi.version>3.15</poi.version>
        <commons-net.version>3.3</commons-net.version>
        <commons-logging.version>1.2</commons-logging.version>
        <!-- dubbo 依赖 -->
        <dubbo-version>2.6.0</dubbo-version>
        <!-- zookeeper 依赖 -->
        <zookeeper-version>3.4.13</zookeeper-version>
        <!-- zkclient 依赖 -->
        <zkclient-version>0.1</zkclient-version>
        <!--google kaptcha图像验证码-->
        <kaptcha-version>0.0.9</kaptcha-version>
        <!-- alipay支付宝依赖 -->
        <alipay.version>3.4.49.ALL</alipay.version>
        <!-- javamail邮箱依赖 -->
        <javamail.version>1.6.2</javamail.version>
        <!-- spring amqp Rabbitmq消息队列依赖 -->
        <spring-amqp.version>1.7.11.RELEASE</spring-amqp.version>
        <!-- spring rabbit amqp依赖 -->
        <spring-amqp-rabbit.version>1.7.11.RELEASE</spring-amqp-rabbit.version>
    </properties>
    <!-- 只定义依赖的版本,并不实际依赖 , -->
    <dependencyManagement>
        <dependencies>
            <!-- servlet api -->
            <dependency>
                <groupId>javax.servlet</groupId>
                <artifactId>javax.servlet-api</artifactId>
                <!--版本号获取上面定义的版本号即可,如果需要更换版本,只需要更换上面-->
                <version>${servlet.version}</version> 
                <!-- provided 作用域表示:
                只在编译和测试的时候 运行时,
                如果容器已经提供了该 jar 包,
                直接调用容器 jar 包即可。 -->
                <scope>provided</scope>
            </dependency>
            <!-- jsp 相关 -->
            <dependency>
                <groupId>jstl</groupId>
                <artifactId>jstl</artifactId>
                <version>${jstl.version}</version>
            </dependency>
            <!-- Spring -->
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-aop</artifactId>
                <version>${spring-version}</version>
            </dependency>
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-aspects</artifactId>
                <version>${spring-version}</version>
            </dependency>
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-context</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-test</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-orm</artifactId>
                <version>${spring-version}</version>
            </dependency>
            <!-- 使用 hibernate 的数据验证框架 -->
            <dependency>
                <groupId>org.hibernate</groupId>
                <artifactId>hibernate-validator</artifactId>
                <version>${hibernate-validator.version}</version>
            </dependency>
            <!-- Jackson Json 处理工具包 -->
            <dependency>
                <groupId>com.fasterxml.jackson.core</groupId>
                <artifactId>jackson-core</artifactId>
                <version>${jackson.version}</version>
            </dependency>
            <dependency>
                <groupId>com.fasterxml.jackson.core</groupId>
                <artifactId>jackson-annotations</artifactId>
                <version>${jackson.version}</version>
            </dependency>
            <dependency>
                <groupId>com.fasterxml.jackson.core</groupId>
                <artifactId>jackson-databind</artifactId>
                <version>${jackson.version}</version>
            </dependency>
            <dependency>
                <groupId>taglibs</groupId>
                <artifactId>standard</artifactId>
                <version>${standard.version}</version>
            </dependency>
            <!-- Mybatis -->
            <dependency>
                <groupId>org.mybatis</groupId>
                <artifactId>mybatis-spring</artifactId>
                <version>${mybatis-spring.version}</version>
            </dependency>
            <dependency>
                <groupId>org.mybatis</groupId>
                <artifactId>mybatis</artifactId>
                <version>${mybatis.version}</version>
            </dependency>
            <dependency>
                <groupId>com.github.pagehelper</groupId>
                <artifactId>pagehelper</artifactId>
                <version>${pagehelper.version}</version>
            </dependency>
            <!-- junit 单元测试 -->
            <dependency>
                <groupId>junit</groupId>
                <artifactId>junit</artifactId>
                <version>${junit.version}</version>
            </dependency>
            <!-- 日志处理 -->
            <dependency>
                <groupId>org.slf4j</groupId>
                <artifactId>slf4j-log4j12</artifactId>
                <version>${slf4j-log4j12.version}</version>
            </dependency>
            <!-- MySql -->
            <dependency>
                <groupId>mysql</groupId>
                <artifactId>mysql-connector-java</artifactId>
                <version>${mysql.version}</version>
            </dependency>
            <!--ibatis 依赖-->
            <dependency>
                <groupId>org.apache.ibatis</groupId>
                <artifactId>ibatis-core</artifactId>
                <version>${ibatis.version}</version>
            </dependency>
            <!-- 连接池 -->
            <dependency>
                <groupId>com.alibaba</groupId>
                <artifactId>druid</artifactId>
                <version>${druid.version}</version>
            </dependency>
            <!-- 文件上传组件 -->
            <dependency>
                <groupId>commons-fileupload</groupId>
                <artifactId>commons-fileupload</artifactId>
                <version>${commons-fileupload.version}</version>
            </dependency>
            <!-- Redis 客户端 -->
            <dependency>
                <groupId>redis.clients</groupId>
                <artifactId>jedis</artifactId>
                <version>${jedis.version}</version>
            </dependency>
            <!-- spring data redis 依赖 -->
            <dependency>
                <groupId>org.springframework.data</groupId>
                <artifactId>spring-data-redis</artifactId>
                <version>${springdata-redis.version}</version>
            </dependency>
            <!-- solr 客户端 -->
            <dependency>
                <groupId>org.apache.solr</groupId>
                <artifactId>solr-solrj</artifactId>
                <version>${solrj.version}</version>
            </dependency>
            <!-- Apache 其他组件 -->
            <dependency>
                <groupId>org.apache.poi</groupId>
                <artifactId>poi-ooxml</artifactId>
                <version>${poi.version}</version>
            </dependency>
            <dependency>
                <groupId>commons-net</groupId>
                <artifactId>commons-net</artifactId>
                <version>${commons-net.version}</version>
            </dependency>
            <dependency>
                <groupId>commons-logging</groupId>
                <artifactId>commons-logging</artifactId>
                <version>${commons-logging.version}</version>
            </dependency>
            <!-- dubbo 依赖 -->
            <dependency>
                <groupId>com.alibaba</groupId>
                <artifactId>dubbo</artifactId>
                <version>${dubbo-version}</version>
            </dependency>
            <!-- zookeeper 依赖 -->
            <dependency>
                <groupId>org.apache.zookeeper</groupId>
                <artifactId>zookeeper</artifactId>
                <version>${zookeeper-version}</version>
            </dependency>
            <!-- zkclient 依赖 -->
            <dependency>
                <groupId>com.github.sgroschupf</groupId>
                <artifactId>zkclient</artifactId>
                <version>${zkclient-version}</version>
            </dependency>
            <!-- google kaptcha 图形验证码 -->
            <dependency>
                <groupId>com.github.axet</groupId>
                <artifactId>kaptcha</artifactId>
                <version>${kaptcha-version}</version>
            </dependency>
            <!-- alipay 支付宝依赖 -->
            <dependency>
                <groupId>com.alipay.sdk</groupId>
                <artifactId>alipay-sdk-java</artifactId>
                <version>${alipay.version}</version>
            </dependency>
            <!-- javamail邮箱依赖 -->
            <dependency>
                <groupId>com.sun.mail</groupId>
                <artifactId>javax.mail</artifactId>
                <version>${javamail.version}</version>
            </dependency>

            <!-- spring rabbit amqp依赖 -->
            <dependency>
                <groupId>org.springframework.amqp</groupId>
                <artifactId>spring-rabbit</artifactId>
                <version>${spring-amqp-rabbit.version}</version>
            </dependency>
        </dependencies>
    </dependencyManagement>
    
</project>

二. 在父项目容器中创建指定的项目模块

父容器中创建指定功能模块,在Spring中存有页面,用来接收客户端请求的为war项目打包时需要打为war包. 没有页面,专门用来提供服务供其它方调用的为jar项目,打包时需要打为jar包(另外还有容器时,pom.xml设置为pom),通常一个功能模块的完成需要有接收请求的Controller层,Api接口层,处理逻辑的Service层,跟数据库交互的Dao层,在分布式模块化的项目中,整个功能模块为一个服务,一般会在父项目容器中再创建一个子容器,这个子项目容器就看为是这个功能模块的功能容器,然后在这个子项目容器中创建需要的Controller层,Api接口层,Service层与Dao层,每一层都是以一个项目来创建
在容器中创建项目模块: 右键需要创建项目的容器 —> new —> Module
在这里插入图片描述

三. 父项目容器中创建ssm-common 子模块

该模块下存放了其它所有功能模块需要的工具类,枚举,对外接收数据的dto等,选择quickstar,由于这个模块会被各个服务使用,所以将这个common单独定义为一个项目,放在功能容器的外部,有功能模块需要调用,直接引用这个common的依赖即可

  1. 右键父项目容器,创建Module
    在这里插入图片描述
  2. 勾选Maven,选择quickstar
    在这里插入图片描述
  3. 输入模块名称
    在这里插入图片描述
  4. 创建成功
    在这里插入图片描述
  5. 添加该模块需要用到的依赖(由于是common,用来专门存放工具类相关的,一般不需要太多依赖)
<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">

	<!--父项目-->
	<parent>
		<artifactId>ssm-parent</artifactId>
		<groupId>com.ssm</groupId>
		<version>1.0-SNAPSHOT</version>
	</parent>

	<modelVersion>4.0.0</modelVersion>
	<groupId>com.ssm</groupId>
	<artifactId>ssm-common</artifactId>
	<!--指定打包时,打为什么包jar,或war-->
	<packaging>jar</packaging>
	<version>1.0-SNAPSHOT</version>
	<!-- TODO project name  -->
	<name>ssm-common</name>
	<description></description>

	<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>
	</properties>


	<dependencies>
		<!--由于父项目容器的pom文件中指定的依赖版本,
        此处则不需要再次指定,但有子模块添加依赖时,首先
        要将需要的依赖添加到父项目容器中,然后再添加到指定
        的模块中-->
		<!-- junit 单元测试 -->
		<dependency>
			<groupId>junit</groupId>
			<artifactId>junit</artifactId>
		</dependency>
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-test</artifactId>
		</dependency>
	</dependencies>

</project>
  1. main包下创建存放类的包,创建公共的枚举,工具类,自定义异常类等

四. 父项目容器中创建功能模块容器

右键父项目容器,new —> module, 与父项目容器一样什么都不选,注意jdk版本,功能模块容器的路径是否在父项目容器的路径下等,此处的ssm-manager 是一个容器,可以看为是一个完整的功能模块
在这里插入图片描述
功能模容器的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/xsd/maven-4.0.0.xsd">
    <parent>
        <artifactId>ssm-parent</artifactId>
        <groupId>com.ssm</groupId>
        <version>1.0-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>

    <artifactId>ssm-manager</artifactId>
    <packaging>pom</packaging>

    <!--容器中的子项目,正常情况下该有的,由于创建当前
    容器中的子项目时,忘记选择子项目的父容器为这里的ssm-manager
    idea默认将这个容器中的子项目指向了ssm-parent-->
    <!--<modules>
        <module>ssm-manager/ssm-mapper</module>
        <module>ssm-manager/ssm-server</module>
        <module>ssm-manager/ssm-web</module>
    </modules>-->
</project>

五. 功能容器中创建面向数据库的ssm-mapper模块

创建步骤与common相同,不过右键点击的是ssm-manager功能容器,注意,创建的当前模块所属的父容器,路径是否在功能容器下

  1. pom文件中添加依赖
<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">
	
	<parent>
		<!-- 此处好像有错误,但是不影响运行,正常情况父容器应该是ssm-manager
		但是,同时没有relativePath这个标签,原因是在创建当前项目时忘记选择所属
		父项目容器了,默认给的父项目是ssm-parent,如果将此处改为manager,不要忘记
		将ssm-parent的pom中的module标签,表示当前项目的剪切到ssm-manager的pom中
		如果运行报错找不到pom,删除此处的relativePath标签
		下面几个都有这个问题,但是不影响程序运行 -->
		<artifactId>ssm-parent</artifactId>
		<groupId>com.ssm</groupId>
		<version>1.0-SNAPSHOT</version>
		<relativePath>../../pom.xml</relativePath>
	</parent>

	<modelVersion>4.0.0</modelVersion>
	<groupId>com.ssm</groupId>
	<artifactId>ssm-mapper</artifactId>
	<packaging>jar</packaging>
	<version>1.0-SNAPSHOT</version>
	<!-- TODO project name  -->
	<name>ssm-mapper</name>
	<description></description>

	<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>
	</properties>

	<dependencies>

		<!-- mybatis依赖 -->
		<dependency>
			<groupId>org.mybatis</groupId>
			<artifactId>mybatis</artifactId>
		</dependency>
		<dependency>
			<groupId>org.mybatis</groupId>
			<artifactId>mybatis-spring</artifactId>
		</dependency>
		<!-- mysql依赖 -->
		<dependency>
			<groupId>mysql</groupId>
			<artifactId>mysql-connector-java</artifactId>
		</dependency>
		<!-- druid连接池 -->
		<dependency>
			<groupId>com.alibaba</groupId>
			<artifactId>druid</artifactId>
		</dependency>
		<!-- 分页工具 -->
		<dependency>
			<groupId>com.github.pagehelper</groupId>
			<artifactId>pagehelper</artifactId>
		</dependency>
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-context</artifactId>
		</dependency>
		<dependency>
			<groupId>org.aspectj</groupId>
			<artifactId>aspectjweaver</artifactId>
			<version>1.8.9</version>
		</dependency>
	</dependencies>

</project>
  1. 生成对应数据库表的实体类,实现增删改查的mapper接口,mapper.xml文件,注意接口与xml文件存放位置的不同,mybatis配置的扫描的不同方式,与修改接口,实体类时,不要忘记修改xml中的映射路径
    在这里插入图片描述

六. 功能容器中创建ssm-server模块

与ssm-mapper相同,注意,创建的当前模块所属的父容器,路径是否在功能容器下,server模块一般存有实现功能的注意业务代码,依赖ssm-mapper,对数据库进行增删改查

  1. 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/xsd/maven-4.0.0.xsd">

  <parent>
    <artifactId>ssm-parent</artifactId>
    <groupId>com.ssm</groupId>
    <version>1.0-SNAPSHOT</version>
    <relativePath>../../pom.xml</relativePath>
  </parent>

  <modelVersion>4.0.0</modelVersion>
  <groupId>com.ssm</groupId>
  <artifactId>ssm-server</artifactId>
  <version>1.0-SNAPSHOT</version>
  <packaging>jar</packaging>
  <name>ssm-server</name>
  <!-- FIXME change it to the project's website -->
  <url>http://www.example.com</url>

  <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>
  </properties>

  <dependencies>
    <!--引入ssm-mapper-->
    <dependency>
      <groupId>com.ssm</groupId>
      <artifactId>ssm-mapper</artifactId>
      <version>1.0-SNAPSHOT</version>
    </dependency>
    <!--引入ssm-common-->
    <dependency>
      <groupId>com.ssm</groupId>
      <artifactId>ssm-common</artifactId>
      <version>1.0-SNAPSHOT</version>
    </dependency>
    <!-- spring依赖 -->
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-context</artifactId>
    </dependency>
    <!-- 日志打印 -->
    <dependency>
      <groupId>org.slf4j</groupId>
      <artifactId>slf4j-log4j12</artifactId>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-webmvc</artifactId>
    </dependency>
    <!-- Redis 客户端 -->
    <dependency>
      <groupId>redis.clients</groupId>
      <artifactId>jedis</artifactId>
    </dependency>
    <!-- spring data redis 依赖 -->
    <dependency>
      <groupId>org.springframework.data</groupId>
      <artifactId>spring-data-redis</artifactId>
    </dependency>

    <!-- servlet api -->
    <dependency>
      <groupId>javax.servlet</groupId>
      <artifactId>javax.servlet-api</artifactId>
      <scope>provided</scope>
    </dependency>
  </dependencies>

</project>
  1. 创建java包,创建编写业务代码,注意,不要忘记使用@Service,将类注入到Spring容器中,通常一个类对应一个接口,Spring的动态代理,并且注意包路径与Spring配置文件中配置事物, Aop的路径对应
    在这里插入图片描述

七. 功能容器中创建ssm-web模块

由于web中有页面等,需要打为war包,创建时不同的地方是选择webapp
在这里插入图片描述
一个web的完整架构
在这里插入图片描述

  1. pom文件中添加依赖,注意点,通常会将spring,mybatis,等一些相关的配置文件放在该项目的resources文件夹下,pom文件中添加读取配置文件的设置,由于是有页面的web,添加jetty,或tomcat插件等
<?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>ssm-parent</artifactId>
        <groupId>com.ssm</groupId>
        <version>1.0-SNAPSHOT</version>
        <relativePath>../../pom.xml</relativePath>
    </parent>
    <modelVersion>4.0.0</modelVersion>

    <artifactId>ssm-web</artifactId>
    <packaging>war</packaging>

    <name>ssm-web Maven Webapp</name>
    <!-- FIXME change it to the project's website -->
    <url>http://www.example.com</url>

    <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>
    </properties>

    <dependencies>

        <!--引入ssm-server层-->
        <dependency>
            <groupId>com.ssm</groupId>
            <artifactId>ssm-server</artifactId>
            <version>1.0-SNAPSHOT</version>
        </dependency>
        <!--引入ssm-mapper,正常情况下是不应该引入这个的
        防止表字段泄露,web中一般使用dto来相应的-->
        <dependency>
            <groupId>com.ssm</groupId>
            <artifactId>ssm-mapper</artifactId>
            <version>1.0-SNAPSHOT</version>
        </dependency>
        <!-- spring依赖 -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-aspects</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-jdbc</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-orm</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-webmvc</artifactId>
        </dependency>
        <!-- jsp相关依赖 -->
        <dependency>
            <groupId>jstl</groupId>
            <artifactId>jstl</artifactId>
        </dependency>
        <!-- servlet api -->
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>javax.servlet-api</artifactId>
            <scope>provided</scope>
        </dependency>
        <!-- Json处理相关依赖 -->
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-databind</artifactId>
        </dependency>
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-core</artifactId>
        </dependency>
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-annotations</artifactId>
        </dependency>
        <!-- 文件上传组件 -->
        <dependency>
            <groupId>commons-fileupload</groupId>
            <artifactId>commons-fileupload</artifactId>
        </dependency>
        <!-- google kaptcha 图形验证码 -->
        <dependency>
            <groupId>com.github.axet</groupId>
            <artifactId>kaptcha</artifactId>
        </dependency>

        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid</artifactId>
        </dependency>
        <!--dubbo依赖-->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>dubbo</artifactId>
        </dependency>
        <!-- MySql -->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
        </dependency>
        <!-- 添加mybatis依赖 -->
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis-spring</artifactId>
        </dependency>

    </dependencies>


    <!-- build标签 常用于添加插件及编译配置 -->
    <build>
        <resources>
            <!--指获取src/main/resources目录下的配置文件,${env}为站位固定格式
                  在打包时根据打包环境输入参数,输入的参数会被填充到env-->
             <!--<resource>
               <directory>src/main/resources/${env}</directory>
             </resource>-->

            <resource>
                <directory>src/main/resources</directory>
                <includes>
                    <include>**/*.properties</include>
                    <include>**/*.xml</include>
                </includes>
                <filtering>false</filtering>
            </resource>

            <resource>
                <directory>src/main/java</directory>
                <includes>
                    <!--指定读取resources文件下的什么格式的文件-->
                    <include>**/*.xml</include>
                    <include>**/*.properties</include>
                    <include>**/*.tld</include>
				 <!-- */ -->
                </includes>
                <filtering>false</filtering>
            </resource>
        </resources>
        <!-- 编译配置 指定finalName用于指定打包的包名 -->
        <finalName>ego-manager-web</finalName>
        <plugins>
            <!-- 添加maven jetty插件 -->
            <plugin>
                <groupId>org.mortbay.jetty</groupId>
                <artifactId>maven-jetty-plugin</artifactId>
                <version>6.1.26</version>
                <configuration>
                    <scanIntervalSeconds>10</scanIntervalSeconds>
                    <!-- 项目访问路径 -->
                    <contextPath>/ccc</contextPath>
                </configuration>
            </plugin>
        </plugins>
    </build>

    <!-- 打包环境配置 开发环境 测试环境 正式环境 -->
    <profiles>
        <profile>
            <id>dev</id>
            <properties>
                <env>dev</env>
            </properties>
            <activation>
                <!--true说明该环境为默认环境-->
                <activeByDefault>true</activeByDefault>
            </activation>
        </profile>
        <profile>
            <id>test</id>
            <properties>
                <env>test</env>
            </properties>
        </profile>
        <profile>
            <id>product</id>
            <properties>
                <env>product</env>
            </properties>
        </profile>
    </profiles>
</project>

webapp/WEB-INF下的web.xml,与页面,等静态资源

  1. 配置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"
         id="WebApp_ID" version="3.0">

  <display-name>ego-manager-web</display-name>

  <!-- post方式提交乱码解决 begin -->
  <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>
 <!-- */ -->

  <!-- spring后端配置 begin(通过一个监听器,扫描Spring的配置文件,启动Spring) -->
  <listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
  </listener>
  <context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>classpath:spring/applicationContext-*.xml</param-value>
  </context-param>
 
 
  <!-- 配置 DispatcherServlet 指定 SpringMvc配置文件的位置,启动SpringMVC-->
  <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/springmvc.xml</param-value>
    </init-param>
  </servlet>
  <!--配置映射-->
  <servlet-mapping>
    <servlet-name>springmvc</servlet-name>
    <url-pattern>/</url-pattern>
  </servlet-mapping>
  
</web-app>
  1. WEB-INF下创建存放页面,存放静态资源css,js,相关的路径等

配置文件

创建resources文件夹,创建配置文件,配置文件分为配置相关的配置文件,与存储数据相关的配置文件

框架配置相关配置文件

  • mybatis相关配置文件, applicationContext-mybatis.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"
	   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">
	<!-- 加载属性文件 -->
	<context:property-placeholder location="classpath:properties/*.properties"/>

	<!-- 配置数据源 -->
	<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource">
		<!-- 使用Druid无需配置driver,会自动的根据url得到driver -->
		<!-- 配置url ${jdbc.url}从属性文件获取 -->
		<property name="url" value="${jdbc.url}"/>
		<!-- 配置用户名 -->
		<property name="username" value="${jdbc.username}"/>
		<!-- 配置数据库密码 -->
		<property name="password" value=""/>
	</bean>

	<!-- 配置SqlSessionFactory -->
	<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
		<property name="configLocation" value="classpath:mybatis/config.xml"/>
		<property name="dataSource" ref="dataSource"/>
		<!-- 配置自动扫描mybatis Mapper.java Mapper.xml -->
		<property name="mapperLocations" value="classpath:mapper/*.xml"/>
	</bean>

	<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
		<!-- 扫描包 扫描对应mapper.xml的映射接口-->
		<property name="basePackage" value="com.ssm.dao" />
		<!-- sqlSessionFactoryBeanName是批factory的名称 此处使用value,而不是ref -->
		<property name="sqlSessionFactoryBeanName" value="sqlSessionFactory" />
	</bean>
</beans>
  • 事物相关配置文件, applicationContext-trans.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:context="http://www.springframework.org/schema/context" xmlns:p="http://www.springframework.org/schema/p"
	xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsd
	http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd
	http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.0.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.0.xsd
	http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-4.0.xsd">
   <!--配置开启事物-->
	<tx:annotation-driven/>
   <!-- 配置事务管理器 -->
   <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
   		<!-- 数据源 -->
   		<property name="dataSource" ref="dataSource"></property>
   </bean>
   
   <!-- 配置事务通知 -->
   <tx:advice id="txAdvice" transaction-manager="transactionManager">
   	<tx:attributes>
   		<!-- 
   		REQUIRED:支持当前事务,如果没有事务,就创建一个事务。建议使用。
   		MANDATORY:支持当前事务,如果没有事务,就抛出异常。
   		NESTED:嵌套事务,允许在当前事务中嵌套事务,如果没有事务,会创建一个。
   		NEVER:强制不使用事务,如果当前有事务,则抛出异常。
   		NOT_SUPPORTED:强制不使用事务,如果当前有事务,则将当前事务挂起。
   		REQUIRES_NEW:创建一个新的事务,如果当前已有事务,则挂起当前事务。
   		SUPPORTS:支持当前事务,如果没有事务,不做任何处理。
   		 -->
   		<tx:method name="insert*" propagation="REQUIRED"/>
   		<tx:method name="save*" propagation="REQUIRED"/>
   		<tx:method name="delete*" propagation="REQUIRED"/>
   		<tx:method name="update*" propagation="REQUIRED"/>
   		<tx:method name="select*" read-only="true"/>
   		<tx:method name="find*" read-only="true"/>
   		<tx:method name="*" propagation="REQUIRED"/>
   	</tx:attributes>
   </tx:advice>
   
   <!-- 配置aop,切面 -->
   <aop:config>
   	<!-- 第一个*表示所有返回值  第二个*表示所有类 第三个*表示所有的方法   ..表示所有的传参类型 -->
   	<aop:pointcut expression="execution(* com.ssm.service.*.*(..))" id="pointcut"/>
   	<aop:advisor advice-ref="txAdvice" pointcut-ref="pointcut"/>
   </aop:config>
</beans>
  • SpringMvc相关配置文件, 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">

	<!-- 启用spring mvc 注解 -->
	<!-- <context:annotation-config /> -->
	<mvc:annotation-driven />
	<!-- 配置访问根路径对应资源操作 -->
	<!-- 其中 path 表示为请求的路径,view-name 表示为你需要做的资源操作 -->
	<mvc:view-controller path="/" view-name="index" />
	<!-- 设置使用注解的类所在的package(基本包)-->
	<context:component-scan base-package="com.ssm.controller"/>

	<!-- 静态资源映射 location是本地静态资源路径 mapping是映射的url地址,访问时就使用该地址 -->
	<mvc:resources location="/WEB-INF/static/" mapping="/**" />

	<!-- 配置视图解析器(不同的页面视图解析器不同此处以.jsp页面为例) -->
	<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
		<!-- 配置前缀 -->
		<property name="prefix" value="/WEB-INF/pages/"/>
		<!-- 配置后缀 -->
		<property name="suffix" value=".jsp"/>
	</bean>
	<!-- 文件上传解析器 -->
	<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
		<!-- 默认编码试 -->
		<property name="defaultEncoding" value="UTF-8"/>
		<!-- 最大文件上传大小 -->
		<property name="maxUploadSize" value="10485760"/>
	</bean>
	<!-- 实现图形验证码(注意下面拦截器放行图像验证)请求 -->
	<bean id="captchaProducer" class="com.google.code.kaptcha.impl.DefaultKaptcha">
		<property name="config">
			<bean class="com.google.code.kaptcha.util.Config">
				<constructor-arg>
					<props>
						<prop key="kaptcha.border">yes</prop><!--是否有边框 -->
						<prop key="kaptcha.border.color">105,179,90</prop><!--设置边框颜色 -->
						<!--验证码文本字符颜色 默认为 Color.BLACK-->
						<prop key="kaptcha.textproducer.font.color">green</prop>
						<prop key="kaptcha.session.key">code</prop><!--验证码 -->
						<!--设置字体样式(优先选择宋体,如果不支持宋体,一些往后推) -->
						<prop key="kaptcha.textproducer.font.names">宋体,楷体,微软雅黑</prop>
						<prop key="kaptcha.border.thickness"></prop><!--边框粗细度 默认为 1 -->
						<!--验证码生成器 默认为 DefaultKaptcha -->
						<prop key="kaptcha.producer.impl"></prop>
						<!-- 验证码文本生成器 默认为 DefaultTextCreator -->
						<prop key="kaptcha.textproducer.impl"></prop>
						<!--验证码文本字符内容范围 默认为abcde2345678gfynmnpwx -->
						<prop key="kaptcha.textproducer.char.string"></prop>
						<!-- 验证码文本字符长度 默认为 5 -->
						<prop key="kaptcha.textproducer.char.length">4</prop>
						<!--验证码文本字符大小 默认为 40 -->
						<prop key="kaptcha.textproducer.font.size">40</prop>
						<!--验证码文本字符间距 默认为 2 -->
						<prop key="kaptcha.textproducer.char.space">6</prop> 
						<!--验证码图片宽度 默认为 200 -->
						<prop key="kaptcha.image.width">200</prop>
						<!--验证码图片高度 默认为 40 --> 
						<prop key="kaptcha.image.height">50</prop> 
					</props>
				</constructor-arg>
			</bean>
		</property>
	</bean>


	<!-- 配置拦截器 -->
	<mvc:interceptors>
		<mvc:interceptor>
			<!--注意拦截的什么,放行的什么, 拦截所有,然后指定放行
			放行项目中的所有静态资源,
			放行登入页面,
			放行登入后台
			根据需求定义, 如果是商城,新闻等,
            拦截的 url(必须登录才可以访问的资源)
            /**包括路径及其子路径
            如果是/admin/*-拦截的是/admin/add,/admin/list...但是
           /admin/add/user 不被拦截
            如果是/admin/**-拦截的是/admin 路径及其子路径
            */-->
			<mvc:mapping path="/**"/>
			<!-- 不拦截的 url(不需要登录就可以访问的资源) -->
			<mvc:exclude-mapping path="/Public/**"/>
			<mvc:exclude-mapping path="/Template/**"/>
			<mvc:exclude-mapping path="/login/**"/>
			<mvc:exclude-mapping path="/user/login/**"/>
			<mvc:exclude-mapping path="/user/logout/**"/>
			<!--放行图像验证码请求-->
			<mvc:exclude-mapping path="/image/**"/>
			<!--对应java中的拦截器,此处使用ref,bean,分层注解定义了名字为bean的-->
			<ref bean="managerLoginInterceptor"/>
		</mvc:interceptor>
	</mvc:interceptors>
</beans>
  • 开启注解驱动等其它相关配置文件, applicationContext-service,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:aop="http://www.springframework.org/schema/aop"
       xmlns:context="http://www.springframework.org/schema/context"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/aop
        http://www.springframework.org/schema/aop/spring-aop-4.0.xsd
        http://www.springframework.org/schema/context
        http://www.springframework.org/schema/context/spring-context.xsd">
<!-- 设置使用注解的类所在的package(基本包)-->
<context:component-scan base-package="com.ssm.service"/>
<context:component-scan base-package="com.ssm.interceptor"/>
</beans>
  • mybatis开启二级缓存配置文件, 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>
    <!-- 配置插件、配置二级缓存等 -->
    <plugins>
        <plugin interceptor="com.github.pagehelper.PageHelper">
            <!-- 指定方言(指定数据库类型) -->
            <property name="dialect" value="mysql"/>
        </plugin>
    </plugins>
</configuration>

- 日志相关配置文件,log4j.properties

```javascript
#console log
log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
log4j.appender.CONSOLE.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} [%t] %-5p %c - %m%n

#logger
#log4j.logger.org.springframework=DEBUG,CONSOLE
#log4j.logger.org.hibernate=INFO,CONSOLE
#log4j.logger.org.apache=INFO,CONSOLE
log4j.rootLogger=DEBUG,CONSOLE
  • 另外还有用来存放常量数据的配置文件,例如数据库连接,用户名密码等存放着一些服务的用户名密码,服务的ip地址等相关数据的配置文件
  • 编写代码,不要忘记添加controller注解

八. idea配置jetty

在这里插入图片描述

在这里插入图片描述


发布了48 篇原创文章 · 获赞 0 · 访问量 585

猜你喜欢

转载自blog.csdn.net/qq_29799655/article/details/105270701