SpringMVC配置

SpringMVC

在这里插入图片描述

一、基本操作

1、介绍

在这里插入图片描述

封装Servlet

2、SpringMVC优势

SpringMVC是Spring为表述层开发提供的一整套完备的解决方案。

在表述层框架历经Strust、WebWork、Strust2等诸多产品的历代更迭之后,目前业界普遍选择了SpringMVC作为Java EE项目表述层开发的首选方案。之所以能做到这一点,是因为SpringMVC具备如下显著优势:

  • Spring 家族原生产品,与IOC容器等基础设施无缝对接
  • 表述层各细分领域需要解决的问题全方位覆盖,提供全面解决方案
  • 代码清新简洁,大幅度提升开发效率
  • 内部组件化程度高,可插拔式组件即插即用,想要什么功能配置相应组件即可
  • 性能卓著,尤其适合现代大型、超大型互联网项目要求

3、环境搭建

①导入依赖
<dependencies>
    <!-- SpringMVC -->
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-webmvc</artifactId>
        <version>5.3.1</version>
    </dependency>
    
    <!-- 日志 -->
    <dependency>
        <groupId>ch.qos.logback</groupId>
        <artifactId>logback-classic</artifactId>
        <version>1.2.3</version>
    </dependency>
    
    <!-- ServletAPI -->
    <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>javax.servlet-api</artifactId>
        <version>3.1.0</version>
        <scope>provided</scope>
    </dependency>
    
    <!-- Spring5和Thymeleaf整合包 -->
    <dependency>
        <groupId>org.thymeleaf</groupId>
        <artifactId>thymeleaf-spring5</artifactId>
        <version>3.0.12.RELEASE</version>
    </dependency>

    <!-- Lombok -->
    <dependency>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
        <version>1.18.12</version>
        <scope>provided</scope>
    </dependency>
</dependencies>
②转换module类型

将当前module转换为Web工程,在这个过程中生成web.xml。

在这里插入图片描述

需要手动调整xml路径

③web.xml
<!--  配置SpringMVC中的前端控制器DispatcherServlet-->
<servlet>
    <servlet-name>SpringMVC</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
</servlet>
<servlet-mapping>
    <servlet-name>SpringMVC</servlet-name>

    <!-- 对DispatcherServlet来说,url-pattern有两种方式配置 -->
    <!-- 方式一:配置“/”,表示匹配整个Web应用范围内所有请求。这里有一个硬性规定:不能写成“/*”,因为SpringMVC不能解析jsp。只有这一个地方有这个特殊要求,以后我们再配置Filter还是可以正常写“/*”。 -->
    <!-- 方式二:配置“*.扩展名”,表示匹配整个Web应用范围内部分请求 -->
    <url-pattern>/</url-pattern>
</servlet-mapping>
④创建请求控制器

在这里插入图片描述

SPringMVC中的控制器由一个POJO担任,因此使用**@Controller注解将其标记成为控制层组件**,交给IOC管理,SpringMVC才能够识别

@Controller
public class HelloController {
    
}
⑤Spring配置文件
    <!-- 自动扫描包 -->
    <context:component-scan base-package="controller"/>

    <!-- Thymeleaf视图解析器 -->
    <bean id="viewResolver" class="org.thymeleaf.spring5.view.ThymeleafViewResolver">
        <property name="order" value="1"/>
        <property name="characterEncoding" value="UTF-8"/>
        <property name="templateEngine">
            <bean class="org.thymeleaf.spring5.SpringTemplateEngine">
                <property name="templateResolver">
                    <bean class="org.thymeleaf.spring5.templateresolver.SpringResourceTemplateResolver">

                        <!-- 视图前缀 -->
                        <property name="prefix" value="/WEB-INF/templates/"/>

                        <!-- 视图后缀 -->
                        <property name="suffix" value=".html"/>
                        <property name="templateMode" value="HTML5"/>
                        <property name="characterEncoding" value="UTF-8" />
                    </bean>
                </property>
            </bean>
        </property>
    </bean>

注意该路径:/WEB-INF/templates/

所有html文件需要放置在templates下

⑥设置TomCat

在这里插入图片描述

⑦在请求控制器中使用@RequestMapping注解
@Controller
public class HelloController {
    //如果请求路径和Value值相同,则执行该处理方法
    @RequestMapping("/")
    public String entrance(){
        //将逻辑视图返回
        return "index";
    }
}

处理流程:

1.检测到@RequestMapping(“/”)相同路径

2.方法将视图逻辑层返回

3.Thymeleaf拼接前后缀:index.html

⑧执行测试即可

在这里插入图片描述

tips:
<a th:href="@{/hello}"></a>

使用Thymeleaf语法可以自动添加上下文路径

4、总结

  1. 浏览器发送请求,在 web.xml 中进行筛选,如果格式符合(不为jsp格式),则被DIspatcherServlet处理(所有的Servlet都经过此处理)
  2. 通过SpringMVC.xml找到控制器(controller),通过注解**@RequestMapping中的value值** 与路径匹配
  3. 如果一致则执行注解下的方法
  4. 方法返回值 会被Thymeleaf拼接成完整地址,之后进行渲染并转发
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值