用Servlet写一个简单的重定向,而引起的一系列糗事

平时我们如果要求浏览器重新请求另一个URL,又称为重定向,则会用一个简便的方法 response.sendRedirect("/项目名/Servlet路径"),即可

可是某天,W君想通过设置HttpServletResponse响应头的方式去实现重定向,于是开始建项目.....,并覆盖了doPost()方法

经过一系列的Ctrl+C,Ctrl+V后,W君写入了完成重定向的终极语句(惭愧)

这样就可以完成重定向,于是乎启动Tomcat服务器,输入访问URL,然后就

对的,想砸电脑,W君涉世较浅,405错误还真没碰到过,

于是,人生短暂,谷歌相伴,轰轰烈烈查了老半天,都不行,然后灵机一动把doPost()方法改成doGet()方法,我去竟然成了

那么,为什么用POST请求就报错呢?W君苦思,苦思,苦思。。。并搬出了人生最强大的朋友谷歌也无济于事

首先,重定向请求可以通过doGet()方法实现,那就代码无错,设置response响应头和状态码都无错,于是查了书和自己零零星星的笔记

终于发现了一个问题,凡是直接在浏览器地址栏输入某个地址,浏览器都会发送get请求,

啊!!!终于恍然大悟,我是直接在浏览器地址栏输入地址访问的,浏览器发送get请求而我使用doPost()方法,必然405

可能是此问题过于简单所以百度谷歌都没有,因此才使得W君又把get和POST请求的情况及特点做一简单整理:

 

1. 哪一些情况下,浏览器会发送get请求

a. 直接在浏览器地址栏输入某个地址

b. 点击链接

c. 表单默认的提交方式

2. 哪一些情况下,浏览器会发送post请求?

a. 设置表单method = "post"

3. get请求的特点

a. 请求参数会添加到请求资源路径的后面,只能添加少量参数(因为请求行只有一行,大约只能存放2K左右的数据)(2K左右的数据,看起来也不少。。。)

b. 请求参数会显示在浏览器地址栏,路由器会记录请求地址

4. post请求的特点

a. 请求参数添加到实体内容里面,可以添加大量的参数(也解释了为什么浏览器地址栏不能发送post请求,在地址栏里我们只能填写URL,并不能进入到Http包的实体当中)

b. 相对安全,但是,post请求不会对请求参数进行加密处理(可以使用https协议来保证数据安全)

 

转载于:https://www.cnblogs.com/wxc-cs-97/p/10050035.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值