常用的有page、include、taglib指令这三种指令;
page:位于页面顶端,一个页面可以包含多个page指令
include:将一个外部文件嵌入jsp中,同时解析这个页面中的jsp语句。
taglib:使用标签库,自定义新的标签,在jsp中启动定制行为。
include指令与动作
include指令
语法 <% include file=“地址”%>。
案例:显示当前时间的页面。(1)写一个只输出时间的方法的date.jsp。(2)用于显示的页面,包含<% include file=“date.jsp”%>
注:使用include标签,要删掉jsp页面生成的html无用的代码,否则会报错
include动作
语法 <jsp:include page=“url” flush=“true|false”>
page:要包含的页面;flush:要包含的页面是否从缓冲区中读取。
JSP:include的flush属性的作用JSP 中include 另一个文件时有个很偏的属性,叫flush,默认为 false。在同一个JSP 中,如果不断 include 自己(源文件),在逻辑上会形成死循环。而当把flush属性赋为真值时,在缓存累积了一定数据时,服务器会先提供一部分数据给浏览器,并等待后续内容。由此可以得出结论,在简单页面中,该属性不纳入考虑,而在页面包含大量数据时,为缩短客户端延迟,可将一部分内容先行输出。
区别
指令:在编译期间页面间被执行。 相当于是把 被包含的文件 的代码(文件的实际内容)原封不动的放进了 包含它的文件 ,编译的时候生成一个class文件(servlet)
动作: 在请求期间执行。用一个引用得到页面输出的结果,被包含的文件 和 包含的文件 在编译的时候生成的是两个class文件,即主页面和包含页面转换为两个独立的servlet。
include指令包含的是代码。include动作包含的是结果,相当于只是调用。
页面内容经常变化时更适合使用< jsp:include>动作;页面内容不经常变化时适合用include指令。
forward指令
1、语法:< jsp:forward page=“URL”/>
2、等同于服务器内部转发指令 request.getRequestDispacher(“URL”).forward(req,res);
四种跳转.
<% response.sendRedirect(“login_seccess.jsp”); %>//告诉浏览器此路不通,你再问问另一页面能解决你的问题不?
<jsp:forward page=“login_fail.jsp”/> //服务器将请求转发到另一页面,浏览器不知情.
<% pageContext.forward(“login_fail.jsp”);%> //服务器将请求转发到另一页面,浏览器不知情.
<% request.getRequestDispatcher(“login_fail.jsp”).forward(request,response);%> //服务器将请求转发到另一页面,浏览器不知情.