JSP标签介绍
JSP标签也称之为Jsp Action(JSP动作)元素,它用于在Jsp页面中提供业务逻辑功能,避免在JSP页面中直接编写java代码,造成jsp页面难以维护。
区分开 jsp 指令 , 不要发生混淆

JSP常用标签
<jsp:include>
<jsp:forward>
<jsp:param>
jsp的常用标签有
<jsp:include>标签
-
之前 在 指令 种 了解到过 ,这里 单独简绍 ,重在使用
动态引入 :
<jsp:include>标签用于把 另外一个资源的输出内容 插入进当前JSP页面的输出内容之中,在JSP页面执行时的引入
语法:
<jsp:include page=" relativeURL | <%=expression%> " flush="true|false" />page属性指定 被引入资源 的 相对路径,它也可以通过执行一个 表达式 来获得。
flush属性指定 在插入其他资源的输出内容 时,是否先将当前JSP页面的已输出的内容 刷新 到客户端。
例:使用jsp:include标签引入资源
<h1> 网页主题 </h1>
<jsp:include page="/Jsp-Include/index.jsp" flush="true">
<jsp:include>标签与include指令的区别
<jsp:include>标签是 动态引入,<jsp:include>标签涉及到的2个JSP页面会被翻译成2个servlet,这2个servlet的内容在执行时进行合并。
动态包含就是指先将各个页面分别处理,处理完之后再将处理后的结果包含进来。
而include指令是静态引入,涉及到的2个JSP页面会被翻译成一个servlet,其内容是在 源文件级别 进行合并。
不管是<jsp:include>标签,还是include指令,它们都会把两个JSP页面内容合并输出,所以这两个页面不要出现重复的HTML全局架构标签,否则输出给客户端的内容将会是一个格式混乱的HTML文档。
*.jspf扩展名文件在jsp:include、@include和:import中的区别
JSP规范建议使用.jspf(JSP fragments)作为 静态引入 文件的扩展名。
一个JSP文件命名为jspf扩展名,然后 include 到另一个 jsp 文件中的,发现只有用 @include 指令的时候,jspf 文件的内容才会被解析并执行其中的 jsp指令 和 tag
使用jsp:include和JSTL的:import都没有用,jspf文件被 当作 纯文本 文件处理了。
jspf 文件 Tomcat服务器 被当作 纯文本文件 处理了,没有当作jsp页面来解析执行
让 tomcat 服务器能够解析执行 *.jspf 文件中的 java 代码 和 标签
有如下的几种解决办法:
-
解决办法一:
- 修改
web.xml文件,添加对扩展名为*.jspf文件的映射
如下所示:
<!-- 让jspf扩展名同样成为JSP Servlet处理的文件。 -->
<servlet-mapping>
<servlet-name>jsp</servlet-name>
<url-pattern>*.jspf</url-pattern>
</servlet-mapping>
<!-- 让jsp扩展名同样成为JSP Servlet处理的文件。 -->
<servlet-mapping>
<servlet-name>jsp</servlet-name>
<url-pattern>*.jsp</url-pattern>
</servlet-mapping>
上面的配置方式也可以简写成这样:
<servlet-mapping>
<servlet-name>jsp</servlet-name>
<url-pattern>*.jsp</url-pattern>
<!-- 让jspf扩展名同样成为JSP Servlet处理的文件。-->
<url-pattern>*.jspf</url-pattern>
</servlet-mapping>
两种写法的效果都是一样的。
添加这样的配置信息后,此时tomcat服务器就可以正常解析执行*.jspf文件了,如下所示:
-
解决办法二:
- 修改
Tomcat 服务器的web.xml文件,添加对扩展名为*.jspf文件的映射
找到tomcat服务器的web.xml文件,如下所示:
找到名字为jsp的那个Servlet,如下所示:
<servlet>
<servlet-name>jsp</servlet-name>
<servlet-class>org.apache.jasper.servlet.JspServlet</servlet-class>
<init-param>
<param-name>fork</param-name>
<param-value>false</param-value>
</init-param>
<init-param>
<param-name>xpoweredBy</param-name>
<param-value>false</param-value>
</init-param>
<load-on-startup>3</load-on-startup>
</servlet>
然后根据Servlet名找到对应的servlet-mapping配置
如下所示:
<!-- The mappings for the JSP servlet -->
<servlet-mapping>
<servlet-name>jsp</servlet-name>
<url-pattern>*.jsp</url-pattern>
<url-pattern>*.jspx</url-pattern>
</servlet-mapping>
在这里可以看到,名字为jsp的那个Servlet只支持*.jsp和*.jspx两种扩展名
因此可以在这个地方添加多一个<url-pattern>``*.jspf``</url-pattern>
<!-- The mappings for the JSP servlet -->
<servlet-mapping>
<servlet-name>jsp</servlet-name>
<url-pattern>*.jsp</url-pattern>
<url-pattern>*.jspx</url-pattern>
<url-pattern>*.jspf</url-pattern>
</servlet-mapping>
经过这样的配置之后,Tomcat服务器就可以正常 解析和执行 *.jspf 文件了。
<jsp:forward>标签
标签用于把请求转发给另外一个资源。
语法:
<jsp:forward page="relativeURL | <%=expression%>" />
page 属性 用于指定请求转发到的资源的相对路径,它也可以通过执行一个表达式来获得。
使用<jsp:forward>标签跳转页面
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%--使用<jsp:forward>标签跳转到02.jsp--%>
<jsp:forward page="/02.jsp"/>
注:
从页面的显示效果来看,页面已经完成了跳转,但地址栏没有变化,地址栏中显示的地址仍是源网址 ,但页面显示的内容却是forward 以后的内容。
因为此跳转属于服务器端跳转。
只要是服务器端跳转,则地址栏永远没有变化。
<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>标签来传递多个参数。
使用<jsp:param>标签向被包含的页面传递参数
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<h1>参数传递</h1>
<hr/>
<jsp:include page="/jsp/Inc.jsp">
<jsp:param name="parm1" value="value1" />
<jsp:param name="parm2" value="value2" />
</jsp:include>
Inc.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<h1>接收从03.jsp页面中传递过来的参数:</h1>
<h2><%=request.getParameter("parm1")%></h2>
<h2><%=request.getParameter("parm2")%></h2>
在03.jsp页面中使用<jsp:include>标签将Inc.jsp页面包含进来
使用<jsp:param/>标签向Inc.jsp页面传递了两个参数parm1和parm2
例:
使用<jsp:param>标签向要跳转的页面传递参数
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%--使用<jsp:forward>标签跳转到04.jsp--%>
<%--使用<jsp:param>标签向04.jsp传递参数--%>
<jsp:forward page="/04.jsp">
<jsp:param name="ref1" value="value1" />
<jsp:param name="ref2" value="value2" />
</jsp:forward>
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<h1>跳转之后的页面!!</h1>
<h1>接收从forwarddemo03.jsp传递过来的参数:</h1>
<h1>ref1:<%=request.getParameter("ref1")%></h1>
<h1>ref2:<%=request.getParameter("ref2")%></h1>

本文介绍了JSP中的常用标签,包括<jsp:include>、<jsp:forward>和<jsp:param>等,解释了它们的功能及使用方法,并对比了<jsp:include>与include指令的不同之处。
896

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



