华东师范大学-JavaEE技术与实践-毛宏燕
JSP第二部分
JSP转发请求
- JSP动作元素是在请求处理阶段起作用。
- JSP动作元素以jsp作为前缀,基于XML语法。
<jsp:forward>
动作用于将客户请求转发到其它的HTML文件、JSP文件或者Servlet文件。<jsp:forward>
语法为:<jsp:forward page= " 重新转发的文件url 地址" />- 等同于在Servlet中转发请求
private String target = "/hello.jsp " ;
RequestDispatcher dispatcher=request.getRequestDispatcher(target);
dispatcher.forward(request,response);
- 如果JSP文件中包含
<jsp:forward>
标签,那么JSP文件中的所有输出数据都不会被发送到客户端,并且<jsp:forward>
标签以下的代码不会被执行。 - 转发目标组件与源组件共享同一个HttpServletRequest对象。
<jsp:param>
向目标传递请求参数
JSP异常处理
- 如果在执行JSP的Java代码时发生异常,可以将HTTP请求转发给另一个专门处理异常的网页:
<%@ page errorPage="errorpage.jsp" %>
- 在处理异常的网页中,需要将该网页声明为异常处理网页:
<%@ page isErrorPage="true" %>
- 在处理异常的网页中可以直接访问exception隐含对象,获取详细的异常信息,例如:
<p>
错误原因为:<% exception.printStackTrace(new PrintWriter(out));%>
</p>
JSP包含文件
静态包含<%@ include file="url.jsp" %>
动态包含<jsp:include page="url.jsp">
区别:
- 静态包含
<%@include >
:
①主JSP文件转换成servlet时,将被包含文件插入到主页面中。
②被包含的jsp文件如果发生改变,需要更改主页面,主页面不会自动查看被包含页面是否改变 。
③一个Servlet文件 - 动态包含
<jsp:include>
:
①被包含的jsp文件如果发生了改变,不需要更改主页面。
②两个Servlet文件
应该使用哪种方式?
- 尽量使用jsp:include:对被包含页面的更改不需要更新主页面,易于维护