一、include指令
<%@ include file="URL"%>
在当前页面显示被包含页面的内容(源代码)
在服务器工作目录中只会有一个servlet(主页面和被包含页面转换成一个servlet)
二、include动作
动作标签
<jsp:include page="URL" flush="true|false"/>
在当前页面显示被包含页面的内容(输出结果)
在服务器工作目录中会有两个单独的servlet(原来的jsp和被包含的jsp)
主页面的servlet中动作标签会被解析为:
调用被包含页面得到输出结果
org.apache.jasper.runtime.JspRuntimeLibrary.include(request, response,
"date.jsp", out, false);
- page表示要包含的页面
- flush表示被包含的页面是否从缓冲区中读取
三、include指令与include动作比较
< jsp:include >动作在请求期间被执行,而include指令在编译期页面间被执行
四、forward动作
<jsp:forward page="URL"/>
等同于:请求转发
request.getRequestDispatcher("/url").forward(request, response);
forward动作标签会被解析为:
_jspx_page_context.forward("user.jsp");
五、param动作
<jsp:param value="参数值" name="参数名"/>
添加或者覆盖原有请求中的参数。
常常与forward动作一起使用,并作为其子标签。
<jsp:forward page="user.jsp">
<jsp:param value="admin@123.net" name="email"/>
<jsp:param value="888888" name="password"/>
</jsp:forward>
会被解析为:
_jspx_page_context.forward("user.jsp" + "?" +
org.apache.jasper.runtime.JspRuntimeLibrary.URLEncode("email", request.getCharacterEncoding())+ "=" +
org.apache.jasper.runtime.JspRuntimeLibrary.URLEncode("admin@123.net",
request.getCharacterEncoding()) + "&" +
org.apache.jasper.runtime.JspRuntimeLibrary.URLEncode("password", request.getCharacterEncoding())+
"=" + org.apache.jasper.runtime.JspRuntimeLibrary.URLEncode("888888",
request.getCharacterEncoding()));