JSP页面主要由指令标签、HTML标记语言、注释、嵌入的JAVA代码、JSP动作标签等组成。所有的JSP页面在执行之前会被服务器解析成servlet。
1.JSP指令标签
指令标签不会产生任何的输出内容到页面中,主要用来定义整个页面的相关信息。语法格式如下:
<%@directive attribute="value"......>
其中:directive:指令的名称,可以为page、include和taglib其中的之一。
attribute:属性名称,不同的指令有不同的属性。
value:指定属性的属性值。
1.1 page指令
page指令用来定义整个页面的相关属性,语法为<%@page attribute1="value1" attribute2="value" .......%>
attribute1和attribute2的属性主要包含以下内容(具体有15个之多):
1)属性language,用来设置JSP页面的使用的语言。
例如:<%@page language="java"%>
2)import设置JSP导入的类包。
<%@page import="java.util.Date"%>
3)extends属性:设置JSP页面继承的Java类,该属性并不常用,有可能影响服务器的性能优化。
4)pageEncoding属性
该属性用来定义JSP页面的编码格式,指定文件的编码。JSP页面中的所有代码都使用该属性指定的字符集。例如:
<%@page pageEncoding="UTF-8" %>
5) contentType属性
该属性定义JSP页面的MIME(Multipurpose Internet Mail Extensions)类型和字符编码,浏览器会根据该属性显示网页内容。
<%@page contentTpye="text/html;charset=UTF-8" %>
6)session 属性
指定JSP页面是否使用http的session会话对象。属性值是boolean类型的。默认值是true。
<%@page session="false" %>该例子中不使用session对象,任何对session的引用都会发生错误。
7)buffer属性
该属性用来设置out对象的使用缓冲区的大小,默认大小为8kb,且单位只能使用KB.<%@page buffer="12kb" %>
8)autoFlush属性
用于设置JSP页面缓存满时,是否自动刷新缓存,默认值为true。
9)info属性
该属性用来设置jsp页面的相关信息,该信息可以在servlet接口的getServletInfo()方法中获取。
10)errorPage属性
该属性用来处理当前页面错误的指定页面,其属性值是一个url字符串,指定的错误处理页面的isErrorPage属性必须设置成true。
<%@page errorpage="xxxx/xxx.jsp" %>
如果使用该属性,在web.xml中定义的错误处理页面都将被忽略,优先使用该属性定义的错误处理页面。
11)isErrorPage属性
该属性将当前页面设置成处理另一个页面的错误。
<%@page isErrorPage="true" %>
12)IsELIgnored属性
该属性用于定义Jsp页面是否忽略EL表达式的使用。
1.2 include指令
该指令用于文件包含,它仅支持静态包含,在当前页面中更包含另一个文件的内容。如:
<%@ include file="XXX.jsp" %>
被包含的文件会直接使用包含文件的设置。源文件和被包含文件的变量和方法的名称不要冲突,因为会生成一个文件,重名会导致错误发生。
1.3 taglib指令
该指令用来加载用户自定义的标签,格式如下:
<%@taglib prefix="XXX" uri="taglibUriValue.tld" %>
prefix:设置自定义标签的前缀。
uri:用于自定义标签的描述文件位置。
2.注释
2.1 HTML注释
2.2 JSP注释
2.3 动态注释
3.嵌入的Java代码
3.1 嵌入java代码片段
格式:<% 编写的java code %>每行代码中使用分号,于编写Java类代码格式相同。
例如:<%
out.println("hello,world");
String str="hello";
out.println(str);
%>
3.2 JSP表达式
表达式可以直接把结果输出到页面中,表达式的最终运算结果都将被转换成字符串,因为在网页中显示的文字都是字符串。
例如:<%= express %>
3.3 jsp 声明
语法格式:<%! 声明的变量 %>
该变量是可以在整个jsp页面被访问的,具有全局性。
例如:
声明全局变量:<%! long couter=0; %>
声明全局方法:<%! int getConter(){
return counter;
}
%>