jsp中的包含和转发简单解释(静态和动态)

学习jsp的时候一堆重定向和转发还有什么包含,搞的我云里雾里!
所以在这里总结一下,不正之处请指正

1.首先我们来区别一下三种方式,
①forward:是指转发,将当前request和response对象保存,交给指定的url处理。地址栏的地址不会发生改变。

②redirect:是指重定向,包含两次浏览器请求,浏览器根据url请求一个新的页面,所有的业务处理都转到下一个页面,地址栏的地址会变发生改变。说一下原理:我们发送第一个请求时,服务器发现我们的请求被重定向了就会给浏览器发送一个302和地址Location,浏览器得到状态码302就会跳到Location 指定的网址!所以相当于发送两次请求,地址栏也会发生变化!

③include:意为包含,即包含url中的内容:1.静态包含:将多个页面编译成一个servlet;2.动态包含:每个页面编译成一个servlet,运行时将所有servlet的内容组合到一起。

下面我们来说一说这三种方式在servlet和jsp中都有哪些使用方式:
转发:
servlet中:

request.getRequestDispatcher("/success.html").forward(request, response);
getServletContext().getRequestDispatcher("").forward(request, response);
getServletContext().getNamedDispatcher("").forward(request, response);
jsp标签:
<jsp:forward page=“url”>
jsp隐式对象:

pageContext.forward("");

重定向:

servlet中:
response.sendRedirect(request.getContextPath()+"/fail.html");
html(content单位秒):
<meta http-equiv=“refresh” content="300; url=target.jsp">//将给内容以内容形式发送给浏览器解析
http属性refresh:
response.setHeader(“refresh”,“300; url=target.jsp”); //300是延迟时间
http状态码:

response.setStatus(HttpServletResponse.SC_MOVED_PERMANENTLY); //302状态码
response.setHeader(“Location”,"/newpath/jsa.jsp");

包含:

静态包含:
jsp指令:include指令
<%@ include file=“Header.jsp”%>
动态包含:
request和context:

request.getRequestDispatcher("/success.html").include(request, response);
getServletContext().getRequestDispatcher("").include(request, response);
getServletContext().getNamedDispatcher("").include(request, response);
jsp隐式对象:

pageContext.include("");
jsp标签:include标准动作
<jsp:include page=“Header.jsp”/>
采用JSTL
<c:import url=“http://www.sina.com/index.html”>

所以你看到这里的是不是会有一个疑问?那转发和动态包含有什么区别?

  • 请求转发(A干不了给B了):由下一个Servlet完成响应体,当前Servlet可以设置响应头(这叫做:留头不留体);
  • 请求包含(A和B一起干):由两个Servlet共同完成响应体(都留);
  • 无论是请求转发还是请求包含,都在一个请求范围内,使用同一个Request和Response
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值