JSP ---[注释,指令,静态包含,动态包含]
Posted 小智RE0
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JSP ---[注释,指令,静态包含,动态包含]相关的知识,希望对你有一定的参考价值。
JSP包括 jsp指令
, 网页内容
,java代码
编写java代码时的语法为
<% 中间写入代码 %>
注释
- 可以使用html中的注释(注释的内容在客户端浏览器中看不到,但是通过查看HTML源码可以看到这些内容).
<!--需要注释的内容-->
- 隐藏注释(这是jsp 自己的注释,一般建议使用这种,用隐藏注释标记的字符会在JSP编译时被忽略掉;即使查看HTML源码,也看不到)
语法 <%-- 需要注释的内容--%>
- 还可以使用单行注释
<%
//可使用单行注释;
%>
- 也可以使用多行注释
<%
/*
* 也可以使用多行注释;
* */
%>
- 文档注释
案例
<%!
int i=0;
/**
* 当然,也可以使用文档注释;
* @param a 参数a;
*/
public static void test(int a){
a++;
System.out.println("<h4>"+a+"</h4>");
}
%>
调用此方法时;
在一个jsp文件分别使用< ! - - - - >
和 <% - - - - %>
两种
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<h1>学习 JSP 显示</h1>
<!--可以使用HTML中的网页注释标签,但是不安全;注释的内容在客户端浏览器中看不到,但是通过查看HTML源码可以看到这些内容-->
<%--隐藏注释:这是jsp 自己的注释,一般建议使用这种,用隐藏注释标记的字符会在JSP编译时被忽略掉;即使查看HTML源码,也看不到--%>
</body>
</html>
启动Tomcat;
查看浏览器页面;
右键查看网页源代码
查看jsp编译后的Java文件;<% - - - - %>
在编译时就不存在,完全隐藏了.
指令元素
JSP指令用来设置整个JSP页面相关的属性,如网页的编码方式和脚本语言。
指令以<%@标记开始,以%>标记结束
<%@ 指令名 {属性名=" 值 "} %>
一个指令可能有多种属性
三种指令 | 注释 |
---|---|
<%@ page … %> | 定义网页依赖属性,比如脚本语言、error页面、缓存需求等等 |
<%@ include … %> | 包含其他文件 |
<%@ taglib … %> | 引入标签库的定义 |
Page指令
Page指令为容器提供当前页面的使用说明, page指令是最为复杂的一个指令,一个JSP页面可以包含多个page指令。
属性 | 注释 |
---|---|
page | 指令默认属性 |
Language | 定义语言类型,默认是Java |
contentType | 定义响应内容的编码格式, |
pageEncoding | 属性用来设置JSP文件的页面编码格式 |
import | 导入要使用的Java类(可以使用逗号同时引入多个包,也可以在一个JSP文件中多次使用import; import是page指令中唯一可以在一个JSP文件中多次出现的属性,其他属性在一个JSP文件中只能出现一次。 |
buffer | 指定out对象使用缓冲区的大小 |
autoFlush | 控制out对象的缓存区 |
errorPage | 指定当前的JSP页面在发生异常时需要转向的错误处理页面 |
isErrorPage | 指定当前页面是否可以作为另一个JSP页面的错误处理页面 |
extends | 指定servlet从哪一个类继承 |
info | 定义JSP页面的描述信息 |
isThreadSafe | 指定对JSP页面的访问是否为线程安全 |
session | 指定JSP页面是否使用session |
isELIgnored | 指定是否执行EL表达式 |
isScriptingEnabled | 确定脚本元素能否被使用 |
案例,使用几个page的属性;
<%-- import属性可以使用逗号同时引入多个包,也能在一个JSP文件中多次使用import;
import是page指令中唯一可以在一个JSP文件中多次出现的属性,其他属性在一个JSP文件中只能出现一次。 --%>
<%@ page import="java.util.ArrayList ,java.util.Date" %>
<%@ page import="java.util.Random" %>
<%--contentType:响应内容的格式 ; language:语言类型,默认是Java ; pageEncoding:设置JSP文件的页面编码格式 --%>
<%@ page contentType="text/html;charset=UTF-8" language="java" pageEncoding="UTF-8" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<%
Date date=new Date();
out.print("<h3>"+"时间为:"+date+"</h3>");
Random random=new Random();
out.print("<h3>"+"随机数为:"+random.nextInt(10)+"</h3>");
ArrayList<String> arrayList=new ArrayList<>();
arrayList.add("qqq");
arrayList.add("www");
arrayList.add("eee");
arrayList.add("rrr");
out.print("集合为:"+arrayList);
%>
</body>
</html>
Include指令
JSP可以通过include指令来包含其他文件。被包含的文件可以是JSP文件、HTML文件或文本文件。包含的文件就好像是该JSP文件的一部分,会被同时编译执行。
语法: <%@ include file=“文件的相对地址” %>
静态包含 ; 动态包含
静态包含指的是在编译期间
,把包含的页面也编译到当前页面的Java文件中,也就是编译时就将2个jsp文件合2为1;
例如: <%@include file=“copyright.jsp”%>
动态包含:在jsp页面中动态包含另一个资源;在运行期间
;访问被包含的页面,并将响应结果同包含页面的响应结果合并,生成最终响应。
<jsp:include page=“被包含页面()” flush=“true或者false”/>
这个被包含页面作为一个相对路径,或是代表相对路径的表达式
flush:默认为 false。在简单页面中,该属性不纳入考虑
分别查看静态包含和动态包含的情况;
(1)静态包含
- 在 staticjsp04.jsp 中静态包含 jsp04.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>静态包含</title>
</head>
<body>
<%--静态包含;在编译期间直接编译另一个页面--%>
<%@include file="jsp04.jsp" %>
<br/>
当前的页面:staticjsp04.jsp
</body>
</html>
- 另一个jsp文件
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>另一个页面</title>
</head>
<body>
另一个页面:jsp04.jsp
</body>
</html>
启动服务器;
- 查看 staticjsp04.jsp 编译后的 Java文件
- (注意到其中对于jsp04.jsp也进行了编译)
- 而且此时jsp04.jsp自身没有独立编译
(2)动态包含
- 在dynamicjsp04.jsp 中动态包含jsp04.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>动态包含</title>
</head>
<body>
<%--动态包含 : 两个页面独立编译;在运行时,将响应结果合并--%>
<jsp:include page="jsp04.jsp" />
当前的页面: dynamicjsp04.jsp
</body>
</html>
- jsp04.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>另一个页面</title>
</head>
<body>
另一个页面:jsp04.jsp
</body>
</html>
- 启动服务器,
- 查看dynamicjsp04.jsp 编译后的 Java文件
- (注意到它仅编译了自己的内容,对于jsp04.jsp,调用了指令)
- 此时jsp04.jsp自身已经独立编译.’
以上是关于JSP ---[注释,指令,静态包含,动态包含]的主要内容,如果未能解决你的问题,请参考以下文章