Jsp如何轉(zhuǎn)換為Servlet
jsp的底層技術(shù)是servlet,他們的生命周期是相同的。服務(wù)器負(fù)責(zé)實(shí)例化jsp/servlet,激活init()方法,準(zhǔn)備處理客戶端請(qǐng)求。可以通過(guò)編寫(xiě)service()方法處理自己的事物邏輯,或者自己編寫(xiě)doGet()、doPost()方法。服務(wù)器激活destroy()方法時(shí),jsp/servlet被銷(xiāo)毀,啟動(dòng)gc使用finalize()方法清理內(nèi)存。
jsp會(huì)被轉(zhuǎn)換到適當(dāng)?shù)膕ervlet代碼,即一個(gè).java文件。許多應(yīng)用服務(wù)器保存生成的.java文件,一旦他轉(zhuǎn)換到.java文件被編譯為字節(jié)碼.class。.class文件被支持輸出成html文檔返回給客戶端。
HttpServlet基本結(jié)構(gòu)
編寫(xiě)一個(gè)HttpServlet時(shí),通常需要許該的方法:
Void init(ServletConfig sc) throws ServletException;
Void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException;
Void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException;
Void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException;
html表單(form)擁有一種成為“method”屬性,用于定義如何想服務(wù)器發(fā)送數(shù)據(jù)。Get用于將數(shù)據(jù)追加入url的方式向服務(wù)器發(fā)送數(shù)據(jù)。Post用于將數(shù)據(jù)打包發(fā)送給服務(wù)器。
理解jsp應(yīng)用模型
什么是應(yīng)用模型:對(duì)jsp如何相互交互的一種描述。
1.簡(jiǎn)單模型:?jiǎn)我坏膉sp構(gòu)成。
2.N層模型:添加了類(lèi)似JavaBean的服務(wù)端資源。
3.松散耦合模型:允許位于遠(yuǎn)程系統(tǒng)的jsp做對(duì)等交互,或者擁有一種C/S關(guān)系。
通過(guò)html或者xml的http通訊,每個(gè)jsp應(yīng)用都與其他jsp應(yīng)用保存隔離。
4.包含請(qǐng)求模型:一個(gè)jsp可以負(fù)責(zé)請(qǐng)求和響應(yīng),但是包含其他jsp的輸出。通過(guò)include行為實(shí)現(xiàn)。
5.轉(zhuǎn)發(fā)請(qǐng)求模型:重定向,通過(guò)forward行為實(shí)現(xiàn)。
理解Jsp的布局
標(biāo)簽可以是html標(biāo)簽,也可以是jsp標(biāo)簽。
jsp標(biāo)簽可以有作用域 <jsp: useBean name="myClass" class="SimpleClass" scope="page" />
注釋?zhuān)?/div>
1.html:<!-- -->
2.jsp: <%-- --%>
3.java: // or /**/
jsp解剖:
html代碼----負(fù)責(zé)頁(yè)面整個(gè)布局和外觀
jsp標(biāo)簽----負(fù)責(zé)scriptlet、表達(dá)式、聲明、行為和指令
jsp隱式對(duì)象----例如:request對(duì)象、response對(duì)象、session對(duì)象、config對(duì)象
JavaBean----實(shí)現(xiàn)事物邏輯
理解jsp標(biāo)簽元素
jsp有兩種形式:<%%>、<jsp:tagid/>
1.jsp聲明標(biāo)簽用法:(定義變量)
<%!
declaration_statement(s)
%>
<jsp:declaration>
</jsp:declaration>
2.jsp表達(dá)式標(biāo)簽用法:(引用變量)
<%=expression%>
<jsp: expression> expression </jsp: expression>
3.jsp scriptlet標(biāo)簽用法:(編寫(xiě)java代碼,差不多就是用標(biāo)簽把java代碼包起來(lái),標(biāo)簽會(huì)截?cái)鄻?biāo)簽)
<%
boolean isPasswordAnyGood(String password)
{
return false;
}
%>
<%
if(isPasswordAnyGood("123"))
{
%>
<H1>Welcome<H1/>
<%
}
else
{
%>
<H1>Press Login</H1>
<%
}
%>
4.jsp指令標(biāo)簽:(預(yù)處理命令之類(lèi))
<%@ page import="com.macmilan.jspln24.*" %>
5.jsp行為標(biāo)簽(允許jsp使用java創(chuàng)建對(duì)象,包含jsp,轉(zhuǎn)發(fā)jsp,java交互)
六種:useBean setProperty getProperty include forward plugin
Jsp內(nèi)置對(duì)象用法:
內(nèi)置對(duì)象提供來(lái)自瀏覽器的請(qǐng)求并且動(dòng)態(tài)響應(yīng)的功能:
request out response pageContext session application config page
JavaBean規(guī)范(這是個(gè)大議題,據(jù)說(shuō)有兩種用法,一種可以直接無(wú)視,把javabean當(dāng)不同java類(lèi)在jsp中導(dǎo)入來(lái)用。一種是遵循javabean規(guī)范使用標(biāo)簽來(lái)訪問(wèn))
7