forward、include 和sendRedirect方法的区别
get和post这是http协议的两种方法,get是用来从服务器上获得数据,而post是用来向服务器上传递数据,在Servlet开发中,用doGet()和doPost()方法分别处理get和post。
这两种方法有本质的区别,get只有一个流,参数附加在url后,大小个数有严格限制且只能是字符串。post的参数是通过另外的流传递的,不通过url,所以可以很大,也可以传递二进制数据,如文件的上传。
其次get方法是不安全的,get历史参数会被保留在浏览器历史中,信息可能被第三方看到;而post的所有操作对用户都是不可见,post参数也不会被保存在浏览器历史中。
forward()方法
浏览器向web服务器发送请求,Servlet容器里Servlet1接受请求当它发现它处理不了这个请求就通过forward方法把请求转给Servlet2处理,Servlet2处理完请求,输出响应给浏览器,整个过程浏览器是不知道Web服务器的内部操作的。
include()方法
浏览器向web服务器发送请求,Servlet容器里Servlet1接受请求,当它发现它一个人处理不了这个请求就通过include方法请求Servlet2一起处理请求,两者一起处理完请求后,把结果输出响应给浏览器,整个过程浏览器是不知道Web服务器的内部操作的。
sendRedirect()方法
浏览器向web服务器发送请求,Servlet容器里Servlet1接受请求当它发现它处理不了这个请求就通过sendRedirect方法将无法完成此请求,让浏览器去请求Servlet2的信息返回给浏览器,浏览器接收到信息后,重新向Servlet2发送请求,Servlet2处理完请求,输出响应给浏览器,整个过程浏览器是知道Web服务器的内部操作的。
总而言之,forward()方法、include()方法 ,即转发,是服务器行为;sendRedirect()方法、即重定向,是客户端行为。