复习JavaWeb的请求(request)/响应(response)&Java面试题HTTP与HTTPS的区别&生活【记录一个咸鱼大学生三个月的奋进生活】032

请求(request) / 响应(response) 相关知识

因为Servlet和客户通信采用的是“请求(request)/响应(response)”模式

还有一个要注意的是在HTTP协议下所有数据传输都是String类型的,这个在今天的面试题中也有讲到,然后在平常代码中获取数据时大家就要注意数据类型的转换了

请求(request)相关知识

HTTP请求消息的结构:一个请求行、若干消息头、以及实体内容,其中的一些消息头和实体内容都是可选的,消息头和实体内容之间要用空行隔开

request传递数据的方法有两种常用的方法:Parameter 和 Attribute
对于纯粹的Servlet应用来说:
getParameter是用来取得客户端以GET方式(xxx.do?xxx=123)或 POST方式(表单提交)传递的数据
而request.getAttribute()只能获取到request.setAttribute()设置的数据,主要用途是在Servlet转发JSP的过程中传递数据

Parameter的常用方法和概念

request.getParameter(“属性名”) —— 从服务器端获取客户端的数据方法
request.getParameterValues(“属性名”) —— 从服务器端获取客户端的数组或多个数据的方法

request中没有setParamter方法,不能直接设置客户端的数据

Attribute的常用方法和概念

发送数据到客户端方法:
request.setAttribute(“发送名”,发送的内容) —— 发送数据到客户端方法
request.getRequestDispatcher(“发送跳转的页面”).forward(request,response); —— getRequestDispatcher通过请求转发方式跳转至发送数据的界面,forward转发方法,只显示转发前的地址栏

客户端获取数据方法:
request.getAttribute(“与发送名一致”) —— 获取发送的数据

Parameter 和 Attribute 的区别

Parameter:
① 客户端参数
② 由容器tomcat存放
③ 数据是只读的
④ 存储的数据只能是字符串类型的

Attribute:
① 服务器端数据
② 由程序员调用setAttribute方法存放
③ 数据是可读写
④ 存储的数据是Object类型(所有类型)的

request的常用方法

request.getCharacterEncoding() —— 获取setCharacterEncoding()方法设置的编码
request.getContentType() —— 获取页面的响应形式
request.getContextPath() —— 获取根路径
request.getScheme() —— 获取协议开头
request.getServerName() —— 获取服务器名称
request.getServletPath() —— 获取当前请求的地址
request.getServerPort() —— 获取当前请求的端口
request.getMethod() —— 获取请求方法
request.getRequestURI() —— 获取请求行中的资源部分路径
request.getRequestURL() —— 获取客户端发出请求时完整的URL路径
request.getPathInfo() —— 获取实际URL相对于请求的serlvet的路径
request.getRealPath(“jsp”) —— 获取发布上去服务器运行环境的路径

响应(response)相关知识

HTTP响应消息的结构:一个状态行、若干消息头、以及实体内容 ,其中的一些消息头和实体内容都是可选的,消息头和实体内容之间要用空行隔开

请求转发和重定向

请求转发(request.getRequestDispatcher)

  通过RequestDispatcher接口实现请求转发,RequestDispatcher实例对象是由Servlet引擎创建的,它用于包装一个要被其他资源调用的资源(例如:Servlet、HTML文件、JSP文件等),并可以通过其中的方法将客户端的请求转发给所包装的资源

实现语句: request.getRequestDispatcher(“跳转的页面,只能以“/”开头的路径”).forward(request,response); —— getRequestDispatcher方法跳转至发送数据的界面,forward是转发方法

请求转发注意事项:
① 不会丢失数据(也就是能够通过Attribute传递数据
② 地址栏显示转发前的地址,内容为转发后的内容
③ 请求转发只能转发项目内的页面
④ 可以访问WEB-INF(安全目录)里的内容

重定向(response.sendRedirect)

  sendRedirect 方法不仅可以重定向到当前应用程序中的其他资源,它还可以重定向到同一个站点上的其他应用程序中的资源,甚至是使用绝对URL重定向到其他站点的资源,如果传递给 sendRedirect 方法的相对URL以“/”开头,则是相对于整个WEB站点的根目录,而不是相对于当前WEB应用程序的根目录

实现语句: reponse.sendRedirect(“跳转的页面路径”) —— sendRedirect方法跳转至指定界面

请求转发注意事项:
① 数据会丢失(不能传递数据
② 地址栏显示重定向后的地址
③ 重定向还可以重定向到项目以外的页面
④不能访问WEB-INF(安全目录)里的内容

请求转发 和 重定向 的区别

请求转发:
① 数据不会丢失(能够传递数据)
② 请求方法转发后一致(全部为get或post)
③ url地址栏显示转发前的路径
④ 刷新页面后表单会重复提交
⑤ 只能转发到web内部

重定向:
① 数据会丢失(不能传递数据)
② 全部为get请求
③ url地址栏显示重定向后的路径
④ 表单数据不会重复提交
⑤ 可以重定向到web外部

所以一般按 是否需要传输数据 来决定使用 请求转发 还是 重定向

学习Java面试题(HTTP 与 HTTPS的区别)

指路陈哈哈大佬的网络编程相关面试题原帖

照片分享

作者:吉吉黄   作品名:鹏城尽带黄金甲  出自500px社区









2021.08.29  by wyh

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Aspiriln

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值