JSP标签也称之为Jsp Action(JSP动做)元素,它用于在Jsp页面中提供业务逻辑功能,避免在JSP页面中直接编写java代码,形成jsp页面难以维护。java
jsp的经常使用标签有如下三个:web
<jsp:include>标签express
<jsp:forward>标签服务器
<jsp:param>标签架构
<jsp:include>标签用于把另一个资源的输出内容插入进当前JSP页面的输出内容之中,这种在JSP页面执行时的引入方式称之为动态引入。 app
语法:
jsp
<jsp:include page="relativeURL | <%=expression%>" flush="true|false" />
page属性用于指定被引入资源的相对路径,它也能够经过执行一个表达式来得到。url
flush属性指定在插入其余资源的输出内容时,是否先将当前JSP页面的已输出的内容刷新到客户端。spa
<jsp:include>标签是动态引入, <jsp:include>标签涉及到的2个JSP页面会被翻译成2个servlet,这2个servlet的内容在执行时进行合并。 动态包含就是指先将各个页面分别处理,处理完以后再将处理后的结果包含进来。.net
而include指令是静态引入,涉及到的2个JSP页面会被翻译成一个servlet,其内容是在源文件级别进行合并。静态包含是将所有内容包含进来以后,再进行处理。
注:无论是<jsp:include>标签,仍是include指令,它们都会把两个JSP页面内容合并输出,因此这两个页面不要出现重复的HTML全局架构标签,不然输出给客户端的内容将会是一个格式混乱的HTML文档。
JSP规范建议使用.jspf(JSP fragments)做为静态引入文件的扩展名。
把一个JSP文件命名为jspf扩展名,而后include到另外一个jsp文件中的,发现只有用”@include“指令的时候,jspf文件的内容才会被解析并执行其中的jsp指令和tag,而使用”jsp:include“和JSTL的”c:import“都没有用,jspf文件被看成纯文本文件处理了。
解决办法一:修改web.xml文件,添加对扩展名为*.jspf文件的映射
<servlet-mapping> <servlet-name>jsp</servlet-name> <!-- 让jsp扩展名一样成为JSP Servlet处理的文件。 --> <url-pattern>*.jsp</url-pattern> <!-- 让jspf扩展名一样成为JSP Servlet处理的文件。--> <url-pattern>*.jspf</url-pattern> </servlet-mapping>
<jsp:forward>标签用于把请求转发给另一个资源。 (服务器端跳转)
语法:
<jsp:forward page="relativeURL | <%=expression%>" />
当使用<jsp:include>和<jsp:forward>标签引入或将请求转发给其它资源时,可使用<jsp:param>标签向这个资源传递参数。
eg:
<jsp:include page="relativeURL | <%=expression%>"> <jsp:param name="parameterName" value="parameterValue|<%= expression %>" /> </jsp:include>