建网站费用记账,写文章wordpress,企业网站建设论文5000,提升网站权重HTTP的响应协议 响应数据格式 响应行 响应数据的第一行#xff0c;包括协议、状态码、描述 响应头 从响应数据格式的第二行开始#xff0c;也是以key:value的格式 响应体 和响应头之间有一个空行#xff0c;是响应数据格式的最后一部分#xff0c;用于存放响应的数据 常见响… HTTP的响应协议 响应数据格式 响应行 响应数据的第一行包括协议、状态码、描述 响应头 从响应数据格式的第二行开始也是以key:value的格式 响应体 和响应头之间有一个空行是响应数据格式的最后一部分用于存放响应的数据 常见响应状态码 1XX表示响应中是临时的状态码表示请求已经接收了告诉客户端应该继续请求或客户端已经完成则可以忽略常见于WebSocket技术 2XX成功该请求已经被成功接收并且也成功处理 3XX重定向重定向到其他地方了让客户端再次发起一次请求可以完成整个处理 比如请求百度http://www.baidu.com百度的请求路径是https://www.baidu.com但是请求也会成功 是因为第一次请求http的时候百度的服务器能够接收会响应一个307状态码告诉浏览器需要重定向访问正确的 百度并且会在响应头中添加Location:https://www.baidu.com这个响应头浏览器就会根据这个响应的location 再次发起请求这次就会成功请求到正确的百度 在重定向中一共有两次请求响应的过程第一次是请求到了错误的路径但是服务器成功接收返回3XX的状态码和 在请求头中添加Location:正确的路径;浏览器看到状态码是3XX就会根据Location的路径发起第二次请求 但是都是由浏览器在极短的时间内完成的用户无法察觉 4XX客户端的错误处理发生错误责任在于客户端。如请求了不存在的资源、客户端未被授权、禁止访问等 5XX服务器错误处理发生错误责任在于服务端。如客户端程序抛出了异常500就是服务器端抛异常了 通过tomcat服务器封装的HttpServletResponse对象操作响应数据
/*** 和request请求一样Tomcat服务器也将响应的数据封装成了HttpServletResponse对象* 可以操作HttpServletResponse对象便捷的封装响应的数据* param response*/RequestMapping(/response)public void response(HttpServletResponse response) throws Exception {// 设置响应状态码response.setStatus(302);// 设置响应头response.setHeader(Location, https://www.baidu.com);// 设置响应体// 响应体需要使用流写入HttpServletResponse中自带IO流打开后就可以直接写response.getWriter().write(h1Hello Responseh1);} Spring框架提供的ResponseEntity对象更加便捷的操作响应数据 /*** 除了Tomcat服务器的封装Spring提供了操作响应数据的对象ResponseEntity可以通过ResponseEntity对象* 更加便捷的操作响应数据** return*/RequestMapping(/response2)public ResponseEntityString response() {return ResponseEntity.status(307).header(Location, https://www.baidu.com).body(h1Spring Responseh1);}// 但是需要注意的是响应状态码status和响应头header没有特殊要求的话通常不手动设置// 服务器会根据请求处理的逻辑自动设置响应状态码和响应头