• SSM框架搭建自己的博客


    第01课:基础环境安装及 Maven 创建父子工程

    由于之前安装过Maven这了就不需要再安装了。

    Maven 创建父子工程

    创建 Maven 父工程

    如果 IDEA 已打开其他项目,可通过这一操作:File -> Close Project,关闭现有项目,然后通过:Create New Project -> Maven,创建父工程,直接点击 next,父工程就是空的工程,不需要勾选骨架。

    填写好 GroupId、ArtifactId、Version 并选择好项目目录后点击 Finish,父工程就创建好了,我们命名为“dreamland”。

    创建 Maven 子工程

    点击刚创建的父工程 dreamland,然后进行如下操作:File -> New -> Moudle -> Maven,见下图所示:

    勾选 Web 骨架后点击 Next,填写好 ArtifactId 后点击 Next。

    在这里要选择一个自己的 Maven 路径和仓库位置,还有要添加一个属性:

    archetypeCatalog=internal

    这个参数的意义是让该 Maven 项目的骨架不要到远程下载而是从本地获取,以提高加载速度。

     

     创建好的整体目录结构如下:

     

    (在一开始创建出子项目时,子项目中没有.iml文件,这个时候运行一下就可以自动生成了)

    mvn idea:module

    (在创建完成时,查看子项目中的pom.xml发现没有<parent>标签形成对父模块的依赖(我也不知道是不是这样说.....)在子项目的pom.xml上右键localhistory看到如下情况,不知道为什么自动从左边变成了右边,我就把左边的parent部分按照教程上的代码结果复制到右边了→_→:)

     然后就是在子项目里创建java resources test目录...

    第02课:SSM 框架的搭建

    开始啦!!!!

    我们首先看下 SSM 框架搭建核心步骤:
    1. 在 pom.xml 中添加 Maven 依赖,主要目的是将项目中所需要用到的 jar 包引入到项目,通过 Maven 进行管理。 2. 配置文件的配置,主要是 web.xml 的配置,数据库连接池的配置,日志文件的配置,SpringMVC 的配置,MyBatis 的配置等,具体配置内容下面会做详细说明。 3. 添加 Web 服务器 Tomcat,因为项目启动需要载体。 4. 启动 Tomcat 服务,访问 127.0.0.1:8080 或者 localhost:8080,页面成功访问,即表示 SSM 框架搭建完成。

    查看 Maven 的本地仓库

    在配置之前,我们需先了解下 Maven 仓库。

    Maven 仓库是 Maven 管理 jar 包的地方,有本地仓库,远程仓库和中央仓库之分。本地仓库即存在于本机。远程仓库,可通过配置 settings.xml 获取,比如阿里云的远程仓库。中央仓库为 Maven 的仓库,不配置远程仓库,默认从中央仓库下载 jar 依赖,然而中央仓库在国外,下载起来速度会很慢,所以我们多会选择配置阿里云远程仓库。

    如何查看 Maven 本地仓库的位置,具体步骤如下。

    首先,打开 CMD 命令窗口,输入如下 Maven 命令,即可查看 Maven 本地仓库的位置。

    mvn help:effective-settings

    如果没有配置 Maven 本地仓库的位置,默认位置在 C:Users你的主机名.m2 epository 下,如图:

     如果你有自己的 Maven 仓库,可在 Maven 的解压目录 apache-maven-3.3.9conf 下的 settings.xml 中配置。

    <localRepository>你的仓库路径</localRepository>  

    我的是这个:

    上面提到,我们多会使用阿里云远程仓库,接下来我们看看它的配置过程。

    首先,配置阿里云镜像。这时我们可在 settings.xml 中找到 mirrors 标签,在 mirrors 标签内配置如下内容:

      <mirror>
          <id>alimaven</id>
          <name>aliyun maven</name>
          <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
          <mirrorOf>central</mirrorOf>        
        </mirror>

    如下图所示:

    配置阿里云镜像的目的是使用阿里云的远程仓库,如果不配置,则默认使用中央仓库,而中央仓库在国外,下载依赖时会很慢。

    然后在 file -> settings 中找到 Maven,在下图所示的位置添加 Maven 的路径以及 Maven 配置文件 settings.xml 的路径,仓库的位置(即在 settings.xml 中配置的仓库)将自动显示出来。

    选用 MySQL 数据库

    MySQL 是一种开放源代码的关系型数据库管理系统(RDBMS),使用最常用的数据库管理语言——结构化查询语言(SQL)进行数据库管理。

    因为 MySQL 相比 Oracle 开源、免费,很多企业也在用,所以本课程我们选用 MySQL 数据库作为存储数据库。

    添加 Maven 依赖

    完成了以上的准备工作,接下来,我们就可以正式开始 SSM 的搭建了。首先是添加 Maven 依赖。

    Maven 依赖有很多,这里只给出部分依赖,用来正常启动项目。每个依赖都在代码中添加了注释,这里就不赘述了。如果遇到报错,通过 Alt+Enter 组合键进行下载即可。

    在 dreamland-web 子工程的 pom.xml 中添加以下代码:

    <dependencies>
        <dependency>
          <groupId>junit</groupId>
          <artifactId>junit</artifactId>
          <version>4.12</version>
          <scope>test</scope>
        </dependency>
        <!-- 添加jstl依赖 -->
        <dependency>
          <groupId>jstl</groupId>
          <artifactId>jstl</artifactId>
          <version>1.2</version>
        </dependency>
    
        <dependency>
          <groupId>javax</groupId>
          <artifactId>javaee-api</artifactId>
          <version>7.0</version>
        </dependency>
    
        <!-- 添加spring核心依赖 -->
        <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-context</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-aop</artifactId>
          <version>${spring.version}</version>
        </dependency>
    
        <dependency>
          <groupId>org.springframework</groupId>
          <artifactId>spring-test</artifactId>
          <version>${spring.version}</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>1.3.0</version>
        </dependency>
    
        <!-- 添加mysql驱动依赖 -->
        <dependency>
          <groupId>mysql</groupId>
          <artifactId>mysql-connector-java</artifactId>
          <version>${mysql-driver.version}</version>
        </dependency>
        <!-- 添加数据库连接池依赖 -->
        <dependency>
          <groupId>commons-dbcp</groupId>
          <artifactId>commons-dbcp</artifactId>
          <version>1.2.2</version>
        </dependency>
    
        <!-- 添加日志相关jar包 -->
        <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>
        <dependency>
          <groupId>org.slf4j</groupId>
          <artifactId>slf4j-log4j12</artifactId>
          <version>${slf4j.version}</version>
        </dependency>
        <!-- log end -->
        <dependency>
          <groupId>org.springframework</groupId>
          <artifactId>spring-jms</artifactId>
          <version>${spring.version}</version>
        </dependency>
    
        <!-- https://mvnrepository.com/artifact/org.apache.xbean/xbean-spring -->
        <dependency>
          <groupId>org.apache.xbean</groupId>
          <artifactId>xbean-spring</artifactId>
          <version>4.0</version>
        </dependency>
    
        <!-- https://mvnrepository.com/artifact/commons-beanutils/commons-beanutils -->
        <dependency>
          <groupId>commons-beanutils</groupId>
          <artifactId>commons-beanutils</artifactId>
          <version>1.9.3</version>
        </dependency>
        <!-- 通用mapper -->
        <dependency>
          <groupId>tk.mybatis</groupId>
          <artifactId>mapper</artifactId>
          <version>3.1.2</version>
        </dependency>
      </dependencies>
    View Code

    配置文件

    这一小节,我们将完成配置文件的配置。配置文件的加载顺序以及各配置文件有什么作用,我会在最后进行介绍。

    各配置文件位置如下图:

    jdbc.properties文件配置——数据库连接的配置

    这个配置文件主要是 spring-mybatis.xml 引用的主要参数,jdbc.properties 包括 JDBC 加载类、URL、用户名和密码.

    jdbcUrl=jdbc:mysql://localhost:3306/dream_db?useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull

    上面代码表示使用的是 MySQL 数据库,关于 MySQL 数据库的下载安装,这里不做介绍了,MySQL 数据库的默认端口是3306,端口号后的 dream_db 是你的数据库名称,后面的 useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull是指定字符的编码和解码格式。

    配置代码如下:

    driverClasss=com.mysql.jdbc.Driver
        jdbcUrl=jdbc:mysql://localhost:3306/dream_db?useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull
        username=root
        password=root
    
        #定义初始连接数
        initialSize=0
        #定义最大连接数
        maxActive=20
        #定义最大空闲
        maxIdle=20
        #定义最小空闲
        minIdle=1
        #定义最长等待时间
        maxWait=60000

    注意 dream_db 是数据库名称,username 和 password 分别是数据库用户名和密码。

    log4j.properties文件配置——log日志的配置

    log4j.properties 为 log4j 日志配置文件,主要将程序中打印的日志信息输出到控制台、保存到目录文件,可以通过配置设置日志文件的输出级别、格式、输出路径等。

    配置代码如下:

    log4j.rootLogger=DEBUG,Console,File
    
    #日志输出到控制台
    og4j.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=[%p][%t][%d{yyyy-MM-dd HH:mm:ss}][%C] - %m%n
    
    #日志输出到文件
    log4j.appender.File=org.apache.log4j.RollingFileAppender
    #日志存放位置
    log4j.appender.File.File=F://blog//run.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][%t][%d{yyyy-MM-dd HH:mm:ss}][%C] - %m%n

    下面我们解释下以上代码中需要注意的地方。

    (1)日志输出级别分为以下四种,优先级别为:

    ERROR > WARN > INFO > DEBUG

    输出原则为:程序会打印出高于或等于所设置级别的日志,设置的日志等级越高,打印出来的日志就越少,即:

    设置级别为 ERROR 只会打印出 ERROR 日志;
    
    设置级别为 WARN 会打印出 ERROR 和 WRAN 日志;
    
    设置级别为 INFO 会打印出 ERROR、WARN 和 INFO 日志;
    
    设置为 DEBUG 会打印出所有日志。

    本案例中 log4j.rootLogger=DEBUG,Console,File表示输出 DEBUG 以上级别日志。

    (2)上面代码中出现的 %m%p%d%c%n……分别代表的含义如下所示:

    %m 输出代码中指定的消息 
        %p 输出优先级,即DEBUG,INFO,WARN,ERROR,FATAL 
        %r 输出自应用启动到输出该log信息耗费的毫秒数 
        %c 输出所属的类目,通常就是所在类的全名 
        %t 输出产生该日志事件的线程名 
        %n 输出一个回车换行符,Windows平台为“rn”,Unix平台为“n” 
        %d 输出日志时间点的日期或时间,默认格式为ISO8601,也可以在其后指定格式,比如:%d{yyyy MMM dd HH:mm:ss,SSS},输出类似:2002年10月18日 :10:28,921
        %l 输出日志事件的发生位置,包括类目名、发生的线程,以及在代码中的行数。
        %x Used to output the NDC (nested diagnostic context) associated with the thread that generated the logging event
        %X Used to output the MDC (mapped diagnostic context) associated with the thread that generated the logging event for specified key

    (3)如下代码用来设定当文件到达设定大小时产生一个新的文件。

    log4j.appender.File=org.apache.log4j.RollingFileAppender

    将 RollingFileAppender 换成 DailyRollingFileAppender,则表示每天产生一个日志文件。

    (4)可以在下面的代码中设置你的日志文件的存放位置。

    log4j.appender.File.File=F://blog//run.log

    spring-mvc.xml 的配置

    srping-mvc.xml 为 SpringMVC 核心配置文件,主要包括 Controller 层的包扫描、视图模式配置(跳转路径的前后缀)、文件上传配置、静态资源处理等

    配置代码如下,关键地方均有注释说明:

    <?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:p="http://www.springframework.org/schema/p"
           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-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/mvc
                            http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd">
    
        <mvc:default-servlet-handler />
        <!-- 自动扫描 -->
        <context:component-scan base-package="dong.dreamland.www.controller"/>
    
        <!--避免IE执行AJAX时,返回JSON出现下载文件 -->
        <bean id="mappingJacksonHttpMessageConverter"
              class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">
            <property name="supportedMediaTypes">
                <list>
                    <value>text/html;charset=UTF-8</value>
                </list>
            </property>
        </bean>
    
        <!-- 默认的注解映射的支持,自动注册DefaultAnnotationHandlerMapping和AnnotationMethodHandlerAdapter -->
        <mvc:annotation-driven />
    
        <!-- 定义跳转的文件的前后缀 ,视图模式配置 -->
        <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
            <property name="prefix" value="/WEB-INF/" />
            <property name="suffix" value=".jsp"/>
        </bean>
    
        <!-- 文件上传配置 -->
        <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
            <!-- 默认编码 -->
            <property name="defaultEncoding" value="UTF-8"/>
            <!-- 上传文件大小限制为31M,31*1024*1024 -->
            <property name="maxUploadSize" value="32505856"/>
            <!-- 内存中的最大值 -->
            <property name="maxInMemorySize" value="4096"/>
        </bean>
    
        <!-- 对静态资源文件的访问-->
        <mvc:resources mapping="/images/**" location="/images/" cache-period="31556926"/>
        <mvc:resources mapping="/js/**" location="/js/" cache-period="31556926"/>
        <mvc:resources mapping="/css/**" location="/css/" cache-period="31556926"/>
    
    </beans>
    View Code

    配置后会看到有报红,我们创建相对应的包路径和文件夹,注意 css、js、images 在 webapp 路径下。

    在 java 目录右键 new -> Package -> wang.dreamland.www.controller。

    然后在 webapp 下右键 new -> Directory 分别创建 css、js 和 images 文件夹,如下图:

    spring-mybatis.xml 配置

    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" xmlns:tx="http://www.springframework.org/schema/tx"
           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
                            http://www.springframework.org/schema/tx
                            http://www.springframework.org/schema/tx/spring-tx.xsd">
    
        <!-- 自动扫描 -->
        <context:component-scan base-package="dong.dreamland.www"/>
    
        <!--第二种方式:加载多个properties文件-->
        <bean id="configProperties" class="org.springframework.beans.factory.config.PropertiesFactoryBean">
            <property name="locations">
                <list>
                    <value>classpath:jdbc.properties</value>
                </list>
            </property>
            <property name="fileEncoding" value="UTF-8"/>
        </bean>
        <bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PreferencesPlaceholderConfigurer">
            <property name="properties" ref="configProperties"/>
        </bean>
    
        <!-- 配置数据源 -->
        <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"
              destroy-method="close">
            <property name="driverClassName" value="${driverClasss}"/>
            <property name="url" value="${jdbcUrl}"/>
            <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>
    
        <!-- mybatis和spring完美整合,不需要mybatis的配置映射文件 -->
        <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
            <property name="dataSource" ref="dataSource"/>
            <!-- 配置Mybati的核心配置文件 -->
            <property name="configLocation" value="classpath:mybatis-config.xml" />
    
            <!-- 自动扫描mapping.xml文件 -->
            <!--   <property name="mapperLocations" value="classpath:mapping/*.xml"></property>-->
        </bean>
    
        <!--  DAO接口所在包名,Spring会自动查找其下的类 -->
        <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
            <property name="basePackage" value="wang.dreamland.www.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 transaction-manager="transactionManager"/>
    </beans>
    View Code

    注意 dao 接口扫描包路径是 wang.dreamland.www.dao,之后配置 dao 时记得别配错路径了,否则会报错。

    <property name="basePackage" value="wang.dreamland.www.dao"/>

    mybatis-config.xml 配置

    mybatis-config.xml 是 MyBatis 的核心配置文件,包括驼峰命名、别名、通用 mapper、分页插件配置等

    配置代码如下,关键地方均有注释说明:

    <?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>
        <!-- 别名 -->
        <typeAliases>
            <!--默认别名为:javabean 的首字母小写的非限定类名来作为它的别名-->
            <package name="dong.dreamland.www.entity" />
        </typeAliases>
        <plugins>
            <plugin interceptor="tk.mybatis.mapper.mapperhelper.MapperInterceptor">
                <!--主键自增回写方法,默认值MYSQL,详细说明请看文档HSQLDB-->
                <property name="IDENTITY" value="MYSQL"/>
    
                <!--可选参数一共3个,对应0,1,2,分别为SequenceName,ColumnName,PropertyName-->
                <property name="seqFormat" value="{0}.nextval"/>
    
                <!--通用Mapper接口,多个通用接口用逗号隔开-->
                <property name="mappers" value="tk.mybatis.mapper.common.Mapper"/>
            </plugin>
            <!-- 自定义分页插件 -->
            <!--   <plugin interceptor="wang.dreamland.www.common.PageHelper"></plugin>-->
    
        </plugins>
    </configuration>
    View Code

    上面代码中,wang.dreamland.www.entity 对应的是实体类包路径,之后新建实体时就放在该路径下:

    <package name="wang.dreamland.www.entity" />

    web.xml 配置

    web.xml 为 Web 容器的配置文件,用来初始化配置信息,主要定义了:

    1. Web 应用的名字、描述(display-name 和 description 标签);
    2. 应用范围的初始化参数(context-param 标签);
    3. 过滤器配置(filter 标签);
    4. 监听器配置(listener 标签);
    5. servlet 配置(servlet 标签,如前端控制器和验证码);
    6. 欢迎页面(welcome-file-list 标签,如 index.jsp 页面);
    7. session失效时间(session-config 标签);
    8. 错误页面配置(error-page 标签,如 404、500错误页面等)。

    配置代码如下所示:

    <?xml version="1.0" encoding="UTF-8"?>
    <web-app xmlns="http://java.sun.com/xml/ns/javaee"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
              http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
             version="3.0">
    
      <display-name>dreamland-web</display-name>
    
      <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>
          classpath*:spring-mybatis.xml
        </param-value>
      </context-param>
    
      <context-param>
        <param-name>log4jConfigLocation</param-name>
        <param-value>classpath:log4j.properties</param-value>
      </context-param>
    
      <!-- 编码过滤器 解决POST乱码问题-->
      <filter>
        <filter-name>encodingFilter</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>encodingFilter</filter-name>
        <url-pattern>/*</url-pattern>
      </filter-mapping>
    
      <!-- spring监听器 -->
      <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
      </listener>
    
      <!-- 防止spring内存溢出监听器,比如quartz -->
      <listener>
        <listener-class>org.springframework.web.util.IntrospectorCleanupListener</listener-class>
      </listener>
    
      <!-- spring mvc servlet-->
      <servlet>
        <servlet-name>SpringMVC</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <init-param>
          <param-name>contextConfigLocation</param-name>
          <param-value>classpath:spring-mvc.xml</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
        <async-supported>true</async-supported>
      </servlet>
      <!-- servlet-mapping -->
      <servlet-mapping>
        <servlet-name>SpringMVC</servlet-name>
        <!-- 此处也可以配置成 *.do 形式 -->
        <url-pattern>/</url-pattern>
      </servlet-mapping>
    
      <!-- 指明对于如下资源文件不采用spring的过滤器 -->
      <servlet-mapping>
        <servlet-name>default</servlet-name>
        <url-pattern>*.xml</url-pattern>
      </servlet-mapping>
      <servlet-mapping>
        <servlet-name>default</servlet-name>
        <url-pattern>*.css</url-pattern>
      </servlet-mapping>
    
      <welcome-file-list>
        <welcome-file>index.jsp</welcome-file>
      </welcome-file-list>
    
      <!-- session配置 -->
      <session-config>
        <session-timeout>15</session-timeout>
      </session-config>
    </web-app>
    View Code

    配置完成后的整体目录结构如下:

    添加 Tomcat 服务并启动

    添加 Tomcat Server

    点击右上角的倒三角 -> Edit Configurations,如下图所示:

    启动 Tomcat

    启动项目后,访问 127.0.0.1:8080 或者 localhost:8080,可以看到页面上出现了熟悉的 “Hello World!”,表示 SSM 框架搭建完成!

    配置文件加载顺序

    Web 容器加载配置文件顺序

    上面,我们把配置文件配置好了,那怎样才能起作用呢?这就需要 Web 容器来加载了。Web 容器加载配置文件的过程如下。

    启动 Tomcat 后,Web 容器首先加载 web.xml 文件。

    web.xml 文件是创建 Web 项目所需要的配置文件,用来初始化配置信息,主要包含拦截器、过滤器、servlet 等的配置,它的位置在项目 WEB-INF 目录下。

    在 web.xml 的 <context-param>中加载其他 XML 和 log4j.properties 文件,代码如下:

    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>
          classpath*:spring-mybatis.xml,
          classpath*:applicationContext-redis.xml,
          classpath*:applicationContext-activemq.xml,
        </param-value>
          </context-param>
    
         <context-param>
        <param-name>log4jConfigLocation</param-name>
        <param-value>classpath:log4j.properties</param-value>
          </context-param>

    其中 param-name 的名称是固定格式,param-value 是要加载的配置文件名,多个用逗号隔开,通过 Ctrl+鼠标左键可定位到相应配置文件。

    接着,根据 spring-mybatis.xml 中的 PropertiesFactoryBean 加载多个 properties 文件,代码如下:

  • 相关阅读:
    更新glibc,删除libc库后,命令行都不能使用了
    进程和线程、协程的区别
    PMP项目管理--资源管理
    清除缓存 echo 1/2/3 > /proc/sys/vm/drop_caches
    gdb malloc方法
    随时更新---能力集
    输出gdb调试信息到文件中
    主动生成core文件 gcore +pid
    PMP项目管理--风险管理
    linux后台程序
  • 原文地址:https://www.cnblogs.com/doyi111/p/11815555.html
Copyright © 2020-2023  润新知