📅 2021-03-12 13:00
👁️ 147
💬 0
getRequestDispatcher()与sendRedirect()的区别
-
request.getRequestDispatcher()是请求转发,前后页面共享一个request ;
response.sendRedirect()是重新定向,前后页面不是一个request
-
RequestDispatcher.forward()是在服务器端运行;
HttpServletResponse.sendRedirect()是通过向客户浏览器发送命令来完成.
-
ServletContext.getRequestDispatcher(String url)中的url只能使用绝对路径;
ServletRequest.getRequestDispatcher(String url)中的url可以使用相对路径。因为
ServletRequest具有相对路径的概念;而ServletContext对象无此概念
-
response.sendRedirect(url)跳转到指定的URL地址,产生一个新的request,所以要传递参数只有在url后加参,如www.baidu.com?id=1
request.getRequestDispatcher(url).forward(request,response)是直接将请求转发到指定URL,所以该请求能够直接获得上一个请求的数据,也就是说采用请求转发,request对象始终存在,不会重新创建。而sendRedirect()会新建request对象,所以上一个request中的数据会丢失。
注意:
-
sendRedirect(url):会首先发一个response给浏览器, 然后浏览器收到这个response后再发一个requeset给服务器, 然后服务器发新的response给浏览器. 这时页面收到的request是一个新从浏览器发来的.
-
forward 发生在服务器内部, 在浏览器完全不知情的情况下发给了浏览器另外一个页面的response. 这时页面收到的request不是从浏览器直接发来了,可能己经request.setAttribute在request里放了数据.在转到的页面可直接用request.getAttribute获得数据。
-
运用forward方法只能重定向到同一个Web应用程序中的一个资源。而sendRedirect方法可以让你重定向到任何
如:sendRedirect("/t1") 表示相对于服务器根路径
网址http://localhost:8080/Test 则提交到 http://localhost:8080/t1
Forward代码中的"/uu"则代表相对与WEB应用的路径
如http://localhost:8080/Test 则提交至http://localhost:8080/Test/t1
-
forward()无法重定向至有frame的jsp文件,可以重定向至有frame的html文件,
forward()无法在后面带参数传递,比如servlet?name=frank,这样不行,可以程序内通过
response.setAttribute("name",name)来传至下一个页面.
重定向后浏览器地址栏URL不变.
阅读更多
📅 2021-03-11 15:13
👁️ 116
💬 0
前言
计算机网络学习的核心就是网络协议的学习。
网络协议是为了计算机网络进行数据交换而建立的规则、标准或者是约定的集合。
因为不同用户的数据终端可能采取不同的字符集, 两者之间需要进行通信就必须在一定的标准上。
计算机网络协议同我们的语言一样,多种多样。而ARPA公司与1977年到1979年推出了一种名为ARPANET的网络协议受到了广泛的热捧,其中最主要的原因就是它推出了人尽皆知的TCP/IP标准网络协议。目前TCP/IP协议已经成为Internet中的"通用语言",
计算机网络相关知识
1. 网络层次的划分
1.1 为什么要进行网络层次的划分
在计算机领域,任何问题到了某个复杂的阶段,如果当前方法不能解决问题,必定可以通过加多一层来解决,如果加多一层都解决不了问题,那肯定是这个问题模型的层次已经到极限了
- 各个层次之间相互独立,每一层只实现一种相对独立的功能,可以将一个难题细分成若干部分进行解决,有助于各个部门的开发设计和故障排除,并且能促进标准化工作。
- 灵活性高,当任何一层发生变化时(例如由于技术的变化),只要层间接口关系保持不变,则在这层以上或以下各层均不受影响。此外,对某一层提供的服务还可进行修改。
2 OSI 七层网络模型
OSI七层网络模型: 应用层 --->表示层---->会话层----->传输层-----> 网络层 -----> 数据链路层 ------->物理层


-
物理层
-
数据链路层
最基本的服务是将源自网络层来的数据可靠地传输到相邻节点的目标机网络层
该层的作用包括:物理地址寻址、数据的成帧、流量控制、数据的检错、重发等。
- 数据链路层为网络层提供可靠的数据传输
- 基本数据单位为帧;
- 主要的协议:以太网协议;
- 重要的设备名称:网桥和交换机
-
网络层
目的是实现两个端系统之间的数据透明传送,具体功能包括寻址和路由选择、连接的建立、保持和终止等。
-
运输层
第一个端到端,即主机到主机的层次。传输层负责将上层数据分段并提供端到端的、可靠的或不可靠的传输
传输层的任务是根据通信子网的特性,最佳的利用网络资源,为两个端系统的会话层之间,提供建立、维护和取消传输连接的功能
-
会话层
会话层管理主机之间的会话进程,即负责建立、管理、终止进程之间的会话。会话层还利用在数据中插入校验点来实现数据的同步。
-
表示层
表示层对上层数据或信息进行变换以保证一个主机应用层信息可以被另一个主机的应用程序理解。
表示层的数据转换包括数据的加密、压缩、格式转换等
-
应用层
为操作系统或网络应用程序提供访问网络服务的接口。
会话层、表示层和应用层重点:
- 数据传输基本单位为报文;
- 包含的主要协议:
- FTP(文件传送协议)
- Telnet(远程登录协议)
- DNS(域名解析协议)
- SMTP(邮件传送协议)
- POP3协议(邮局协议)
- HTTP协议(Hyper Text Transfer Protocol)
阅读更多
📅 2020-11-11 17:04
👁️ 121
💬 0
-
GET在浏览器回退时是无害的,post会再次提交请求
-
GET产生的URL地址可以被Bookmark,而POST不可以
-
GET请求会被浏览器主动cache,而POST不会,除非手动设置
-
GET请求只能进行url编码,而POST支持多种编码方式
-
GET请求参数会被完整保留在浏览器历史记录里,而POST中的参数不会被保留
-
GET请求在URL中传送的参数是有长度限制的,而POST没有
-
对参数的数据类型,GET只接受ASCII字符,而POST没有限制
-
GET比POST更不安全,因为参数直接暴露在URL上,所以不能用来传递敏感信息。
-
GET参数通过URL传递,POST放在Request body中。
阅读更多
📅 2020-11-07 23:52
👁️ 58
💬 0
大致流程
- URL 解析
- DNS 查询
- TCP 连接
- 服务器处理请求
- 浏览器接受响应
- 浏览器解析渲染页面
- 断开连接
阅读更多