Spring MVC 开发环境搭建

1.项目创建

首先我们创建一个新项目

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

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

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

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

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

2.pom.xml配置

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

我们继续引入我们需要的依赖,因为我们是一个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环境指定个listener,它负责来监听我们上下文 spring bean的加载 

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

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

 <!-- 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之后我们要指定我们的项目编码,其实是一个过滤器,对请求进行过滤,设置他们的编码

<!-- 设置项目编码,相当于过滤器,对一些请求做一些过滤 -->
    <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>

接下来定义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>

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>

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值