JSP常用标签

什么是JSP标签

JSP标签,有的地方也叫做JSP动作,在JSP中编写大量的java代码会使JSP页面显得杂乱无章,看起来非常不舒服,因此JSP提供了一些类似html的标签,通过这些标签能够替代部分java代码实现功能。
语法格式如下:

<jsp:标签名称 属性名=属性值 ... ></jsp:标签名称>

<jsp:标签名称 属性名=属性值 ... />

常用JSP标签

在JSP中有很多JSP标签,但是常用的主要有下面两个:

< jsp:forward>
该标签的作用是把请求转发给另外一个资源,页面中使用该指令之后,当前页面中的所有要显示的内容都将无法显示,因为会直接转发到了另一个页面。
创建一个index.jsp文件

index.jsp页面,因为使用了forward标签,所以该页面中的内容不会显示

<%
    request.setAttribute("name", "monkey1024");
%>

<jsp:forward page="/next.jsp"></jsp:forward>

创建next.jsp文件

next.jsp页面
<br>
<%=request.getAttribute("name") %>

注意:在jsp标签中没有用于重定向的标签

< jsp:include>
该标签用于把另外一个文件引入到当前JSP里面,这种引入方式叫做动态引入。
创建一个left.jsp

<%
    int sum = 50
%>
<br>
left sum=<%= sum %>

创建一个index.jsp

<%
    int sum = 100
%>
<br>
<jsp:include page="/left.jsp"/>
<br>
index sum=<%= sum %>

打开生成java文件的目录可以看到,生成了两个jsp文件,分别是index_jsp.java和left_jsp.java
可以得出结论,该指令的引入是在运行期完成的,而非在编译期。这个引入指令,是在程序运行过程中,由 index_jsp 文件中的_jspService()方法通过 JspRuntimeLibrary 类的 include()方法调用了 left_jsp 文件中的_jspService()方法。在运行期所执行的这种引入,称为动态引入。

动态引入和静态引入的区别

静态引入:

<%@ include file="/xxx.jsp" %>

静态引入会生成一个java文件,两个jsp文件中可以共享同一个变量,但不能定义重名的变量。

动态引入:

<jsp:include page="/xxx.jsp"/>

动态引入会生成两个java文件,两个jsp文件中不可以共享同一个变量,可以定义重名的变量。

在静态引入与动态引入均可使用时,一般使用静态引入。因为在程序运行时只存在一个Servlet,对资源的消耗较少,且不存在调用问题,执行效率较高。