?======= day01 ====================
课程总体介绍:
一, JSP 核心,包括JSP介绍,创建,部署,执行JSP文件
JSP代码片断,JSP指令,JSP动作,异常处理
二, 高级部份,包括自定义标签库,JSTL, EL表达式和 TAGFILES
一, JSP简介:
JSP:基于文本的可包含到浏览器端的静态和动态内容
可理解为包含了JAVA代码的HTML文件。
静态内容可以是:
HTML , XML, Text,
JavaScript, CSS.
动态内容可以是:JAVA代码, JAVABEAN属性, JSTL, 自定义标签库。
先来看一下一个简单的JSP文件:
Hello, This is my first JSP.
Current Date is: <%= new java.util.Date() %>
由上例子可以看出,静态内容由HTML组成,也叫做模板元素。
动态的叫做元数
JSP的好处: 实现了内容和显示的逻辑分离,支持组件复用,平台独立性,自动重编译JSP PAGE,
并且JSP已经整合到了J2EE规范,成了J2EE的一部份。
?如何来调用一个JSP文件:
HttpRequest (is JSP Complile and load?) YES
client ----------- -> WEB APP ( 服务器 ) -------> INVOKE ------> run servlet
|
|NO
| ----> complile ---> load ---> INVOKE ----> run servlet
记住:JSP和SERVLET 都是WEB组件, TOMCAT服务器既是SERVLET引擎, 也是JSP引擎。
有了上面的基本认识,我们再来
学习 JSP API , 这是手册。
接口: javax.servlet.jsp.JspPage extends javax.servlet.Servlet;
HttpJspPage extends JspPage;
javax.servlet.Servlet init(ServletConfig config), service(req,res),destroy(), getServletConfig(); getServletInfo()
|
|
javax.servlet.jsp.JspPage jspInit(); jspDestroy();
|
|
javax.servlet.jsp.HttpJspPage _jspService(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException ;
注:_jspService 这个方法由JSP 容器自动地定义,
JSP 作者从不应该定义此方法
对于JSP的这此方法,从来都不需要我们去调用,所有的这些都由JSP引擎来完成,
JSP 生命周期:阶段。
转换(Translate_ -----> 编译(Complie and Load) -----> 执行(Execute)[ jspInit() --> _jspService() ----> jspDestroy()]
说明:
JSP 文件首先转换成SERVLET源代码,然后再进行编译,[由容器自动完成],并且只编译一次;
但如果修改了JSP源文件,则下次再请求访问时,容器会自动检测到当前的JSP实例是否有改动过 (依时间来判断)
如有,则会自己重新编译并执行,否则,维持前一个状态!
对于TOMCAT 来说,JSP文件对应生成的SERVLET
源代码存
放在:
$CATALINA_HOME/work/catalina/localhost/${webapp}/org/apache/jsp 目录下
分析转换成的SERVLET源代码:
1。对于静态模板数据转换成代码放入到流中;
2。对于JSP标签:
A。指令用来控制 WEB 容器的转换和执行 JspPage
B。代码片断(scriplet)将被插入到JSP
C。
被转换成JAVABEAN组件的方法调用
JSP生命周期方法:
jspInit() --- Init event
|
_jspService(req,res) --- Request|Response
|
jspDestroy() --- Destroy event
注: 对于JSP ,一旦有了,就会自动创建 session ,可以获得它的ID,
所以,对于 Servlet 控制器,在过滤器中来判断 session 时,不能简单地使用:if(session != null) 来判断了,
而应该使用:
if(session.getAttribute(key) != null) 来判断
因为 jsp 强行使用SESSION
========= DAY02 ================================================================
JSP 标签,指令,动作
一。 标签
<% . . . %>申明局部变量(代码代断)
<%= . . .%> 表达式
<%! . . .%>申明实例变量和方法
二,指令 directive
<%@ . . . %>
a. <%@ page info="" contentType="" %> 页