转发原理图
转发方法
1)request对象与转发相关方法
request.getRequestDispatcher("/要跳转的地址").forward(request,response);
重定向原理图
重定向方法
1)response对象与重定向相关方法
response.sendRedirect("/要跳转的地址");
区别 | 转发 forward | 重定向 redirect |
---|---|---|
地址栏不同 | 不会发生变化 | 会发生变化 |
根目录 | 包含项目访问地址 | 没有项目访问地址 |
跳转位置 | 服务器端进行的跳转,不可访问站外资源 | 浏览器端进行的跳转,可以访问站外资源 |
请求对象(域)中数据 | 请求域数据不会丢失,因为是同一个请求 | 请求域数据会丢失,因为不是同一个请求 |
是否可以访问WEB-INF下面的资源 | 可以访问WEB-INF下面的资源(包含静态和动态) | 不可以访问WEB-INF下面的资源(包含静态和动态) |
问:什么时候使用转发,什么时候使用重定向?
1)如果要保留请求域中的数据,使用转发,否则使用重定向。以后访问数据库,增删改使用重定向,查询使用转发。
问:转发和重定向后面的代码是否还会执行
1)无论转发或重定向后续的代码都会执行
作用域 | 类型 | 作用范围 |
---|---|---|
请求域 | HttpServletRequest | 只在同一次请求中起作用 |
会话域 | HttpSession | 同一个回话中起作用 一次会话是从浏览器打开开始,到关闭浏览器结束 |
上下文域 | ServletContext | 同一应用中起作用 上下文域也称application应用程序域,application作用范围为程序开始运行到运行停止 |
作用域相关方法 | 作用 |
---|---|
Object setAttribute(“键”) | 从中得到一个值 |
void setAttribute(“键”, Object数据) | 向作用域中存储键值对数据 |
void removeAttribute(“键”) | 删除作用域种的键值对数据 |
以上就是对请求转发和JavaWeb三大作用域的详细介绍了,代码仅供参考,欢迎讨论交流。