请求转发与重定向
请求转发:(一般状态码200)
1.客户端发送请求,Servlet做出业务逻辑处理。
2.Servlet调用forword()方法,服务器Servlet把目标资源返回给客户端浏览器
3.可以访问WEB-INF下的文件,WEB-INF的文件一般是需要一定的权限才可以访问
2.Servlet调用forword()方法,服务器Servlet把目标资源返回给客户端浏览器
3.可以访问WEB-INF下的文件,WEB-INF的文件一般是需要一定的权限才可以访问
注意点:
在浏览器地址栏中不会显示出转发后的地址,属于服务器内部转发,整个过程处于同一个请求当中,所以转发中数据的存取可以用request作用域
请求重定向:(一般状态码302)
1.客户端发送请求,Servlet做出业务逻辑处理理
2.Servlet调用response.sendRedirect("xxx.jsp")方法,把要访问的⽬目标资源作为response响应信息发给客户端浏览器
3.客户端浏览器器重新访问服务器器资源xxx.jsp,服务器器再次对客户端浏览器器做出响应
4.请求重定向,不能访问WEB-INF下的文件,浏览器上的窗口地址会改版,可以用于跳转第三方地址或者应用里里面的其他Servelt、jsp等
2.Servlet调用response.sendRedirect("xxx.jsp")方法,把要访问的⽬目标资源作为response响应信息发给客户端浏览器
3.客户端浏览器器重新访问服务器器资源xxx.jsp,服务器器再次对客户端浏览器器做出响应
4.请求重定向,不能访问WEB-INF下的文件,浏览器上的窗口地址会改版,可以用于跳转第三方地址或者应用里里面的其他Servelt、jsp等
注意点:
1.重定向是取不到request中的存储的数据,如果当前servlet是重定向,浏览器器可以看到两个请求
2.调用sendRedirect()方***在响应中设置Location响应报头,这个过程对于用户来说是透明的,浏览器会自动完成新的访问
3.重定向路路径问题:如果没有加 http 开头,则认为是当前应用里里面的servlet重定向,默认加上应用上下文;如果有加http则会使用配置的全路径进行跳转
2.调用sendRedirect()方***在响应中设置Location响应报头,这个过程对于用户来说是透明的,浏览器会自动完成新的访问
3.重定向路路径问题:如果没有加 http 开头,则认为是当前应用里里面的servlet重定向,默认加上应用上下文;如果有加http则会使用配置的全路径进行跳转
如果请求转发可以满足需要时,尽量使用请求转发,而不是重定向,一次请求比两次请求占用网络资源少,效率性能更好