JavaWeb资源跳转
资源的跳转
-
在一个web应用中通过两种方式,可以完成资源的跳转:
- 转发
- 重定向
-
转发和重定向有什么区别?
-
代码上有什么区别?
-
转发(一次请求)
//获取请求转发器对象,调用forward方法完成转发 request.getRequestDispatcher("/xxx/yyy").forward(request,response);
转发的时候是一次请求,不管转发了多少次,都是一次请求。
-
重定向(两次请求)
response.sendRedirect(request.getContextPath()+"/b"); //重定向时的路径当中需要以项目名开始,或者说需要添加项目名 //response对象将这个路径:"/servlet/b"响应给浏览器了 //浏览器又自发的向服务器发送了一次全新的请求:http://localhost:8080/servlet/b //所以浏览器一共发送了两次请求: //第一次请求:http://localhost:8080/servlet/a //第二次请求:http://localhost:8080/servlet/b //最终浏览器地址栏上显示的地址当然时最后那一次请求的地址
所以重定向,会把地址栏上的路径进行改变
-
-
-
转发和重定向应该如何选择?什么时候使用转发,什么时候使用重定向?
- 如果在上一个Servlet当中向request域当中绑定了数据,希望从下一个Servlet当中把request域里面的数据取出来,使用转发机制。
- 剩下所有的请求均使用重定向。(重定向使用较多)
-
跳转的下一个资源有没有要求呢?必须是一个Servlet吗?
- 不一定,跳转的资源只要是服务器内部合法的资源即可。包括:Servlet、JSP、HTML
-
转发会存在浏览器的刷新问题
补充
Javabean
- 什么是javabean?
- java是咖啡
- bean是豆子
- javabean:咖啡豆
- 咖啡是由咖啡豆研磨而成。寓意java程序是由一个一个的javabean组成的。
- 一个javabean一般有规范的
- 有无参构造方法
- 属性私有化
- 对外提供setter和getter方法
- 重写toString()
- 重写hashCode + equals
- 实现java.io.Serializable接口