JSP执行过程
- 客户端发出请求访问JSP文件
- JSP Container将要访问的JSP文件转译为Servlet的源代码(转译时期),并将其编译成.class文件(编译时期);
- 执行编译后的.class文件并将结果返回给客户端(请求时期)
在转译后的Servlet的源代码中(.java),存在_jspService的方法,该方法将JSP中的java代码原封不动地翻译出来,而其中的html则通过out.write("<html标签>\r\n")这样的方法翻译出来;
JSP声明<%! java代码%>;JSP注释<%--注释内容--%>;
JSP指令:
基本的语法格式<%@ 指令 属性名= ‘值’ %>
JSP有3大指令:
- Page指令:用于定义JSP页面的各种属性;
常用属性:
import属性,引入多个包和类,之间用逗号隔开;注:Jsp页面默认自动导入的包有java.lang.*,javax.servlet.*,javax.servlet.jsp.*,javax.servlet.http.*;
errorPage属性,指明当出错后所跳转的页面,其中“/”表示 WEB程序的根目录;也可以在web.xml中设置好其出错后的处理方式,不过其优先级低于errorPage指令;
如若使用web.xml设置出错处理方式,是通过<error-page>标签实现的,该标签有3个子元素:<error-code>:(指定错误状态码)、<exception-type>:(指定异常类的完全限定名)、<location>(指定处理的跳转页面);
isErrorPage属性,默认情况下的false状态,可以在错误页面中设置为true,其作用_jspService方法中会多提供声明一个exception对象,可通过该对象获取错误信息,如:
<body>
异常信息如下:<%=exception.getMessage()%>
</body>
- include指令:引入文件,会将两个jsp翻译成一个Servlet,为静态引入,被引入文件经常用.jspf加以区分,常用语法如下:
<%@include file="/xxx/xxx" %>
其中第一个“/”表示当前web应用;
与jsp:include指令加以区分,这个指令为动态指令,其运行流程是将所include的文件运行后将结果返回;
- taglib指令:声明用户使用自定义标签,将标签库描述符文件导入jsp页面中,语法如下:
<%@taglib uri="/xxx" prefix="xxx"%>
uri属性:定位标签库描述符的位置。唯一标识和前缀相关的标签库描述符,可以使用绝对或相对
prefix属性:标签的前缀,区分多个自定义标签。不可以使用保留前缀和空前缀,遵循XML命名空间的命名约定。