1. 程式人生 > >JSP入門及JSP三種指令碼

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真身存放目錄

  1. JSP生成的Servlet存放在${CATALANA}/work目錄下,我經常開玩笑的說,它是JSP的“真身”。我們開啟看看其中的內容,瞭解一下JSP的“真身”。
  2. 你會發現,在JSP中的靜態資訊(例如<html>等)在“真身”中都是使用out.write()完成列印!這些靜態資訊都是作為字串輸出給了客戶端。
  3. 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的註釋,所以瀏覽器是不會顯示它的。