SpringMVC:转发和重定向

news2024/11/18 3:45:51

 1. 请求转发和重定向简介

参考该链接第9点

2. forward

返回下一个资源路径,请求转发固定格式:return "forward:资源路径"
 如 return "forward:/b" 此时为一次请求
返回逻辑视图名称
返回逻辑视图不指定方式时都会默认使用请求转发

index.html 

<body>
    <a th:href="@{/a}">A页面</a> <br>
    <a th:href="@{/b}">B页面</a> <br>
    <a th:href="@{/test}">test</a>
</body>

Controller层 

@Controller
public class IndexController {

    @RequestMapping(value = {"/"})
    public String toIndex() {
        return "index";
    }
 @RequestMapping("/a")
    public String toA() {
        
        return "forward:/b";

    }
@RequestMapping("/b")
    public String toB() {
        return "b";
    }

3. redirect

返回要响应重定向的资源路径,响应重定向固定格式:return "redirect:资源路径"
重定向如果要跨域要写全路径
 如:return "redirect:http:localhost:8080/springmvc/a/b/c" 此时让客户端重新发送请求请求
@RequestMapping("/a")
    public String toA() {
     
        return "redirect:/b";
    }

4. 简化配置

<!--该代码表示访问/test资源时自动向test逻辑视图进行跳转-->
    <mvc:view-controller path="/test" view-name="test"></mvc:view-controller>
    <!--当配置了上面的代码所有@Controller注解会失效,需要配置以下信息开启注解-->
    <mvc:annotation-driven></mvc:annotation-driven>
<!--如果只是单纯进行页面跳转没有任何业务逻辑处理,只需要配置以下信息即可
以上代码效果等同于
@RequestMapping("/test")
public String toTest() {
    return "test";
}
-->

 5. 访问静态资源

关于静态资源的访问:
    假设我们在webapp目录下创建static目录,下面存放img.png图片资源
    我们可以通过地址栏http://localhost:8080/springmvc/static/img.png进行访问么?
    答案是不行,因为会走DispatcherServlet,之后会从控制器中走相应方法最后通过逻辑视图寻找对应资源
    而此时在控制器中找不到对应逻辑视图,即资源不存在会报404错误

