HTTP状态码(重定向/error 301/302)

标签:  HTTP   Spring web   301302

1. HTTP状态码

当浏览器访问一个网页时,浏览者的浏览器会向网页所在服务器发出请求。当浏览器接受并显示网页前,此网页所在的服务器会返回一个包含HTTP状态码的英文为HTTP status Code。

  1. 200 - 请求成功
  2. 301 - 资源(网页等)被永久转移到其它URL
  3. 404 - 请求的资源(网页等)不存在
  4. 500 - 内部服务器错误

2. HTTP状态码分类

HTTP状态码由三个十进制数字组成,第一个十进制数字定义了状态码的类型,后两个数字没有分类的作用。HTTP状态码共分为5种类型:
这里写图片描述
HTTP状态码列表:
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述

3.Java 中Redirect和Forward

java中连接跳转的方式有两种:Redirect和Forward

  • (重定向)Redirect
    重定向是把request 直接转到其他组件处理,response.sendRedirect()后,response已经提交,不能再对response操作。
response.sendRedirect("redirect");

用fiddler查看网页获取信息:

http://localhost:7080/test/testd

GET /test/testd HTTP/1.1
Host: localhost:7080
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:52.0) Gecko/20100101 Firefox/52.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Connection: keep-alive
Upgrade-Insecure-Requests: 1

 HTTP/1.1 302
Location: redirect
Content-Length: 0
Date: Mon, 26 Jun 2017 09:15:23 GMT

浏览器手动302后,对 redirect发起请求,一个重定向,浏览器发了2次请求。
默认的response.sendRedirect返回的是302,即使我在上面设置status code最后也返回302。(Tomcat 8.5中测试)
如果想返回301,只能手动设置了:

response.setStatus(HttpServletResponse.SC_MOVED_PERMANENTLY);
        String newLocn = request.getServletContext().getContextPath()+"/redirect";
        response.setHeader("Location",newLocn);

4.301/302区别

  1、什么是301转向?什么是301重定向?

  301转向(或叫301重定向,301跳转)是当用户或搜索引擎向网站服务器发出浏览请求时,服务器返回的HTTP数据流中头信息(header)中的状态码的一种,表示本网页永久性转移到另一个地址。

  2、什么是302重定向?

  302重定向又称之为302代表暂时性转移(Temporarily Moved ),英文名称:302 redirect。 也被认为是暂时重定向(temporary redirect),一条对网站浏览器的指令来显示浏览器被要求显示的不同的URL,当一个网页经历过短期的URL的变化时使用。一个暂时重定向是一种服 务器端的重定向,能够被搜索引擎蜘蛛正确地处理。

  3、301重定向与302重定向的区别

  302重定向是暂时的重定向,搜索引擎会抓取新的内容而保留旧的网址。因为服务器返回302代码,搜索引擎认为新的网址只是暂时的。

  301重定向是永久的重定向,搜索引擎在抓取新内容的同时也将旧的网址替换为重定向之后的网址。

  4、为什么302 重定向和网址劫持有关联

  从网址A 做一个302 重定向到网址B 时,主机服务器的隐含意思是网址A 随时有可能改主意,重新显示本身的内容或转向其他的地方。大部分的搜索引擎在大部分情况下,当收到302 重定向时,一般只要去抓取目标网址就可以了,也就是说网址B。如果搜索引擎在遇到302 转向时,百分之百的都抓取目标网址B 的话,就不用担心网址URL 劫持了。问题就在于,有的时候搜索引擎,尤其是Google,并不能总是抓取目标网址。

  比如说,有的时候A 网址很短,但是它做了一个302 重定向到B 网址,而B 网址是一个很长的乱七八糟的URL 网址,甚至还有可能包含一些问号之类的参数。很自然的,A 网址更加用户友好,而B 网址既难看,又不用户友好。这时Google 很有可能会仍然显示网址A。由于搜索引擎排名算法只是程序而不是人,在遇到302 重定向的时候,并不能像人一样的去准确判定哪一个网址更适当,这就造成了网址URL 劫持的可能性。也就是说,一个不道德的人在他自己的网址A 做一个302 重定向到你的网址B,出于某种原因, Google 搜索结果所显示的仍然是网址A,但是所用的网页内容却是你的网址B 上的内容,这种情况就叫做网址URL 劫持。你辛辛苦苦所写的内容就这样被别人偷走了。

5.异常处理

1.异常处理介绍
  Spring在web项目中,如果在请求处理时出现异常,那输出会是Servlet响应。这时异常需要以某种方式转换为响应。
  Spring将异常转换为响应的方式:
    a.特定的Spring异常将自动映射为指定的HTTP状态码;
    b.异常上添加@ResponseStatus注解,从而将其映射为某一个HTTP状态码;
    c.方法上添加@ExceptionHandler注解,使其处理异常。
2.异常处理代码

