超详细从0到1快速搭建SpringMVC开发环境

目录

1、搭建环境

1、Maven项目,添加web模块

 2、设置子模块的打包方式为,打war包并引入依赖

2、注册Spring前端控制器

2.1、默认配置方式(弃用)

2.2、扩展配置方式(推荐)

3、创建请求控制器

4、配置SpringMVC配置文件

5、测试

5.1、实现对首页的访问

5.2、通过超链接跳转到指定页面

6、总结


超详细从0到1快速搭建SpringMVC开发环境_第1张图片

使用thymeleaf作为模板引擎

1、搭建环境

1、Maven项目,添加web模块

手动在src.main.java下,创建webapp目录,然后通过Project Structure,在webapp目录下创建WEB-INF/web.xml文件

超详细从0到1快速搭建SpringMVC开发环境_第2张图片 增加框架支持

超详细从0到1快速搭建SpringMVC开发环境_第3张图片

 2、设置子模块的打包方式为,打war包并引入依赖

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

这里的其余底层依赖由Maven自动导入

注意servlet的作用范围,否则部署时容易出问题。

 超详细从0到1快速搭建SpringMVC开发环境_第4张图片

2、注册Spring前端控制器

注册SpringMVC的前端控制器DispatcherServlet

2.1、默认配置方式(弃用)

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

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



    springMVC
    org.springframework.web.servlet.DispatcherServlet


    springMVC
    
    /

这种配置方式存在的问题

这样配置,会导致SpringMVC的配置文件位于WEB-INF下,文件名为springMVC-servlet.xml。

而Maven中,配置文件应该都存放在resources目录下,需要使用SpringMVC的扩展配置方式来实现。



    springDispatcherServlet
    org.springframework.web.servlet.DispatcherServlet
    
        contextConfigLocation
        classpath:springmvc.xml
    
    
    1


    springDispatcherServlet
    
    /

2.2、扩展配置方式(推荐)

推荐使用这种方式



    springDispatcherServlet
    org.springframework.web.servlet.DispatcherServlet
    
        contextConfigLocation
        classpath:springmvc.xml
    
    
    1


    springDispatcherServlet
    
    /

超详细从0到1快速搭建SpringMVC开发环境_第5张图片

相比默认设置,这种方式扩展了哪些设置?

  • init-param:

    • 自定义配置文件的名称和路径,然后通过初始化参数,赋值给DispatcherServlet的contextConfigLocation属性。
    • classpath:springmvc.xml的含义:SpringMVC的配置文件,是resources下的springmvc.xml
  • load-on-startup:

    • 因为DispatcherServlet需要拦截其他请求,所以它需要设置成在服务器启动时,自动启动。
    • 如果不做设置,默认是在第一次访问时才初始化,显然不合理。
    • 这个值越小,优先级越高,越先创建对象

关于请求路径的匹配

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

.jsp的请求不应该被前端控制器捕获,因为jsp文件需要专门的Servlet来处理,才能显示jsp页面。所以前端控制器并不需要处理jsp。

这里不能使用 /* ,因为 /* 会捕获所有请求,造成jsp文件被拦截,导致jsp页面丢失,不能显示

3、创建请求控制器

什么是请求控制器

SpringMVC的控制器由一个POJO担任,负责处理具体请求。

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

为什么需要请求控制器

由于前端控制器需要对浏览器发送的请求进行统一处理,但不同的具体请求有具体的处理方式,因此需要编写处理具体请求的逻辑。

如何注册请求控制器

不对这个POJO进行注册,Spring不会知晓它是个请求控制器。

有两种方法:

  • 注解+扫描
  • 配置bean标签

如果使用注解,需要通过 @Controller注解,将其标识为一个控制层组件,交给Spring的IoC容器管理,Spring才能知晓此控制器的存在。

示例

@Controller
public class HelloController {
    
}

4、配置SpringMVC配置文件

SpringMVC的配置文件,其实就是一个Spring的配置文件

需要配置:

  1. 注解扫描
  2. Thymeleaf视图解析器



    
    

    
    
        
        
        
            
                
                    
                        
                        

                        
                        
                        
                        
                    
                
            
        
    

5、测试

5.1、实现对首页的访问

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

@Controller
public class HelloController {

    //访问/WEB-INF/templates/index.html
    @RequestMapping("/")
    public String index(){
        System.out.println("请求收到");
        //返回视图名称
        return "index";
    }
}

5.2、通过超链接跳转到指定页面




    
    Title


Hello,SpringMVC

点击访问target.html

由于此处不能填写绝对路径,而是应该填写/项目路径/绝对路径,而项目路径应该动态获取,所以使用thymeleaf来解析

th:href="@{/target}", 如果@{}中是绝对路径,会自动解析成相对路径。

此处的路径,浏览器解析的时候,其实是 /springmvc/target

编写target.html




    
    Title


Welcome to target.html

在控制器中添加方法

@RequestMapping("/target")
public String toTarget(){
    System.out.println("请求收到");
    //返回视图名称
    return "target";
}

测试访问

!!!如若有index.jsp记得删除 否则会出现

 

超详细从0到1快速搭建SpringMVC开发环境_第6张图片

 

超详细从0到1快速搭建SpringMVC开发环境_第7张图片

6、总结

浏览器请求解析的全过程

浏览器发送请求,若请求地址符合前端控制器的url-parttern("/"),该请求就会被前端控制器DispatherServlet拦截到。

前端控制器会读取SpringMVC的核心配置文件,通过扫描组件找到控制器,将请求地址和控制器中@RequestMapping注解的value属性进行匹配,若匹配成功,该注解对应的控制器方法就是处理这个请求的方法。

处理请求的方法返回一个字符串类型的视图名称,该视图名称会被视图解析器解析,加上前缀和后缀,组成视图的完整路径,通过Thymeleaf对视图进行渲染,最终转发到视图对应的前端页面。

可以简单总结成四个步骤:

  1. 前端控制器拦截请求
  2. 匹配控制器方法
  3. 返回视图名称
  4. 视图解析器解析视图名称,组成完整路径,转发到对应页面

你可能感兴趣的:(Java常用框架,java,前端,maven)