JSP标签
JSP标签也称之为Jsp Action(JSP动作)元素,它用于在JSP页面中提供业务逻辑功能。
<jsp:include>标签
包含。标签用于把另外一个资源的输出内容插入进当前JSP页面的输出内容之中,这种在JSP页面执行时的引入方式称之为动态引入。语法:
<jsp:include page="relativeURL | <%=expression%>" flush="true|false" />
page属性用于指定被引入资源的相对路径,它也可以通过执行一个表达式来获得。
flush属性指定在插入其他资源的输出内容时,是否先将当前JSP页面的已输出的内容刷新到客户端。
动态包含:include标签 <jsp:include page="top.jsp"></jsp:include>
静态包含:include指令 <%@ include file="bottom.jsp" %>
比较
一个jsp页面在服务器端执行的过程有三个阶段:翻译-编译-执行
include标签是动态引入,<jsp:include>标签涉及到的2个JSP页面会被翻译成2个servlet,这2个servlet的内容在执行时进行合并。 两个jsp文件是独立进行翻译和编译的过程,在执行时在include页面中通过方法调用的方式实现包含page页面,相当于pageContext.include()。
而include指令是静态引入,涉及到的2个JSP页面会被翻译成一个servlet,其内容是在源文件级别进行合并。
不管是<jsp:include>标签,还是include指令,它们都会把两个JSP页面内容合并输出,所以这两个页面不要出现重复的HTML全局架构标签,否则输出给客户端的内容将会是一个格式混乱的HTML文档。
项目路径问题
假设myweb应用的根目录下有一个a.jsp文件 如果将a.jsp页面映射成了如下地址:http://localhost:8080/myweb/dir1/a.html
在a.jsp页面中使用了如下语句引入b.jsp文件:<jsp:include page="b.jsp" />
请问:b.jsp要位于什么位置,上面的include才不会出错?http://localhost:8080/myweb/dir1/b.jspf
在a.jsp页面中使用了如下语句引入b.jspf文件:<%@ include file=“b.jspf”%>
请问: b.jspf要位于什么位置,上面的include才不会出错?http://localhost:8080/myweb/b.jspf
<jsp:forward>标签
转发。标签用于把请求转发给另外一个资源。语法:
<jsp:forward page="relativeURL | <%=expression%>" />
page属性用于指定请求转发到的资源的相对路径,它也可以通过执行一个表达式来获得。
<jsp:param>标签
当使用<jsp:include>和<jsp:forward>标签引入或将请求转发给其它资源时,可以使用<jsp:param>标签向这个资源传递参数。
语法1:
<jsp:include page="relativeURL | <%=expression%>">
<jsp:param name="parameterName" value="parameterValue|<%= expression %>" />
</jsp:include>
语法2:
<jsp:forward page="relativeURL | <%=expression%>">
<jsp:param name="parameterName" value="parameterValue|<%= expression %>" />
</jsp:include>
<jsp:param>标签的name属性用于指定参数名,value属性用于指定参数值。在<jsp:include>和<jsp:forward>标签中可以使用多个<jsp:param>标签来传递多个参数。