《TomCat与Java Web开发技术详解》(第二版) 第六章节的学习总结 ---- JSP技术
第六章主要介绍了JSP的相关知识。
1.JSP:是通过在HTML文件中加入java程序片段(Java Scriptlet)和JSP标记,就构成了JSP文件。JSP实质上是Servlet。JSP的API主要位于javax.servlet.jsp包及子包中。
2.当Servlet容器接收到客户端的要求访问特定JSP文件的请求时,容器按照如下流程来处理客户端的请求:
(1).查找与JSP文件对应的Servlet。如果已经存在,就直接调用该Servlet的服务方法;
(2).如果不存在与JSP文件对应的Servlet,则容器会解析文件系统中的JSP文件,并将其翻译成Servlet源文件,接着把Servlet源文件编译成Servlet类,然后再初始化并运行Servlet。将JSP翻译成Servlet源文件并进行翻译成Servlet类的活动,只在客户端首次访问此JSP文件时进行。
3.JSP常用语法总结
(1).JSP指令:位于"<%@" 和 "%>"内,常用指令有page(由属性和值组成,包括:method,import,content_type等常用属性),include(静态包含其他文件的内容),taglib。比如:<%@ page import="java.io.*,java.util.Hashtable" %>,<%@ include file="common.jsp" %>
(2).JSP声明:位于"<%!"和"%>"内,声明的变量为对应Servlet类的成员变量(位于Service(),doGet(),doPost()之外),声明的方法为对应Servlet类的成员方法(位于Service(),doGet(),doPost()之外)。比如:<%! int v1=0; %>
(3).Java程序片段:位于“<%>”和"%>"内。默认这些代码片段位于对应Servlet类的service()方法中。比如: <% String gender="femali"; if(gender.equals("female")) {>
(4).Java表达式:位于"<%="和"%>"内。用来输出值的。表达式中的int或者float类型的值都会被自动转换成字符串后,再进行输出。
(5).注释标记:位于"<%--"和"--%>"内
(6).隐含对象:JSP中默认提供一些保留字符串,代表了一些默认对象。如:request,response,pageContext,application,out,config,page,session,exception
4.JSP生命周期:开发人员可以编写jspInit()和jspDesctory()方法,对应Servlet接口的init()和destory()
5.JSP请求转发:采用<jsp:forward>标签来实现请求转发,转发对象可以是HTML文件,JSP文件或者Servlet。还可以嵌套<jsp:param>标签来传递参数
6.JSP包含:分为静态包含(采用include指令,目标组件可以是HTML文件或者JSP文件,不允许是Servlet)和动态包含(采用<jsp:include>标签,目标组件可以是HTML文件,JSP文件或者Servlet)。静态包含和动态包含的区别,在于Servlet容器对它们的翻译和编译的处理方式不同。
7.JSP异常处理:采用page指令中的 errorPage属性,指定一个处理异常的jsp文件;再采用page指令中的isErrorPage属性,表示某个jsp文件是用来处理异常的。通过调用隐含对象<% exception.printStackTrace(new PrintWriter(out));%>就可以输出异常到客户端了