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

SpringMVC学习笔记——2.SpringMVC

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

SpringMVC学习笔记——2.SpringMVC

创建maven工程

1、在项目中新建模块(module)

2、选择Maven工程
3、设置模块名称和maven三坐标
4、对创建好的maven模块进行maven版本和本地仓库配置

5、配置pom.xml配置文件

  • 配置打包方式< packaging>war
  • 引入依赖< dependencies>< dependency>Maven三坐标< /dependency>< /dependencies>
    
    war

    
    
        
        
            org.springframework
            spring-webmvc
            5.3.1
        
        
        
            ch.qos.logback
            logback-classic
            1.2.3
        
        
        
            javax.servlet
            javax.servlet-api
            3.1.0
            provided
        
        
        
            org.thymeleaf
            thymeleaf-spring5
            3.0.12.RELEASE
        
    

6、配置web描述符

配置web.xml

注册SpringMVC的前端控制器DispatcherServlet

默认配置方式配置web.xml
此配置作用下,SpringMVC的配置文件默认位于WEB-INF下,默认名称为< servlet-name>-servlet.xml,例如,以下配置所对应SpringMVC的配置文件位于WEB-INF下,文件名为springMVC-servlet.xml


 
    
    
        SpringMVC
        org.springframework.web.servlet.DispatcherServlet
    
    
        SpringMVC
        
        /
    

扩展配置方式配置web.xml(最常用的配置方式)
可通过init-param标签设置SpringMVC配置文件的位置和名称,通过load-on-startup标签设置
SpringMVC前端控制器DispatcherServlet的初始化时间



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

注:
< url-pattern>标签中使用/和/*的区别:
/所匹配的请求可以是/login或.html或.js或.css方式的请求路径,但是/不能匹配.jsp请求路径的请
求
因此就可以避免在访问jsp页面时,该请求被DispatcherServlet处理,从而找不到相应的页面
/*则能够匹配所有请求,例如在使用过滤器时,若需要对所有请求进行过滤,就需要使用/*的写
法

创建请求控制器

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

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

package com.atguigu.mvc.controller;

import org.springframework.stereotype.Controller;

//注解+扫描方式配置控制器
//将类表示为IOC容器组件的注解:
// Component(标识为普通组件)Controller(标识为控制层组件)Service(标识为业务层组件)Repository(标识为持久层组件)
@Controller
public class HelloController {
}

创建SpringMVC配置文件(位于main路径下的resources文件中)


    
    

    
    
        
        
        
        
            
                
                    
                        
                        
                        
                        
                        
                        
                    
                
            
        
    


根据thymelaef配置,在WEB-INF/templates文件中创建index.html



    
    首页


首页

在请求控制器中创建请求方法@RequestMapping
package com.atguigu.mvc.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

//注解+扫描方式配置控制器
//将类表示为IOC容器组件的注解:
// Component(标识为普通组件)Controller(标识为控制层组件)Service(标识为业务层组件)Repository(标识为持久层组件)
@Controller
public class HelloController {

    //请求路径“/” 访问页面/WEB-INF/templates/index.html

    @RequestMapping( "/")
    public String index(){
        //返回视图名称
        return "index";
    }
}

@RequestMapping注解是web应用程序中最常被用到的注解之一,作用就是映射URL路径,将http的请求地址映射到控制器 (controller)类的处理方法上。

@RequestMapping可以定义在类控制器上,也可以定义在类里面的方法上。

  • 定义在类控制器上:将http请求映射到该控制器上,规定初步的请求映射地址,相当于请求地址的父路径。类中的所有响应请求的方法都是以该地址作为父路径。
  • 定义在类方法上:进一步制定控制器处理方法的映射关系,如果在该控制器类上没有定义@RequestMapping注解,则直接将请求地址映射到处理方法上。
通过超链接跳转到制定页面



    
    首页


首页

访问目标页面target.html

通过thymeleaf解析绝对路径,首先html标签中必须有thymeleaf的命名空间xmlns:th=“http://www.thymeleaf.org”;通过thymeleaf解析一个属性,首先在属性前面加th:,通过@{}语法解析绝对路径,th:href="@{/target}

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

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

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

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