栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

【SpringMVC从入门到精通】00-SpringMVC 简介

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

【SpringMVC从入门到精通】00-SpringMVC 简介

笔记来源:【尚硅谷】SpringMVC教程丨一套快速上手spring mvc

文章目录

SpringMVC 简介

1、课程介绍2、什么是 MVC?3、什么是 SpringMVC?4、SpringMVC 的特点5、HelloWorld

5.1、开发环境5.2、创建 Maven 工程5.3、配置 web.xml

1)默认配置方式2)扩展配置方式 5.4、创建请求控制器5.5、创建 SpringMVC 配置文件5.6、测试

1)访问首页2)访问指定页面 6、SpringMVC 请求处理底层原理附录:SpringMVC 工程创建整体流程总结

SpringMVC 简介 1、课程介绍

2、什么是 MVC?

MVC 是一种软件架构思想,将软件分为模型、视图、控制器三部分

M(Model,模型层):处理数据的 JavaBean 类

实体类 Bean:存储业务数据业务处理 Bean:Service 或 Dao,处理业务逻辑和数据访问 V(View,视图层):展示数据的 HTML 页面,与用户进行交互C(Controller,控制层):接受请求和响应的 Servlet

MVC 工作流程

    用户通过视图层发送请求到服务器,在服务器中请求被Controller 接收Controller 调用相应的 Model 层处理请求Model 层处理完毕将结果返回到 ControllerController 再根据请求处理的结果找到相应的 View 视图View 视图渲染数据后最终响应给浏览器
3、什么是 SpringMVC?

SpringMVC 是 Spring 的一个后续产品,是Spring的一个子项目

SpringMVC 是 Spring 为表述层开发提供的一整套完备的解决方案。在表述层框架历经 Struts、WebWork、Strust2 等诸多产品的历代更迭之后,目前业界普遍选择了 SpringMVC 作为 JavaEE 项目表述层开发的首选方案

注:三层架构分为表述层(或表示层)、业务逻辑层、数据访问层,表述层表示前台页面和后台 Servlet

4、SpringMVC 的特点

Spring 家族原生产品:与 IOC 容器等基础设施无缝对接基于原生的 Servlet:通过了功能强大的前端控制器 DispatcherServlet,对请求和响应进行统一处理全面解决方案:表述层各细分领域需要解决的问题全方位覆盖代码清新简洁:大幅度提升开发效率即插即用:内部组件化程度高,组件可插拨,想要什么功能配置相应组件即可性能卓著:尤其适合现代大型、超大型互联网项目要求 5、HelloWorld 5.1、开发环境

IDE:idea 2021.1构建工具:maven-3.8.3服务器:tomcat7Spring版本:5.3.16 5.2、创建 Maven 工程

1)新建工程,默认 NEXT

2)填写工程名称、保存为止和 GAV 坐标,点击 FINISH

3)pom.xml中添加并导入依赖


    
    
        org.springframework
        spring-webmvc
        5.3.16
    
    
    
        ch.qos.logback
        logback-classic
        1.2.11
        test
    
    
    
        javax.servlet
        javax.servlet-api
        4.0.1
        provided
    
    
    
        org.thymeleaf
        thymeleaf-spring5
        3.0.15.RELEASE
    

根据依赖的传递性,相关的依赖也会被导入

4)项目工程结构中添加 web 模块,注意web.xml的路径要放在srcmainwebapp下

完成后的目录结构

5.3、配置 web.xml

为什么要配置web.xml?注册 SpringMVC 的前端控制器 DispatcherServlet

1)默认配置方式

此配置作用下,SpringMVC 的配置文件默认位于 WEB-INF 下,默认名称为-servlet.xml

例如,以下配置所对应 SpringMVC 的配置文件位于 WEB-INF 下,文件名为springMVC-servlet.xml


    springMVC
    org.springframework.web.servlet.DispatcherServlet


    springMVC
    
    /

默认配置方式对位置和名称都是默认的,这样并不好!Maven 工程配置文件应该统一放置在resources下,应该如何来实现呢?来看下面的“扩展配置方式”

2)扩展配置方式

通过init-param标签设置 SpringMVC 配置文件的位置和名称通过load-on-startup标签设置 SpringMVC 前端控制器 DispatcherServlet 的初始化时间


    springMVC
    org.springframework.web.servlet.DispatcherServlet
    
    
        
        contextConfigLocation
        
        classpath:springMVC.xml
    
    
    1


    springMVC
    
    /

