JSP
JSP是Servlet的擴展,作用是簡(jiǎn)化網(wǎng)站創(chuàng )建過(guò)程和維護動(dòng)態(tài)網(wǎng)站。如果在使用Servlet生成html,則得通過(guò)PrintWriter,這樣編程就會(huì )很麻煩,
PrintWriter pr=response.getWriter();
Pt.println("'<html></html>");
Pt.close();
相比于靜態(tài)html文件和Servlet,JSP吸取了兩種優(yōu)點(diǎn),摒棄兩種缺點(diǎn),大大簡(jiǎn)化了動(dòng)態(tài)網(wǎng)頁(yè)生成的工作。當容器收到XXX.JSP的請求時(shí),Servlet容器按一下過(guò)程來(lái)處理:
1.查找HSP對應的Servlet,如果已經(jīng)存在,就調用它的服務(wù)方法
2.如果jsp文件對應的servlet不存在,則解析jsp文件,得到servlet資源文件,接著(zhù)編譯生成servlet類(lèi),然后再初始化并運行servlet
Tomcat將JSp的原文件和類(lèi)文件放于<CATALION-HOME>/home目錄下
JSP基礎語(yǔ)法
引用包:<%@page import="java.io.*">
隱含對象:Servlet可以訪(fǎng)問(wèn)Servlet容器提供的ServletContext、ServletRequest、ServletResponse對象、JSP中可以直接通過(guò)固定的引用變量來(lái)引用這些對象。
JSP生命周期
1.解析階段:Servlet容器解析JSP文件的代碼
2.翻譯階段,Servlet容器把jsp文件翻譯成servlet原文件
3.編譯階段:SERVLET容器編譯servlet源文件,生成SERVLET類(lèi)
4.初始化:加載servlet,創(chuàng )建實(shí)例,調用init方法
5.運行階段:調用與jsp對應的SERVLET實(shí)例的服務(wù)方法,service
6.銷(xiāo)毀
常見(jiàn)jsp技術(shù)
① 請求轉發(fā):<jsp:forward page=""url>
不同于RequestDispatcher.forward(req,res),不會(huì )執行后面的代碼
② 包含<%@ include page=""/>靜態(tài)文件
③ <jsp:include page="">用于動(dòng)態(tài)包含
靜態(tài)包含,會(huì )將包含的多個(gè)文件合并成一個(gè)jsp源碼,然后再對合并后的JSP文件,進(jìn)行翻譯和編譯,可以是html文件/jsp文件
動(dòng)態(tài)包含:分別編譯不同的servlet,html/JSP/SERVLT,有一個(gè)flush屬性,表示源組件在包含目標組件錢(qián),先把已經(jīng)生成的響應正文提交給客戶(hù)端,既如果該文件已經(jīng)生成servlet,先把那句源碼返回,再次訪(fǎng)問(wèn)時(shí)即正常
前者通常用來(lái)包含不會(huì )發(fā)生變化的內容,動(dòng)態(tài)通常包含會(huì )發(fā)生變化的內容
PageContext,繼承了JSPContext,用于:
1.向各種范圍內存取屬性
2.獲得由servlet容器提供的其他對象的引用方法,getPage、getRequest、getOut、、、
3.請求轉發(fā)和包含的方法,forward、include
聯(lián)系客服