1     @RequestMapping("getPathVariable/{id}")
2     public String getPathVariable(
3             @PathVariable("id") String id){
4         if("error".equals(id)){
5             throw new SpittleException();
6         }
7         return "index";
8     }
 1 package com.taozhiye.controller;
 2 
 3 import org.springframework.http.HttpStatus;
 4 import org.springframework.web.bind.annotation.ResponseStatus;
 5 
 6 @ResponseStatus(
 7         // 404
 8             value = HttpStatus.NOT_FOUND,
 9             reason = "Spittle not found"
10         )
11 public class SpittleException extends RuntimeException {
12 
13 }

  正常情况下,当id为error时,会报错,这时是500错误,我们可以通过@ResponseStatus注解,映射到404状态码上,进行简单的异常处理。
  
  第二种方法是报相应的异常,直接跳转到错误页面。

 1 package com.taozhiye.controller;
 2 
 3 import org.springframework.web.bind.annotation.ControllerAdvice;
 4 import org.springframework.web.bind.annotation.ExceptionHandler;
 5 
 6 
 7 
 8 @ControllerAdvice
 9 public class AppExcepitonHandler {
10     
11     @ExceptionHandler(Exception.class)
12     public String deal(){
13         System.out.println("出现异常");
14         return "index";
15     }
16 }

3.重定向传值

1     @RequestMapping("getPathVariable/{id}")
 2     public String getPathVariable(
 3             @PathVariable("id") String id,
 4             Model model,
 5             RedirectAttributes model2){
 6         if("error".equals(id)){
 7             throw new SpittleException();
 8         }else if("findAll".equals(id)){
 9             /**
10              * 重定向传参数:
11              *         相当于把参数写到session中,
12              *             如果重定向到controller的时候,用@ModelAttribute接收
13              *             如果重定向到页面,可以直接接收
14              */
15             model2.addFlashAttribute("flash", "flash");
16             /**
17              * 通过url模板进行重定向
18              */
19             return "redirect:/{id}";
20         }else if("index".equals(id)){
21 //            model.addAttribute("id", id);
22             /**
23              * 转发不可以使用模板
24              */
25 //            return "/{id}";
26             model2.addFlashAttribute("flash", "flash");
27             /**
28              * 通过url模板进行重定向
29              */
30             return "index";
31         }else{
32             return "ajax1";
33         }
34     }
@RequestMapping("/findAll")
    @ResponseBody
    public List<User> findAll(@ModelAttribute("flash") String flash){
        System.out.println("flash:"+flash);
        return userService.findUserAll();
    }

@RequestMapping("/index")
    @ResponseBody
    public List<User> index(Map<String, Object> map,@ModelAttribute("flash")String flash){
        System.out.println("flash:"+flash);
        return userService.findUserAll();
    }

重定向传参数:
    相当于把参数写到session中,
       如果重定向到controller的时候,用@ModelAttribute接收
       如果重定向到页面,可以直接接收

版权声明:本文为qq_33915826原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/qq_33915826/article/details/79118955

智能推荐

2020年7月程序员工资统计,平均14357元,又跌了,扎心

点击上方 好好学java ,选择 星标 公众号 来源:csdn 连接:https://blog.csdn.net/juwikuang/article/details/107072931?utm_source=app 平均工资 2020年7月全国招收程序员288685人。2020年7月全国程序员平均工资14357元。上个月是14404,又跌了50元。一顿午饭跌...

Merge K Sorted List Leetcode #23 题解[C++]

题目来源 https://leetcode.com/problems/merge-k-sorted-lists/description/ 题目描述 Merge k sorted linked lists and return it as one sorted list. Analyze and describe its complexity. Example: Input: [ 1->4-&...

ubuntu14.04安装SSH服务及配置

ubuntu14.04安装SSH服务及配置 1、安装SSH服务 2、安装完服务后,查看ssh服务是否启动 如果有sshd服务,说明已启动,如图: 如果没有sshd服务,说明未启动,执行以下命令启动: 3、配置ssh服务 4、重启ssh 5、验证ssh登录 打开FlashFXP连接ubuntu,输入ifconfig可以查本地的IP,如图,已连上:...

【了解6大原则,23 种设计模式(一)】

前言 了解设计模式的朋友们,想必都听说过“六大设计原则”吧。其实最经典的 23 种设计模式中或多或少地都在使用这些设计原则,也就是说,设计模式是站在设计原则的基础之上的,所以我通过查找一些资料,然后也访问了一些分享技术的软件查了这些知识点,希望对大家有帮助。所以在学习设计模式之前,很有必要对这些设计原则先做一下了解 一,下面给大家详细的介绍一下这六个设计原则: (1)单一职...

自定义View学习笔记05—Canvas下操作画布

为什么要有画布操作? 疑问======>>>以默认的坐标系圆点为起点,画一条与X轴呈45°的射线,你会怎么操作? 以常规的数学思路来看,先使用三角函数计算出射线上任一点的坐标,然后调用drawLine即可。 有没有更加简单的方法?这个问题留在本笔记最后来解答。 现在进入操作画布的主题: 1、位移translate(float dx, float dy): 注意:这里的位移...

猜你喜欢

投影纹理

教程 投影纹理 1、投影纹理 将相机矩阵和模型矩阵相乘,最后得到纹理采样坐标: 顶点着色器: 片元着色器: 2、如何确定背面 片元着色器: <全文结束>...

