JSP请求
- JSP使用
<jsp:forward page="URL" />标签来转发请求 - 转发的目标组件可以是
HTML、JSP、Servlet - 转发点和Servlet一样,所有源组件的响应正文都不会被发送给浏览器,共享
HttpServletRequest、HttpServletResponse对象 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”)来分别获取值
Tom和12345
JSP包含
JSP可以使用
<jsp:include page="URL" />标签和include指令来包含其他文件标签包含语法
<jsp:include page="URL" />指令包含的语法
<%@ include file="URL"%>
include指令用于静态包含,<jsp:include>标签用于动态包含,无论是静态包含还是动态包含,都共享请求范围内的数据- 静态包含和动态包含
- 静态包含
- 服务器在解析一个包含另一个JSP文件的JSP文件时,解析到
include指令,就把这个指令指定的文件的整个内容完全包含到当前JSP文件中,然后在把整个JSP翻译为一个Servlet,编译,运行 - 由于静态包含是把整个文件内容包含到当前文件中,所以,被包含文件可以访问包含文件的定义的局部变量
- 被包含文件可以是
JSP、HTML,但不能是Servlet - 静态包含发生在解析期
- 服务器在解析一个包含另一个JSP文件的JSP文件时,解析到
- 动态包含
- 服务器在解析一个包含另一个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文件的JSP文件时,先把当前JSP翻译为Servlet,解析包含语句
- 如何抉择
- 静态包含一般用来包含不会发生变化的网页内容
- 动态包含一般用来包含会发生变化的网页内容
- 静态包含
最后谈谈JSP异常
- 使用前面博客所讲的
JSP的page指令来完成JSP异常的处理 <%@ page isErrorPage="true">表示当前JSP文件为异常处理文件<%@ page errorPage="URL">表示当前页面发生异常,要转到的异常处理的页面。- 抛出异常的
JSP文件和处理异常的JSP文件之间是请求转发的关系,共享同一HttpServletRequest和HttpServletResponse对象
本文详细介绍了JSP的请求转发与包含操作。在JSP中,使用`<jsp:forward>`标签进行请求转发,转发后源组件的响应正文不会发送给浏览器,且共享请求范围内的数据。而`<jsp:include>`标签则分为静态和动态包含,静态包含在解析期将被包含文件内容插入,允许访问局部变量;动态包含在运行时单独生成Servlet,不共享变量。选择静态包含用于不变内容,动态包含用于动态内容。最后讨论了异常处理,利用`<error-page>`指令定义异常处理页面,与抛出异常的页面通过请求转发关联。
755

被折叠的 条评论
为什么被折叠?



