javaWeb之重定向和转发
2016-12-27 20:50
239 查看
重定向是什么?转发又是什么?
重定向(Redirect)就是通过各种方法将各种网络请求重新定个方向转到其它位置.转发:个人理解就是将自己的资源分享给别人.(建议读者自己Google吧)
重定向如何实现,转发又如何实现
1,重定向使用指定重定向位置 URL 将临时重定向响应发送到客户端。此方法可以接受相对 URL;servlet 容器必须在将响应发送到客户端之前将相对 URL 转换为绝对 URL。如果位置是相对的,没有前导 ‘/’,则容器将相对于当前请求 URI 对其进行解释。如果位置是相对的,有一个前导 ‘/’,则容器将相对于 servlet 容器根对其进行解释
response.sendRedirect(String path);
2,转发
返回一个 RequestDispatcher 对象,它充当位于给定路径上的资源的包装器。可以使用 RequestDispatcher 对象将请求转发给资源,或者在响应中包含资源。资源可以是动态的,也可以是静态的。
RequestDispatcher getRequestDispatcher(String path).forward(ServletRequest request, ServletResponse response) //转发的方法 //include(ServletRequest request, ServletResponse response) //请求包含
这时候应该举个例子了
1,重定向protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { request.setCharacterEncoding("UTF-8"); response.setContentType("text/html;charset=UTF-8"); System.out.println("请求重定向"); request.setAttribute("username", "ggg"); response.sendRedirect(request.getContextPath()+"/Demo3"); // response.sendRedirect("https://www.taobao.com/"); System.out.println("还回来不?"); String name = (String) request.getAttribute("username"); System.out.println(name); }
2,转发
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { req.setCharacterEncoding("UTF-8"); resp.setContextType("text/html;charset=UTF-8"); System.out.println("A:帮我做件事"); resp.getWriter().println("Welcome"); req.setAttribute("user", "bb"); req.getRequestDispatcher("/demo2").forward(req, resp);//请求转发 /* req.getRequestDispatcher("https://www.taobao.com/").forward(req, resp);*/ System.out.println("转发回来了"); String name = (String) req.getAttribute("user"); if (name!=null) { System.out.println(name); } System.out.println("A:办完了"); }
运行后会发现以下区别:
转发 :
request 由服务器执行客户端只发送一次请求
地址栏不变
转发能够传递数据
转发也是一个域对象(servletContext)
转发之后,回来才会继续执行位于转发语句之后的代码.
重定向:
response 由客户端执行客户端发送两次请求
地址栏会发生变化
不能传递数据
可以跳转到其它应用
当前应用的所有代码执行完后执行.
相关文章推荐
- javaweb-servlet重定向与转发的区别及案例
- 关于javaWeb里转发与重定向斜杠的问题
- 【JavaWeb-6】HttpServletResponse的字符字节输出流、编码、文件下载、Captcha图片与HttpServletRequest获取request数据表单非表单数据、重定向与转发
- JAVAWEB开发之HttpServletResponse和HttpServletRequest详解(上)(各种乱码、验证码、重定向和转发)
- 【JavaWeb】简述 jsp 页面的工作原理以及请求转发和重定向的区别
- java中web应用中重定向与转发的区别
- JavaWeb 转发与重定向解读
- java中web应用中重定向与转发的区别
- javaWeb中转发与重定向的区别
- java Web 转发 重定向
- java web重定向与转发
- javaweb_转发与重定向
- Java Web笔记 – 转发与重定向的区别与在FireBug客户端的表现
- JAVA WEB转发与重定向对比与图说明
- Java Web - 路径问题 - Struts - 配置文件 - 各种重定向与转发
- java中web应用中重定向与转发的区别
- Java Web 重定向、转发之对比
- java_web转发和重定向的区别
- java中web应用中重定向与转发的区别
- java web从零单排第九期《struts2》action的转发与重定向