注:标签中使用/和/*的区别:

/所匹配的请求可以是/login或.html或.js或.css方式的请求路径,但是/不能匹配.jsp请求路径的请求

因此就可以避免在访问.jsp页面时,该请求被 DispatcherServlet 处理,从而找不到相应的页面的情况

/*则能够匹配所有请求,例如在使用过滤器时,若需要对所有请求进行过滤,就需要使用/*的写法

5.4、创建请求控制器

由于前端控制器对浏览器发送的请求进行了统一的处理,但是具体的请求有不同的处理过程,因此需要创建处理具体请求的类,即请求控制器

请求控制器中每一个处理请求的方法称为控制器方法

因为 SpringMVC 的控制器由一个 POJO(普通 Java 类)担任,因此需要通过@Controller注解将其标识为一个控制层组件,交给 Spring 的 IOC 容器管理,此时 SpringMVC 才能够识别控制器的存在

@Controller
public class HelloController {
}
5.5、创建 SpringMVC 配置文件



    
    
    
        
            
                
                    
                    
                    
                    
                    
                    
                
            
        
    

5.6、测试 1)访问首页

创建首页index.html




    
    首页


首页

在请求控制器中创建处理请求的方法

//@RequestMapping 注解:处理请求和控制器方法之间的映射关系
//@RequestMapping 注解的 value 属性可以通过请求地址匹配请求,/ 表示的当前工程的上下文路径
// localhost:8080/springMVC/
@RequestMapping("/")
public String index() {
    //返回视图名称
    return "index";
}

访问首页

2)访问指定页面

在主页index.html创建超链接

访问指定页面target.html

但是这种写法是不行的,可以看到,当鼠标悬浮在超链接上时,左下角的跳转路径提示信息从 8080 下访问的

这是因为我们是以/开头的,它分为浏览器解析和服务器解析两种方式,而超链接中的绝对路径就是由浏览器解析的,而不是从上下文路径访问

虽然我们可以通过添加上下文的方式实现,因为上下文路径可以改,所以这种方式肯定是杜绝的

访问指定页面target.html

那应该如何处理呢?这里就可以使用thymeleaf来动态获取上下文路径

首先需要在标签中引入thymeleaf的命名空间xmlns:th="http://www.thymeleaf.org"然后使用th:前缀修饰标签属性,这里使用th:href来修饰标签的属性最后th:href中的属性值中包裹一层@{},这里值为@{/target.html}




    
    首页


首页

访问指定页面target.html

同时,后台请求控制器也要加上对target请求进行处理的控制器方法

@RequestMapping("/target")
public String toTarget() {
    return "target";
}

访问指定页面

跳转成功

6、SpringMVC 请求处理底层原理

浏览器发送请求,若请求地址符合前端控制器的url-pattern,该请求就会被前端控制器 DispatcherServlet 处理前端控制器会读取 SpringMVC 的核心配置文件,通过扫描组件找到控制器,将请求地址和控制器中@RequestMapping注解的value属性值进行匹配。若匹配成功,该注解所标识的控制器方法就是处理请求的方法处理请求的方法需要返回一个字符串类型的视图名称,该视图名称会被视图解析器解析,加上前缀和后缀组成视图的路径,通过 Thymeleaf 对视图进行渲染,最终转发到视图所对应页面 附录:SpringMVC 工程创建整体流程

概览

1)配置pom.xml、web.xml、springMVC.xml2)创建前台页面和后台请求控制器

详解

1)添加pom.xml依赖



    4.0.0

    com.vectorx
    springmvc-demo
    1.0-SNAPSHOT
    war
    
        8
        8
    

    
        
            org.springframework
            spring-webmvc
            5.3.16
        
        
            ch.qos.logback
            logback-classic
            1.2.11
            test
        
        
            javax.servlet
            javax.servlet-api
            4.0.1
            provided
        
        
            org.thymeleaf
            thymeleaf-spring5
            3.0.15.RELEASE
        
    

2)创建web.xml配置文件



    
        springMVC
        org.springframework.web.servlet.DispatcherServlet
        
            contextConfigLocation
            classpath:springMVC.xml
        
        1
    
    
        springMVC
        /
    

3)创建springMVC.xml配置文件



    
    
    
        
            
                
                    
                    
                    
                    
                
            
        
    

4)创建前台页面

index.html




    
    首页


首页

访问指定页面target.html

target.html




    
    HelloWorld


Hello World!

5)创建Controller请求控制器

@Controller
public class HelloController {
    @RequestMapping("/")
    public String index() {
        //返回视图名称
        return "index";
    }
    @RequestMapping("/target")
    public String toTarget() {
        return "target";
    }
}
总结

最后奉上本节导图,内容仅供参考

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/762828.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号