请求转发
请求转发是一种服务器的行为,当客户端请求到达之后,服务器进行转发,此时会将请求对象进行保存,地址栏中的URL不会改变,得到响应后,服务端再响应发送给客户端,从始至终只有一个请求发出。
重定向
重定向是一种服务器指导,客户端的行为。客户端发出第一个请求,被服务器接收处理后,服务器会进行响应,在响应的同时,服务器会给客户端一个新的地址(下次请求的地址response.sendRedirect(url)),当客户端接收响应后,会立刻、马上、自动根据服务器给的新地址发出第二个请求,服务器接收请求并作出响应,重定向完成。
请求转发和重定向比较:
请求转发(req.getRequestDispatcher().forward())
一次请求,数据在request域中共享,服务端行为,地址栏不会发生变化,绝对地址定位到站点后,只能是当前站点下(当前项目)的资源;
重定向(resp.sendRedirect)
两次请求,request域中数据不共享,客户端行为,地址栏发生变化,绝对地址可写到http://,可以是任何地址;
两者都可以进行跳转,根据实际需求选取即可。
Cookie对象
Cookie是浏览器提供的一种技术,通过服务器的程序能将一些只需保存在客户端,或者在客户端进行处理的数据,放到本地的计算机上,不需要通过网络传输,因而可以提高网页处理的效率,并且能够减少服务器的负载,但是由于Cookie是服务器端保存在客户端的信息,因此其安全性也是很差的。例如常见的记住密码则可以通过Cookie来实现。
有一个专门操作Cookie的类javax.servlet.http.Cookie。随着服务端的响应发送给客户端,保存在浏览器中。当下次再访问服务器时把Cookie再带回服务器。
Cookie的格式:键值对用"="链接,多个键值对间通过";"隔开。