springMVC常见视图组件与RESTFul编程风格详解

 更新时间:2026年02月28日 08:47:07   作者:NE_STOP  
本文给大家介绍springMVC常见视图组件与RESTFul编程风格,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧

常见的视图组件

Spring MVC支持的常见视图包括:InternalResourceView:内部资源视图(Spring MVC内置的,专门为jsp模板语法准备的)、RedirectView(重定向视图(Spring MVC内置的,用来完成重定向效果)、ThymeleafView(第三方,专门为ThymeleafView模板语法准备的)......

实现视图机制的核心类和核心接口

  • DispatcherServlet:前端控制器
    • 负责接收前端请求
    • 根据请求路径找到对应的处理器方法
    • 执行处理器方法
    • 最终返回ModelAndView对象
  • ViewResolver:视图解析器接口

​ 这个接口的作用是将逻辑视图名称转换为物理视图名称。并最终返回一个view接口对象。

  • View:视图接口

​ 这个接口负责将模板语法的字符串转换成HTML代码,并且将HTML代码响应给浏览器进行渲染。

转发与重定向的区别

转发重定向
一次请求,浏览器地址栏不会发生变化两次请求,浏览器地址栏会发生变化
转发代码:request.getRequestDispatcher("/index").forward(request,response);重定向代码:response.sendRedirect("/webapp/index");
服务器内部资源跳转,由服务器控制,不可实现跨域访问可以完成内部资源跳转,也可以完成跨域访问
可以访问WEB-INF目录下受保护的资源无法访问WEB-INF目录下受保护的资源。(因为重定向相当于浏览器重新发送了一次请求,浏览器发送的请求无法访问被保护的资源)

springMVC实现转发forward

@RequestMapping("/a")
public String toA(){
    // 采用springmvc的视图转发机制,跳转到/b
    // 格式:forward:下一个资源的路径,这里的b不是逻辑视图名称,是一个资源路径
    return "forward:/b";
}
@RequestMapping("/b")
public String toB(){
    return "b";
}

springMVC实现重定向

@RequestMapping("/a")
public String toA(){
    // 采用springmvc的视图重定向机制,跳转到/b
    // 格式:redirect:下一个资源的路径
    // 如果要实现跨域,需要写全路径,比如:https://baidu.com
    return "redirect:b";
}
@RequestMapping("/b")
public String toB(){
    return "b";
}

mvc:view-controller

这个配置用于将某个请求映射到特定的视图上,即指定某一个URL请求到一个视图资源的映射。使得这个视图资源可以被访问。相当于一个独立的处理程序,不需要编写Controller,只需要指定URL和视图名称就可以了。

一般用来配置首页、错误页等。

在springmvc-servlet.xml文件中添加如下配置:

<!--    配置视图控制器,必须开启注解驱动才能生效-->
    <!--  path="/ok"表示访问路径,view-name="ok"表示视图名称。
     访问http://localhost:8080/springmvc-04/ok时,
     会直接返回ok.html页面,不需要经过控制器方法的处理-->
    <mvc:view-controller path="/ok" view-name="ok" />
<!--    开启注解驱动,支持@RequestMapping等注解-->
    <mvc:annotation-driven />

访问静态资源

使用默认Servlet处理静态资源

在springmvc-servlet.xml文件中添加如下配置:

 <!--   开启默认的servlet处理器,允许静态资源(如CSS、JavaScript、图片等)通过默认的servlet进行处理,而不是被Spring MVC拦截。
     这对于提供静态资源非常重要,否则这些资源可能无法正确加载。
     当请求的URL没有匹配到任何控制器方法时,默认的servlet处理器会尝试查找对应的静态资源并返回给客户端。
     例如,如果请求http://localhost:8080/springmvc-04/css/style.css,默认的servlet处理器会尝试找到webapp目录下的css/style.css文件并返回给客户端。
     如果没有开启默认的servlet处理器,Spring MVC会尝试处理所有请求,包括静态资源的请求,这可能会导致静态资源无法正确加载,出现404错误。
     因此,开启默认的servlet处理器是确保静态资源能够正确加载的重要配置。
     需要注意的是,默认的servlet处理器只会处理那些没有被Spring MVC拦截的请求,如果请求被Spring MVC拦截了,那么默认的servlet处理器就不会介入处理了。
     另外,默认的servlet处理器也不会处理那些被Spring MVC拦截但没有找到匹配的控制器方法的请求,这些请求会直接返回404错误,而不会尝试查找静态资源。
     因此,开启默认的servlet处理器是确保静态资源能够正确加载的重要配置,但也需要确保Spring MVC的请求映射配置正确,以避免不必要的请求被Spring MVC拦截,导致静态资源无法加载。
-->
    <mvc:default-servlet-handler />

使用mvc:resources标签配置静态资源

使用mvc:resources标签必须开启注解驱动 <mvc:annotation-driven /> 。

在springmvc-servlet.xml文件中添加如下配置:

<!--    开启注解驱动,支持@RequestMapping等注解-->
    <mvc:annotation-driven />  
<!--  配置静态资源处理器,mapping属性指定访问路径,location属性指定资源位置。
     例如,mapping="/static/**"表示访问路径以/static/开头的请求会被该资源处理器处理,location="/static/"表示资源文件位于webapp目录下的static文件夹中。
     当请求http://localhost:8080/springmvc-04/static/css/style.css时,该资源处理器会尝试找到webapp目录下的static/css/style.css文件并返回给客户端。
-->
    <mvc:resources mapping="/static/**" location="/static/" />

RESTFul编程风格

RESTFul(Respresentational State Transfer 表述性状态转移 简称REST)是web服务接口的一种设计风格。

RESTFul对一个web服务接口规定了哪些东西?

  • 对请求的URL格式有约束和规范
  • 对HTTP请求方式有约束和规范
  • 对请求和响应的数据格式有约束和规范
  • 对HTTP状态码有约束和规范

REST对请求方式的约束:

  • 查询必须是get请求
  • 新增必须是post请求
  • 修改必须是put请求
  • 删除必须是delete请求

RESTFul对URL的约束和规范的核心是采用不同的请求方式+URL来确定web服务中的资源。

RESTFul风格查询所有数据

@GetMapping("/user")
public String getAllUsers() {
    return "success";
}

RESTFul风格根据id查询一条数据

@GetMapping("/user/{id}")
public String getUserById(@PathVariable("id") Integer id) {
    return "success";
}

RESTFul风格新增用户信息

@PostMapping("/user")
public String saveUser(User user) {
    return "success";
}

RESTFul风格修改用户信息

修改用户信息必须发送put请求。

如何发送put或delete请求呢?

  • 要想发送put请求,。首先必须是一个post请求
  • 在post请求表单中添加隐藏域
<!--name 必须是_method,value必须是put或者是delete-->
<input type="hidden" name="_method" value="put">
  • 在web.xml添加一个过滤器
<!--这个过滤器的作用是将HTTP请求中的隐藏字段(通常是一个名为"_method"的参数)转换为HTTP方法(如PUT、DELETE等)。
这对于HTML表单来说非常有用,因为HTML表单只支持GET和POST方法,
而通过使用隐藏字段,可以模拟其他HTTP方法,从而实现更丰富的RESTful API设计。-->
<filter>
    <filter-name>hiddenHttpMethodFilter</filter-name>
    <filter-class>org.springframework.web.filter.HiddenHttpMethodFilter</filter-class>
</filter>
<filter-mapping>
    <filter-name>hiddenHttpMethodFilter</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>
@PutMapping("/user")
public String modifyUser(User user) {
    return "success";
}

RESTFul风格删除用户信息

@DeleteMapping("/user/{id}")
public String deleteUserById(@PathVariable("id") Integer id) {
    return "success";
}

到此这篇关于springMVC-常见视图组件与RESTFul编程风格的文章就介绍到这了,更多相关springMVC-常见视图组件与RESTFul编程风格内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • springboot3+r2dbc响应式编程实践

    springboot3+r2dbc响应式编程实践

    本文主要介绍了springboot3+r2dbc响应式编程实践,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-02-02
  • SpringBoot远程调用(HTTP)实现过程

    SpringBoot远程调用(HTTP)实现过程

    本文介绍了JDK中常用的HTTP客户端库,包括HttpURLConnection、Apache HttpClient、OkHttp、RestTemplate和WebClient,并详细比较了WebClient和RestTemplate的异同,同时,文章还介绍了Reactor项目中的Mono和Flux等反应式编程概念,以及如何在异步非阻塞环境中使用这些工具
    2025-11-11
  • Java+JFrame实现贪吃蛇小游戏

    Java+JFrame实现贪吃蛇小游戏

    这篇文章主要为大家详细介绍了Java+JFrame实现贪吃蛇小游戏,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-06-06
  • 一文搞懂Java顶层类之Object类的使用

    一文搞懂Java顶层类之Object类的使用

    java.lang.Object类是Java语言中的根类,即所有类的父类。它中描述的所有方法子类都可以使用。本文主要介绍了Object类中toString和equals方法的使用,感兴趣的小伙伴可以了解一下
    2022-11-11
  • js实现拖拽拼图游戏

    js实现拖拽拼图游戏

    这篇文章主要为大家详细介绍了js实现拖拽拼图游戏,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-09-09
  • 一文详解Java如何创建和销毁对象

    一文详解Java如何创建和销毁对象

    Java由Sun Microsystems发明并在1995年发布,是世界上使用最广泛的编程语言之一。本文主要和大家介绍一下Java是如何创建和销毁对象的,希望对大家有所帮助
    2022-11-11
  • springboot对接第三方微信授权及获取用户的头像和昵称等等

    springboot对接第三方微信授权及获取用户的头像和昵称等等

    这篇文章主要介绍了springboot对接第三方微信授权及获取用户的头像和昵称等等,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-01-01
  • java实现简单验证码生成

    java实现简单验证码生成

    这篇文章主要介绍了java实现简单验证码生成,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-10-10
  • java 中String和StringBuffer与StringBuilder的区别及使用方法

    java 中String和StringBuffer与StringBuilder的区别及使用方法

    这篇文章主要介绍了java 中String和StringBuffer与StringBuilder的区别及使用方法的相关资料,在开发过程中经常会用到String 这个类进行操作,需要的朋友可以参考下
    2017-08-08
  • springboot的调度服务与异步服务使用详解

    springboot的调度服务与异步服务使用详解

    本文主要介绍了Java的ScheduledExecutorService接口和Spring Boot中如何使用调度线程池,包括核心参数、创建方式、自定义线程池、Cron表达式,以及如何在Spring Boot中配置和使用异步任务,此外,还讨论了如何模拟系统繁忙和调整异步线程池的拒绝策略
    2025-02-02

最新评论