c标签判断true false jsp_北京尚学堂卓越班252天[第042天]——Jsp
1. JSP的核心運(yùn)行原理
1) 客戶端瀏覽器發(fā)送請求到服務(wù)器,訪問a.jsp文件。
http://localhost:8989/應(yīng)用名/a.jsp
2) 服務(wù)器端接收到請求后所做的處理
a) 創(chuàng)建request和response兩個對象
b) 根據(jù)請求中的應(yīng)用名找到該應(yīng)用下面的web.xml文件,發(fā)現(xiàn)該應(yīng)用的配置文件中沒有關(guān)于a.jsp路徑相關(guān)的<url-pattern>的配置,所以會去找tomcat服務(wù)器中的全局web.xml的配置。我們發(fā)現(xiàn)全局的web.xml配置文件中有關(guān)于a.jsp的<url-pattern>的配置內(nèi)容:
根據(jù)上面這段配置我們就找到了JspServlet,這個JspServlet就是jsp引擎。它會把jsp文件轉(zhuǎn)義成一個Java文件。我們可以查看tomcat安裝目錄下的路徑:
Tomcat安裝目錄/work/catalina/localhost/jsp/org/apache/jsp
這個目錄下有一個a_jsp.java和a_jsp.class兩個文件。這就是tomcat幫我們把jsp文件轉(zhuǎn)換成的Servlet類的源文件和.class文件。
我們平時在寫Servlet時,會繼承HttpServlet,然后覆蓋service方法,但是我們發(fā)現(xiàn)這個a_jsp.java文件中沒有service方法,但是有一個_jspService方法。其實,a_jsp類會繼承org.apache.jasper.runtime.HttpJspBase類,這個HttpJspBase類有繼承HttpServlet類,然后HttpJspBase類中的service方法,調(diào)用了_jspService(request, response)方法。到此,我們就知道了最后調(diào)用的還是a_jsp類中的_jspService方法。這也是整個a.jsp的核心執(zhí)行流程。
1. page命令(page指令的作用:設(shè)置jsp在轉(zhuǎn)譯時的一些配置信息)
A) Page命令中的屬性學(xué)習(xí)
1) <%@page language=”java”%>
聲明jsp文件轉(zhuǎn)譯的語言,language=”java”的意思是轉(zhuǎn)譯為.java文件。
2) <%@page import=”java.util.*,java.lang.*”%>
上面的import屬性還可以分開寫:
<%@page import=”java.util.*”%>
<%@page import=”java.lang.*”%>
聲明轉(zhuǎn)譯時導(dǎo)入的java包文件。
3) <%@page pageEncoding=”UTF-8”%>
設(shè)置Jsp的數(shù)據(jù)保存的編碼格式
4) <%@page contentType=”text/html;charset=UTF-8”%>
設(shè)置數(shù)據(jù)的響應(yīng)編碼格式
注意:tomca幫我們把jsp文件轉(zhuǎn)譯為.java文件,我們查看.java文件時,發(fā)現(xiàn)其中有這樣一行代碼:response.setContentType(“text/html”);
pageEncoding=”UTF-8”和contentType=”text/html;charset=UTF-8”中的任何一個都可以讓這行代碼變成這樣:
response.setContentType(“text/html;charset=UTF-8”);
5) <%@page session=”false”%>
設(shè)置session的狀態(tài),也就是轉(zhuǎn)譯成的.java文件中session是否開啟。默認(rèn)為true,是開啟的,設(shè)置為false,session就是關(guān)閉的。
默認(rèn)情況下是session=”true”,當(dāng)session屬性取默認(rèn)值的時候,jsp文件對應(yīng)的.java文件中會有這樣一行代碼:
javax.servlet.http.HttpSession session = null;
session = pageContext.getSession();
當(dāng)我們設(shè)置為session=”false”后,.java文件中就沒有了關(guān)于session的那兩行代碼。
6) <%@page isErrorPage=”true”%>
默認(rèn)為false,如果設(shè)置為true,就等于開啟異常對象的使用
7) <%@page errorPage=”error.jsp”%>
設(shè)置當(dāng)本jsp頁面出現(xiàn)異常或錯誤時,跳轉(zhuǎn)到的指定頁面。
B) 局部代碼塊、全局代碼塊、java腳本段(表達(dá)式)
1) 局部代碼塊<% Java代碼 %>
局部代碼塊的特點(diǎn):使用局部代碼塊聲明的java代碼會原樣轉(zhuǎn)譯到_jspService方法中,也就是局部代碼。
2) 全局代碼塊<%! java代碼 %>
注意:全局代碼塊中聲明的內(nèi)容,到了jsp文件轉(zhuǎn)譯為.java文件時,會放在.java文件中的成員變量的位置,如上圖中,我們就是聲明了一個成員變量和一個成員方法,如果我們想調(diào)用test方法,應(yīng)該在哪里調(diào)用呢?
我們應(yīng)該在局部代碼塊中對test方法進(jìn)行調(diào)用。<% test(); %>
1) Java腳本段(表達(dá)式)
聲明方式:<%= 變量或調(diào)用方法 %>
作用:將java代碼的運(yùn)算結(jié)果數(shù)據(jù)或者其他數(shù)據(jù)響應(yīng)給瀏覽器。一般是方法的調(diào)用或者變量。如果是調(diào)用方法,則把方法的返回值響應(yīng)給瀏覽器。
注意:java腳本段中不能加分號”;”。
A) Jsp的注釋
HTML注釋:<!-- -->會被轉(zhuǎn)譯也會被響應(yīng)給瀏覽器,但是瀏覽器不會執(zhí)行。
CSS注釋:/* */和HTML注釋一樣,會被轉(zhuǎn)譯也會被響應(yīng)給瀏覽器,但是瀏覽器不會執(zhí)行。
JavaScript注釋://和/* */,同HTMl注釋一樣,會被轉(zhuǎn)譯也會被響應(yīng)給瀏覽器,但是瀏覽器不會執(zhí)行。
Java注釋:會被轉(zhuǎn)譯,但是不會被執(zhí)行。
Jsp注釋:<%-- jsp注釋 --%> 注釋內(nèi)容不會被轉(zhuǎn)譯,jsp的注釋是最高級別的注釋。
總結(jié)
以上是生活随笔為你收集整理的c标签判断true false jsp_北京尚学堂卓越班252天[第042天]——Jsp的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java8新特性_Java8新特性_la
- 下一篇: php mysql删除失败_php my