JSP请求转发

本文详细介绍了JSP的请求转发与包含操作。在JSP中,使用`<jsp:forward>`标签进行请求转发,转发后源组件的响应正文不会发送给浏览器,且共享请求范围内的数据。而`<jsp:include>`标签则分为静态和动态包含,静态包含在解析期将被包含文件内容插入,允许访问局部变量;动态包含在运行时单独生成Servlet,不共享变量。选择静态包含用于不变内容,动态包含用于动态内容。最后讨论了异常处理,利用`<error-page>`指令定义异常处理页面,与抛出异常的页面通过请求转发关联。

JSP请求

  • JSP使用<jsp:forward page="URL" />标签来转发请求
  • 转发的目标组件可以是HTMLJSPServlet
  • 转发点和Servlet一样,所有源组件的响应正文都不会被发送给浏览器,共享HttpServletRequestHttpServletResponse对象
  • Servlet中,HttpServletResponse对象的sendRedirect(String location)方法进行请求转发之后的代码也会执行,但是在JSP中,转发标签之后的代码不会被执行
  • 在标签<jsp:forward page="URL" />之间可以加一个或多个<jsp:para 属性="值"/>来向转发的目标组件传递参数

    <jsp:forward page="/hello.jsp">
    <jsp:param name="username" value="Tom" />
    <jps:param name="password" value="12345" />
    </jsp:forward>

在目标组件中可以通过request.getParameter(“username”)和request.getParameter(“password”)来分别获取值Tom12345

JSP包含

  • JSP可以使用<jsp:include page="URL" />标签和include指令来包含其他文件

    • 标签包含语法
      <jsp:include page="URL" />

    • 指令包含的语法
      <%@ include file="URL"%>

  • include指令用于静态包含,<jsp:include>标签用于动态包含,无论是静态包含还是动态包含,都共享请求范围内的数据

  • 静态包含和动态包含
    • 静态包含
      • 服务器在解析一个包含另一个JSP文件的JSP文件时,解析到include指令,就把这个指令指定的文件的整个内容完全包含到当前JSP文件中,然后在把整个JSP翻译为一个Servlet,编译,运行
      • 由于静态包含是把整个文件内容包含到当前文件中,所以,被包含文件可以访问包含文件的定义的局部变量
      • 被包含文件可以是JSPHTML,但不能是Servlet
      • 静态包含发生在解析期
    • 动态包含
      • 服务器在解析一个包含另一个JSP文件的JSP文件时,先把当前JSP翻译为Servlet,解析包含语句<jsp:include page="URL" />,翻译为org.apache.jasper.runtime.JspRuntimeLibrary.include(request, response, "包含的文件名", out, false)这条语句,翻译完之后,运行这个Servlet,运行Servlet时碰到上述包含语句org.apache.jasper.runtime.JspRuntimeLibrary.include(request, response, "包含的文件名", out, false),再开始解析被包含文件的内容,把它翻译为一个Servlet,在运行这个Servlet,运行完,回到当前Servlet继续运行直到结束
      • 动态包含是各自JSP文件生成各自对应的Servlet文件,两个文件时独立的,所以,被包含文件不能访问包含文件声明的变量
      • 被包含文件可以是HTML、JSP、Servlet文件
      • 动态包含发生在运行时
    • 如何抉择
      • 静态包含一般用来包含不会发生变化的网页内容
      • 动态包含一般用来包含会发生变化的网页内容

最后谈谈JSP异常

  • 使用前面博客所讲的JSPpage指令来完成JSP异常的处理
  • <%@ page isErrorPage="true">表示当前JSP文件为异常处理文件
  • <%@ page errorPage="URL">表示当前页面发生异常,要转到的异常处理的页面。
  • 抛出异常的JSP文件和处理异常的JSP文件之间是请求转发的关系,共享同一HttpServletRequestHttpServletResponse对象
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值