JSP入門及JSP三種指令碼
目錄
0.碼仙勵志
沒人能讓我輸,除非我不想贏
1.JSP概述
1.什麼是JSP
JSP(Java Server Pages)是JavaWeb伺服器端的動態資源。它與html頁面的作用是相同的,顯示資料和獲取資料。
2.JSP的組成
JSP = html + Java指令碼(程式碼片段) + JSP動態標籤
2.JSP語法
1.JSP指令碼
JSP指令碼就是Java程式碼片段,它分為三種: <%...%>:Java語句; <%=…%>:Java表示式; <%!...%>:Java定義類成員;
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>JSP演示</title> </head> <body> <h1>JSP演示</h1> <% // Java語句 String s1 = "hello jsp"; // 不會輸出到客戶端,而是在伺服器端的控制檯列印 System.out.println(s1); %> <!-- 輸出到客戶端瀏覽器上 --> 輸出變數:<%=s1 %><br/> 輸出int型別常量:<%=100 %><br/> 輸出String型別常量:<%="你好" %><br/> <br/> 使用表示式輸出常量是很傻的一件事,因為可以直接使用html即可,下面是輸出上面的常量:<br/> 100<br/> 你好 </body> </html>
2.內建物件out
out物件在JSP頁面中無需建立就可以使用,它的作用是用來向客戶端輸出。
<body>
<h1>out.jsp</h1>
<%
//向客戶端輸出
out.print("你好!");
%>
</body>
其中<%=…%>與out.print()功能是相同的!它們都是向客戶端輸出,例如: <%=s1%>等同於<% out.print(s1); %> <%=”hello”%>等同於<% out.print(“hello”); %>,也等同於直接在頁面中寫hello一樣。
3.多個<%...%>可以通用
在一個JSP中多個<%...%>是相通的。例如:
<body>
<h1>out.jsp</h1>
<%
String s = "hello";
%>
<%
out.print(s);
%>
</body>
迴圈打印表格:
<body>
<h1>表格</h1>
<table border="1" width="50%">
<tr>
<th>序號</th>
<th>使用者名稱</th>
<th>密碼</th>
</tr>
<%
for(int i = 0; i < 10; i++) {
%>
<tr>
<td><%=i+1 %></td>
<td>user<%=i %></td>
<td><%=100 + 1 %></td>
</tr>
<%
}
%>
</table>
</body>
3.JSP的原理
1.JSP是特殊的Servlet
JSP是一種特殊的Servlet,當JSP頁面首次被訪問時,容器(Tomcat)會先把JSP編譯成Servlet,然後再去執行Servlet。所以JSP其實就是一個Servlet!
2.JSP真身存放目錄
- JSP生成的Servlet存放在${CATALANA}/work目錄下,我經常開玩笑的說,它是JSP的“真身”。我們開啟看看其中的內容,瞭解一下JSP的“真身”。
- 你會發現,在JSP中的靜態資訊(例如<html>等)在“真身”中都是使用out.write()完成列印!這些靜態資訊都是作為字串輸出給了客戶端。
- JSP的整篇內容都會放到名為_jspService的方法中!
4.再論JSP指令碼
JSP指令碼一共三種形式: <%...%>:內容會直接放到“真身”中; <%=…%>:內容會放到out.print()中,作為out.print()的引數; <%!…%>:內容會放到_jspService()方法之外,被類直接包含;
前面已經講解了<%...%>和<%=…%>,但還沒有講解<%!...%>的作用! 現在我們已經知道了,JSP其實就是一個類,一個Servlet類。<%!...%>的作用是在類中新增方法或成員的,所以<%!...%>中的內容不會出現在_jspService()中。
<%!
private String name;
public String hello() {
return "hello JSP!";
}
%>
5.JSP註釋
我們現在已經知道JSP是需要先編譯成.java,再編譯成.class的。其中<%-- ... --%>中的內容在JSP編譯成.java時會被忽略的,即JSP註釋。
也可以在JSP頁面中使用html註釋:<!-- … -->,但這個註釋在JSP編譯成的.java中是存在的,它不會被忽略,而且會被髮送到客戶端瀏覽器。但是在瀏覽器顯示伺服器傳送過來的html時,因為<!-- … -->是html的註釋,所以瀏覽器是不會顯示它的。