 方案一

在springmvc.xml文件中配置
<mvc:default-servlet-handler></mvc:default-servlet-handler>
<mvc:annotation-driven></mvc:annotation-driven>
即手动开启DefaultServlet
当访问http://localhost:8080/springmvc/static/img.png会默认先走DispatcherServlet,
当报404错误时会走DefaultServlet,然后DefaultServlet会帮你定位到静态资源
DefaultServlet默认是关闭的,需要手动开启
<!--该代码表示访问/test资源时自动向test逻辑视图进行跳转-->
    <mvc:view-controller path="/test" view-name="test"></mvc:view-controller>
    <!--当配置了上面的代码所有@Controller注解会失效,需要配置以下信息开启注解-->
    <mvc:annotation-driven></mvc:annotation-driven>

方案二

使用 mvc:resources 标签配置静态资源
<mvc:annotation-driven></mvc:annotation-driven>
<mvc:resources mapping="/static/**" location="/static/" />
即static路径下的任意资源都可以访问
注意:要想使用 `<mvc:resources>` 配置,必须开启注解驱动 `<mvc:annotation-driven />`
<!--开启默认Servlet处理-->
    <mvc:default-servlet-handler></mvc:default-servlet-handler>
    <!-- 配置静态资源处理 -->
    <mvc:resources mapping="/static/**" location="/static/" />

视图原理描述

假设我们SpringMVC中使用了Thymeleaf作为视图。

第一步:浏览器发送请求给web服务器

第二步:Spring MVC中的DispatcherServlet接收到请求

第三步:DispatcherServlet根据请求路径分发到对应的Controller

第四步:DispatcherServlet调用Controller的方法

第五步:Controller的方法处理业务并返回一个`逻辑视图名`给DispatcherServlet

第六步:DispatcherServlet调用ThymeleafViewResolver的resolveViewName方法,将`逻辑视图名`转换为`物理视图名`,并创建ThymeleafView对象返回给DispatcherServlet

第七步:DispatcherServlet再调用ThymeleafView的render方法,render方法将模板语言转换为HTML代码,响应给浏览器,完成最终的渲染。 

常见视图

* InternalResourceView:内部资源视图(Spring MVC框架内置的,专门为`JSP模板语法`准备的)
* RedirectView:重定向视图(Spring MVC框架内置的,用来完成重定向效果)
* ThymeleafView:Thymeleaf视图(第三方的,为`Thymeleaf模板语法`准备的)
* FreeMarkerView:FreeMarker视图(第三方的,为`FreeMarker模板语法`准备的)
* VelocityView:Velocity视图(第三方的,为`Velocity模板语法`准备的)
* PDFView:PDF视图(第三方的,专门用来生成pdf文件视图)
* ExcelView:Excel视图(第三方的,专门用来生成excel文件视图)
* ...... 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1792338.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

优化你的WordPress网站:内链建设与Link Whisper Pro插件的利用

文章目录 内链的重要性WordPress SEO插件&#xff1a;Link Whisper Pro主要功能使用指南下载与安装 结语 在数字营销和网站管理领域&#xff0c;SEO内部优化是提升网站排名、增加流量和提高用户参与度的核心策略。在众多SEO技巧中&#xff0c;内链建设是构建良好网站结构和提升…

使用Django JWT实现身份验证

文章目录 安装依赖配置Django设置创建API生成和验证Token总结与展望 在现代Web应用程序中&#xff0c;安全性和身份验证是至关重要的。JSON Web Token&#xff08;JWT&#xff09;是一种流行的身份验证方法&#xff0c;它允许在客户端和服务器之间安全地传输信息。Django是一个…

docker实战流程:

Docker-compose是docker官方的开源项目&#xff0c;负责实现对docker容器的集群的快速编排&#xff08;通过yaml文件docker-compose.yml管理写好容器之间的调用关系只需一个命令就能实现容器的通识开启或关闭&#xff09;。 类比spring容器&#xff0c;spring管理的是bean而do…

【乐吾乐3D可视化组态编辑器】3D场景与大屏通信

乐吾乐大屏可视化可以实现大屏页面与内嵌2d/3d场景相互通信&#xff0c;底层原理是利用了iframe通过postMessage发送消息。 3D组态编辑器地址&#xff1a;3D可视化组态 - 乐吾乐Le5le 大屏组态编辑器地址&#xff1a;大屏可视化设计器 - 乐吾乐Le5le 下面以3d场景为例&#…

C# 判断字符串不等于空的示例

在C#中&#xff0c;要判断一个字符串是否不等于空&#xff08;即它既不是null也不是空字符串""&#xff09;&#xff0c;方法有如下几种&#xff0c;如下。 方法1 使用逻辑运算符和string.IsNullOrEmpty方法 string myString "123"; // 假设要检查的字…

Python第二语言(三、Python函数def)

目录 1. Python函数&#xff08;def 函数名():&#xff09; 1.1 sorted对容器进行排序&#xff1a;无法指定排序规则 1.2 sort对容器自定义排序&#xff1a;可以指定排序规则 1.3 获取变量长度函数&#xff08;len&#xff09; 1.4 函数的定义 1.5 函数-传参定义 1.6 函…

JFinal学习06 控制器——getPara()接收数据

JFinal学习06 控制器——getPara()接收数据 视频来源https://www.bilibili.com/video/BV1Bt411H7J9/?spm_id_from333.337.search-card.all.click 文章目录 JFinal学习06 控制器——getPara()接收数据零、JFinal数据提交的三种方式一、get提交二、post提交三、url参数化提交四、…

基于spring boot+vue的校园新闻管理系统

随着网络不断的普及发展&#xff0c;校园新闻网站依靠网络技术的支持得到了快速的发展&#xff0c; 首先要从用户的实际需求出发&#xff0c; 通过了解用户的需求开发出具有针对性的首页、校园 新闻、 论坛交流、 留言反馈、 个人中心、 后台管理功能&#xff0c; 利用目前网络…

MotionEditor_ 通过内容感知扩散编辑视频运动

图1. MotionEditor&#xff1a;一种基于扩散的视频编辑方法&#xff0c;旨在将参考视频的运动转移到源视频中。 摘要 现有的基于扩散的视频编辑模型在随时间编辑源视频的属性方面取得了显著进展&#xff0c;但在修改运动信息的同时保持原始主角的外观和背景方面存在困难。为…

计算机网络 期末复习(谢希仁版本)第2章

物理层考虑的是怎样才能在连接各种计算机的传输媒体上传输数据比特流&#xff0c;而不是指具体的传输媒体。4 个特性&#xff1a; 机械特性&#xff1a;指明接口所用接线器的形状和尺寸、引线数目和排列、固定和锁定装置等。 电气特性&#xff1a;指明在接口电缆的各条线上出现…

gitlabcicd-k8s部署gitlab

一.安装准备环境 存储使用nfs挂载持久化 k8s环境 helm安装 建议helm 3 二.部署gitlab-deploy.yaml nfs的ip是192.168.110.190 挂载目录是/data/data 注意所需要的目录需要创建&#xff1a;/data/data/gitlab/config &#xff0c;/data/data/gitlab/logs &#xff0c;/dat…

HarmonyOS(二十三)——HTTP请求实战一个新闻列表

在前一篇文章&#xff0c;我们已经知道如何实现一个http请求的完整流程&#xff0c;今天就用官方列子实战一个简单的新闻列表。进一步掌握ArkTS的声明式开发范式&#xff0c;数据请求&#xff0c;常用系统组件以及touch事件的使用。 主要包含以下功能&#xff1a; 数据请求。…

47.各种类型的线程池

线程池继承体系 Executor(interface)->ExecutorService(interface)->ThreadPoolExecutor(class) Executors.newFixedThreadPool 核心线程数最大线程数&#xff08;没有救急线程被创建&#xff09;&#xff0c;所以也无需超时时间阻塞队列LinkedBlockingQueue,可以放任意…

探索营销系统业务架构的设计与应用

随着市场竞争的日益激烈和消费者需求的不断变化&#xff0c;营销系统作为企业营销管理的重要组成部分&#xff0c;扮演着至关重要的角色。本文将深入探讨营销系统业务架构的设计与应用&#xff0c;从客户关系管理、营销活动管理、数据分析和智能化服务等方面进行全面解析&#…

AWS EMR Serverless

AWS概述 EMR Serverless 简介 在AWS概述一文中简单介绍过AWS EMR, 它是AWS提供的云端大数据平台。借助EMR可以设置集群以便在几分钟内使用大数据框架处理和分析数据。创建集群可参考官方文档&#xff1a;Amazon EMR 入门。但集群创建之后需要一直运行&#xff0c;用户需要管理…

vuInhub靶场实战系列--prime:1

免责声明 本文档仅供学习和研究使用,请勿使用文中的技术源码用于非法用途,任何人造成的任何负面影响,与本人无关。 目录 免责声明前言一、环境配置1.1 靶场信息1.2 靶场配置 二、信息收集2.1 主机发现2.1.1 netdiscover2.1.2 nmap主机扫描2.1.3 arp-scan主机扫描 2.2 端口扫描…

RPA机器人的技术挑战与解决方案

RPA在企业转型过程中彰显出巨大的潜力&#xff0c;每年为企业节省大量人力以及运营成本&#xff0c;从而实现企业经营的降本提质增效。但要成功部署和实施RPA&#xff0c;需要专业人员、流程和技术的精心组合。企业管理者需要根据自己的实际需求&#xff0c;选择一个稳定可靠、…

Hadoop3:MapReduce之InputFormat数据输入过程整体概览(0)

一、MapReduce中数据流向 二、MapTask并行度 1、原理概览 数据块&#xff1a;Block是HDFS物理上把数据分成一块一块。数据块是HDFS存储数据单位。 数据切片&#xff1a;数据切片只是在逻辑上对输入进行分片&#xff0c;并不会在磁盘上将其切分成片进行存储。数据切片是MapRed…

Python私教张大鹏 Vue3 整合 Ant Design Vue

创建项目 npm create vite启动项目 cd vue3_antdesignvue pnpm i pnpm dev使用webstorm打开项目 配置启动 整合AntDesignVue 安装依赖&#xff1a; pnpm install ant-design-vue pnpm install unplugin-vue-components -D修改 vite.config.js import {defineConfig} from …

HarmonyOS鸿蒙-DevEco Studio工具

一、官网下载DevEco Studio工具地址 文章内容: 1、下载工具 2、运行项目 3、安装启动器 https://developer.harmonyos.com/cn/develop/deveco-studio/https://developer.harmonyos.com/cn/develop/deveco-studio/ 下载不同平台工具目录 : 二、 安装DevEco Studio工具 安装的配置…