欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Spring MVC 开发环境搭建

程序员文章站 2022-04-01 23:01:54
...

1.项目创建

首先我们创建一个新项目

Spring MVC 开发环境搭建

选择Maven->Create from archetype ->maven-archetype-webapp

Spring MVC 开发环境搭建

设置groupId,artifactId,默认版本1.0-SNAPSHOT

Spring MVC 开发环境搭建

选择maven目录,我这里用的是idea自带的maven插件,设置maven的setting.xml位置

Spring MVC 开发环境搭建

设置项目名称和项目地址 - 然后点击完成

Spring MVC 开发环境搭建

我们来看下项目初始化的目录结构

Spring MVC 开发环境搭建

2.pom.xml配置

我们打开pom.xml,我们可以看到定义了一些项目的基础配置,以及项目引用了junit依赖

Spring MVC 开发环境搭建

我们继续引入我们需要的依赖,因为我们是一个Spring MVC 的项目,我们要引入Spring的bean,然后我们还要引入Spring 上下文,那么Spring基础的配置就引用完了

        <!-- Spring 基础配置 -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-beans</artifactId>
            <version>${springframework.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>${springframework.version}</version>
        </dependency>

接下来,我们需要引入Spring MVC的配置,同时我们加上Spring Web以及Spring JDBC的配置

        <!-- Spring MVC + Spring WEB -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-web</artifactId>
            <version>${springframework.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-webmvc</artifactId>
            <version>${springframework.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-jdbc</artifactId>
            <version>${springframework.version}</version>
        </dependency>

至此,我们Spring所需相关依赖就配置完成了,因为Spring的版本统一,所以单独用<properties>标签包围起来

    <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>
        <springframework.version>4.3.10.RELEASE</springframework.version>
    </properties>

Spring MVC的核心依赖配置完了之后呢,我们配置一下数据库相关的一些配置,我们还是使用mybatis处理我们的sql,引入mybatis,因为我们项目里需要打通mybatis和spring 的关联,我们还要需要引入mybatis关联Spring的包

        <!-- mybatis -->
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.4.0</version>
        </dependency>
        <!-- mybatis 关联 spring -->
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis-spring</artifactId>
            <version>1.3.0</version>
        </dependency>

接下来我们引入druid,用它来做数据源的管理

        <!-- druid 数据源管理 -->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid</artifactId>
            <version>1.0.20</version>
        </dependency>

我们的数据库使用的mysql,我们引入mysql的包,然后我们数据库相关的就配置完成了

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

接下来,我们引入lombok,开发必备~

        <!-- lombok-->
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.16.12</version>
        </dependency>

接下来,我们继续引入新的依赖,我们的项目里会使用到json,包括我们普通接口的返回,以及我们项目中代码的处理,这里我们json的解析工具使用Jackson,至此,我们基础的maven配置就完成了

        <!-- Jackson -->
        <dependency>
            <groupId>com.fasterxml.jackson.datatype</groupId>
            <artifactId>jackson-datatype-guava</artifactId>
            <version>2.5.3</version>
        </dependency>

3.web.xml配置

首先我们来看下web.xml的默认配置

Spring MVC 开发环境搭建

首先呢,我们需要为spring环境指定个listener,它负责来监听我们上下文 spring bean的加载 

<!-- 监听上下文 spring bean 的加载 -->
    <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>

指定spring 加载所需要的文件,首先在‘src/main/resources/ ’目录下新建resources目录,并设置目录类型为resources,在该目录下新增配置文件

Spring MVC 开发环境搭建

 <!-- spring beans 配置文件所在目录,加了classpath路径会在resources目录去找,不加则在WEB-INF目录下去找 -->
    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>classpath:applicationContext.xml</param-value>
    </context-param>

接下来我们配置spring mvc,然后需要配置spring-servlet.xml, 文件名必须是‘ servlet-name’加‘-servlet’,这样spring会自动读取该文件

<!-- spring mvc 配置 专门处理配发请求,本配置处理所有请求 -->
    <servlet>
        <servlet-name>spring</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>spring</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>

Spring MVC 开发环境搭建

配置完spring mvc之后我们要指定我们的项目编码,其实是一个过滤器,对请求进行过滤,设置他们的编码

<!-- 设置项目编码,相当于过滤器,对一些请求做一些过滤 -->
    <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>
        <init-param>
            <param-name>forceEncoding</param-name>
            <param-value>true</param-value>
        </init-param>
    </filter>
    <filter-mapping>
        <filter-name>encodingFilter</filter-name>
        <!-- /* 匹配所有,/ 匹配不带后缀的 -->
        <url-pattern>/*</url-pattern>
    </filter-mapping>

接下来我们还需要一个配置,当我们什么都不指定的时候,它会返回哪个目录

    <welcome-file-list>
        <welcome-file>index.jsp</welcome-file>
    </welcome-file-list>

这样,我们的web.xml基本就配置好了,这里呢它指定了我们spring加载的配置文件,以及spring mvc的配置,同时我们配置了项目编码,我们还新增了两个文件 applicationContext.xml和spring-servlet.xml,后续我们需要配置这两个文件

4.spring-servlet.xml配置

配置使上下文的配置能直接被使用

    <context:annotation-config/>

启动注解驱动spring mvc功能,有了这个配置,我们Controller注解,Service注解和Component注解都会自动成为spring管理的bean

<!-- 启动注解驱动的spring mvc 功能 -->
    <mvc:annotation-driven/>

启动包扫描功能,并新建相应的目录

<!-- 启动包扫描功能 -->
    <context:component-scan base-package="com.ryan.controller"/>
    <context:component-scan base-package="com.ryan.service"/>

接下来配置视图解析,这样我们spring-servlet.xml就配置好了

    <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping" />

    <bean class="org.springframework.web.servlet.view.BeanNameViewResolver"/>

    <bean id="jsonView" class="org.springframework.web.servlet.view.json.MappingJackson2JsonView"/>

    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix" value="/WEB-INF/views/"/>
        <property name="suffix" value=".jsp"/>
    </bean>

5.applicationContext.xml配置

首先我对数据源进行配置,同时配置占位符替换功能,新增settings.properties

   <bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
        <!-- 忽略不能识别的占位 -->
        <property name="ignoreUnresolvablePlaceholders" value="true"/>
        <!-- 指定配置文件 -->
        <property name="locations">
            <list>
                <value>classpath:settings.properties</value>
            </list>
        </property>
    </bean>

    <import resource="redis.xml"/>

    <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource" init-method="init" destroy-method="close">
        <property name="driverClassName" value="${db.driverClassName}"/>
        <property name="url" value="${db.url}"/>
        <property name="username" value="${db.username}"/>
        <property name="password" value="${db.password}"/>
        <property name="initialSize" value="3"/>
        <property name="minIdle" value="3"/>
        <property name="maxActive" value="20"/>
        <property name="maxWait" value="60000"/>
        <property name="filters" value="stat,wall"/>
    </bean>

Spring MVC 开发环境搭建

接下来定义session factory

    <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
        <property name="configLocation" value="classpath:mybatis-config.xml"/>
        <property name="dataSource" ref="dataSource"/>
        <property name="mapperLocations" value="classpath:mapper/*.xml"/>
    </bean>

    <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
        <property name="basePackage" value="com.ryan.dao"/>
        <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"/>
    </bean>

事物配置

    <!-- tx -->
    <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
        <property name="dataSource" ref="dataSource"/>
    </bean>
    <tx:annotation-driven transaction-manager="transactionManager"/>

配置stat和wall

    <!-- druid -->
    <bean id="stat-filter" class="com.alibaba.druid.filter.stat.StatFilter">
        <property name="slowSqlMillis" value="3000"/>
        <property name="logSlowSql" value="true"/>
        <property name="mergeSql" value="true"/>
    </bean>
    <bean id="wall-filter" class="com.alibaba.druid.wall.WallFilter">
        <property name="dbType" value="mysql"/>
    </bean>

6.druid配置

配置druid访问,在web.xml配置

<!-- druid -->
    <servlet>
        <servlet-name>DruidStatServlet</servlet-name>
        <servlet-class>com.alibaba.druid.support.http.StatViewServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>DruidStatServlet</servlet-name>
        <url-pattern>/sys/druid/*</url-pattern>
    </servlet-mapping>
    <filter>
        <filter-name>DruidWebStatFilter</filter-name>
        <filter-class>com.alibaba.druid.support.http.WebStatFilter</filter-class>
        <init-param>
            <param-name>exclusions</param-name>
            <param-value>*.js,*.css,*.jpg,*.png,*.ico,*.gif,/sys/druid/*</param-value>
        </init-param>
    </filter>
    <filter-mapping>
        <filter-name>DruidWebStatFilter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>

7.mybatis-config.xml配置

<configuration>
    <settings>
        <setting name="safeRowBoundsEnabled" value="true"/>
        <setting name="cacheEnabled" value="false"/>
        <setting name="useGeneratedKeys" value="true"/>
    </settings>

    <!--    <typeAliases>-->
    <!--        <typeAlias type="com.xxx" alias="bb"/>-->
    <!--    </typeAliases>-->

    <!--    <plugins>-->
    <!--        <plugin interceptor=""></plugin>-->
    <!--    </plugins>-->

</configuration>

8.logback.xml配置

打开pom.xml,引入logback的依赖,并引入slf4j,结合使用,并新建logback.xml

        <!-- logback -->
        <dependency>
            <groupId>ch.qos.logback</groupId>
            <artifactId>logback-core</artifactId>
            <version>1.1.8</version>
        </dependency>
        <dependency>
            <groupId>ch.qos.logback</groupId>
            <artifactId>logback-classic</artifactId>
            <version>1.1.8</version>
        </dependency>
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-api</artifactId>
            <version>1.7.22</version>
        </dependency>
<?xml version="1.0" encoding="UTF-8"?>
<configuration scan="true" scanPeriod="60 seconds">

    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger - %msg%n</pattern>
        </encoder>
    </appender>

    <!--<appender name="permission" class="ch.qos.logback.core.rolling.RollingFileAppender">-->
    <!--<file>${catalina.home}/logs/permission.log</file>-->
    <!--<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">-->
    <!--<FileNamePattern>${catalina.home}/logs/permission.%d{yyyy-MM-dd}.log.gz</FileNamePattern>-->
    <!--</rollingPolicy>-->
    <!--<layout class="ch.qos.logback.classic.PatternLayout">-->
    <!--<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger - %msg%n</pattern>-->
    <!--</layout>-->
    <!--</appender>-->
    <!---->
    <!--<logger name="xxx" level="INFO">-->
    <!--<appender-ref ref="permission"/>-->
    <!--</logger>-->

    <!-- TRACE < DEBUG < INFO < WARN < ERROR -->
    <root level="INFO">
        <appender-ref ref="STDOUT" />
    </root>

</configuration>

Spring MVC 开发环境搭建

9.环境验证

新建TestController,TestDao 和 TestMapper ,并配置tomcat,期间会报错,把spring-servlet  RequestMappingHandlerMapping注释掉即可运行,这样一套SpringMVC环境就搭建完成了     

public interface TestDao {
}
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.ryan.dao.TestDao">

</mapper>

 

Spring MVC 开发环境搭建