C++ Primer(第五版) 第二章 变量和基本类型

目录 基本内置类型 1. 算术类型 2. 类型转换 3.字面值常量 变量 1. 变量定义 2. 变量声明与定义的关系 3. 标识符 4. 作用域 复合类型 1. 引用 2. 指针 3. 理解复合类型的声明 const限定词 1. const的引用 2. const和指针 3. 顶层const 4. constexpr和表达式 处理类型 1. 类型别名 2.auto类型说明符 3.decltype类...

CTF打卡第一天-BUU-不一样的flag

题目: 把题目提供的二进制文件下载下来,使用pe查壳,发现没有加壳,是一个32位文件: 使用ida打开,先搜索一下字符串,找到一串奇怪的字符串,不知道有什么用,先留着: F5反编译一下main函数: 可以看出有4个选择:上下左右,再加上那串字符串 很像以前做过的迷宫,试一下: 很明显 把1当做墙,把0看做路,解法就是从*到#,根据逻辑1234分别对应上下左右,因此得到222441144222 根据...

人脸检测 + 数据训练 + 人脸识别

准备工作: 安装opencv 安装opencv-contrib 创建文件夹,文件结构为: 一、编写一个基础的人脸识别 二、下载或者使用自己照片当训练素材 照片放在data下面的jm文件夹下面,照片名称是我们后面使用到的ID,命名要规范,后缀要一致。如下: 我10张照片里面选了 1-3为马云的,4-7为普京的,8-10是周杰伦的照片。进行训练识别。 三、编写训练代码: 运行代码后就会生成一个yml文...

HDFS的安全模式与文件权限检验(5)

安全模式         安全模式是HDFS所处的一种特殊状态,在这种状态下,文件系统只接受读数据请求,而不接受删除、修改等变更请求。在NameNode主节点启动时,HDFS首先进入安全模式,DataNode在启动的时候会向namenode汇报可用的block等状态,当整个系统达到安全标准时,HDFS自动离开安全模式。...

玻璃钢生产厂家西宁玻璃钢花盆加工宿迁玻璃钢花钵价格聊城玻璃钢前台加工广元商场美陈厂家濮阳玻璃钢树池坐凳生产厂家昭通玻璃钢沙发珠海玻璃钢产品北京玻璃钢垃圾桶加工通化玻璃钢人物雕塑价格青岛玻璃钢厂朝阳商业美陈批发赤峰玻璃钢人物雕塑多少钱黄山玻璃钢加工鸡西玻璃钢装饰工程生产厂家太原玻璃钢景观雕塑保定玻璃钢外壳厂家直销庆阳玻璃钢花瓶郑州玻璃钢花瓶批发宜昌玻璃钢浮雕定制南京玻璃钢茶几厂嘉兴不锈钢家具定制佛山玻璃钢花槽哪家好内江玻璃钢摆件厂家信阳玻璃钢外壳定制枣庄玻璃钢雕塑多少钱铜仁玻璃钢设备外壳加工铁岭玻璃钢浮雕生产厂家酒泉商场美陈批发陇南不锈钢花盆制作崇左玻璃钢餐桌椅厂家直销香港通过《维护国家安全条例》两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”19岁小伙救下5人后溺亡 多方发声单亲妈妈陷入热恋 14岁儿子报警汪小菲曝离婚始末遭遇山火的松茸之乡雅江山火三名扑火人员牺牲系谣言何赛飞追着代拍打萧美琴窜访捷克 外交部回应卫健委通报少年有偿捐血浆16次猝死手机成瘾是影响睡眠质量重要因素高校汽车撞人致3死16伤 司机系学生315晚会后胖东来又人满为患了小米汽车超级工厂正式揭幕中国拥有亿元资产的家庭达13.3万户周杰伦一审败诉网易男孩8年未见母亲被告知被遗忘许家印被限制高消费饲养员用铁锨驱打大熊猫被辞退男子被猫抓伤后确诊“猫抓病”特朗普无法缴纳4.54亿美元罚金倪萍分享减重40斤方法联合利华开始重组张家界的山上“长”满了韩国人?张立群任西安交通大学校长杨倩无缘巴黎奥运“重生之我在北大当嫡校长”黑马情侣提车了专访95后高颜值猪保姆考生莫言也上北大硕士复试名单了网友洛杉矶偶遇贾玲专家建议不必谈骨泥色变沉迷短剧的人就像掉进了杀猪盘奥巴马现身唐宁街 黑色着装引猜测七年后宇文玥被薅头发捞上岸事业单位女子向同事水杯投不明物质凯特王妃现身!外出购物视频曝光河南驻马店通报西平中学跳楼事件王树国卸任西安交大校长 师生送别恒大被罚41.75亿到底怎么缴男子被流浪猫绊倒 投喂者赔24万房客欠租失踪 房东直发愁西双版纳热带植物园回应蜉蝣大爆发钱人豪晒法院裁定实锤抄袭外国人感慨凌晨的中国很安全胖东来员工每周单休无小长假白宫:哈马斯三号人物被杀测试车高速逃费 小米:已补缴老人退休金被冒领16年 金额超20万

玻璃钢生产厂家 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化