IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> SpringBoot跳转页面+thymeleaf,转发和重定向的区别及应用场景,不同域名通过iframe嵌套显示提示拒绝连接 -> 正文阅读

[Java知识库]SpringBoot跳转页面+thymeleaf,转发和重定向的区别及应用场景,不同域名通过iframe嵌套显示提示拒绝连接

前言

昨天下午的时候同学问我了个问题,是关于spring boot里面页面跳转的问题,整理了一下有关的内容,写个博客记录一下。
涉及到的问题,我一共整理了三个方面

一、SpringBoot跳转页面+thymeleaf

关于SpringBoot的页面跳转问题,跳转页面一般分为静态页面和动态页面

1. 静态页面
静态页面是可以直接访问的,在static目录下新建一个hello.html就可以在浏览器直接访问http://localhost:8080/hello.html,也可以通过controller层跳转访问。

@Controller
public class HelloController {
    @RequestMapping("/hello")
    public String hello() { return "hello.html"; }
}

然后正常访问http://localhost:8080/hello成功访问

2. 动态页面
动态页面的访问需要先请求服务器,访问后台的应用程序,然后再转向访问页面。
spring boot默认使用thymeleaf做动态页面,建议不要使用jsp,下面是spring boot整合thymeleaf的写法

  • 在pom文件中添加thymeleaf组件
<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
  • 在tempates目录下新建hello.html文件,此时若直接访问http://localhost:8080/hello.html访问的是静态文件夹(static目录)下的hello.html,再通过controller层跳转访问static会报500错误,这是因为:
    • 静态页面的return默认是跳转到static目录下的
    • 当引入thymeleaf之后,动态跳转会覆盖默认的静态跳转
    • 动态跳转默认跳转到templates目录下
    • 两者return代码区别:动态跳转有无.html后缀都可

使用thymeleaf之后的controller层

@Controller
public class HelloController {
    @RequestMapping("/hello")
    public String hello() { return "hello"; }
}

若在使用动态页面时还想跳转到/static/index.html,使用重定向return “redirect:/index.html”

转发和重定向的区别及应用场景

上节提到了重定向,就去回头看了看JavaWeb,总结一下页面跳转的两种方式即转发和重定向的区别及其应用场景

1. 区别

  • 概念
    • 什么是转发:由服务器端进行的页面跳转
    • 什么是重定向:由浏览器端进行的页面跳转
  • 特点
    • 转发
      • 地址栏:显示的是上一个页面的地址
      • 请求次数:1次请求
      • 请求域中数据不会丢失
    • 重定向
      • 地址栏:显示新的地址
      • 请求次数:2次请求
      • 请求域中的数据会丢失,因为是2次请求
  • 方法
    • 转发:request.getRequestDispatcher().forward()方法在服务器端内部将请求转发给另外一个资源,浏览器只知道发出了请求并得到了响应结果,并不知道在服务器程序内部发生了转发行为
    • 重定向:HttpServletResponse.sendRedirect()方法对浏览器的请求直接作出响应,响应的结果就是告诉浏览器重新发出对另外一个URL的访问请求
  • 过程理解
    • 转发的过程可以理解为有个叫浏览器的人发微信给A借钱,A的钱不够,于是A就去找B借钱,然后一并转账给浏览器,所以浏览器是一次请求,浏览器也不知道有一些钱是出自B
    • 重定向的过程可以理解为有个叫浏览器的人发微信给A借钱,A回复说没有钱,让浏览器去找B借,并把B的微信号给了浏览器,于是浏览器就加微信找到了B借钱,B收到后就转账给了浏览器,所以浏览器是两次请求,浏览器也知道转账的是B(新的地址)
  • 获得对象的方式
//获得转发对象getRequestDispatcher()
HttpServletRequest(httpServletRequest).getRequestDispatcher();
ServletContext.getRequestDispatcher();
 
//获得重定向对象sendRedirect()
HttpServletResponse(httpServletResponse).sendRedirect();

2. 应用场景

转发与重定向如何选择:

  • 重定向的速度比转发慢,若在使用转发和重定向都一样的情况下建议使用转发
  • 转发只能访问当前web的应用程序,不同web应用程序之间的访问,特别是要访问到另外一个web站点上的资源的情况下,就只能使用重定向

重定向还有一个应用场景就是避免在用户重新加载页面时两次调用相同的动作,选择哪种跳转方式还是要具体考虑需求。

三、不同域名通过iframe嵌套显示提示拒绝连接

这篇博客的最后一个问题,昨天看同学项目的时候他遇到个问题,问我为什么我用thymeleaf跳转了,也用sendRedirect()方法重定向了,url怎么还是跳不过去呢?
查了一遍代码发现,跳转的页面使用了iframe嵌套
响应头配置:X-Frame-Options

The X-Frame-Options HTTP 响应头是用来给浏览器 指示允许一个页面 可否在 , , 或者 中展现的标记。站点可以通过确保网站没有被嵌入到别人的站点里面,从而避免 clickjacking 攻击。

X-Frame-Options有三个值:

  • deny:表示该页面不允许在 frame 中展示,即便是在相同域名的页面中嵌套也不允许
  • sameorigin:表示该页面可以在相同域名页面的 frame 中展示
  • allow-from url:表示该页面可以在指定来源的 frame 中展示

昨天测试跳转的url是www.baidu.com,是禁止用iframe嵌套的

码字不易,感谢三连

写在最后

本人是即将大三的废物蒟蒻一个,若有问题欢迎指正与讨论,感谢三连
在这里插入图片描述

  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2021-08-04 11:03:50  更:2021-08-04 11:05:18 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/8 21:50:53-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码