<%@ page language="java" contentType="text/html; charset=GBK"
pageEncoding="GBK"%>
<%@ page import="java.sql.*" %>
<html>
<head>
<title>JSP語法實例</title>
</head>
<!-- 下面是JSP聲明部分 -->
<%!
//聲明一個整形變量
public int count;
//聲明一個方法
public String info()
{
return "hello world!";
}
%>
<body>
<%--(1)JSP註釋實例,如本行文字外的註釋格式--%>
<!-- 對比HTML的註釋,如本行文字外的註釋格式-->
<!-- 兩種註釋方式的不同點是,HTML的註釋可以通過源代碼查看到
但是JSP的註釋無法通過源代碼查看到,這說明JSP註釋不會被髮送到客戶端-->
<%--(2)JSP聲明實例,見head和body標籤之間的部分--%>
<!-- JSP聲明用於聲明變量和方法。在JSP中聲明的方法看起來很特別,似乎不需要定義類型就可以
直接定義方法,方法似乎可以脫離類獨立存在。實際上,JSP聲明將會轉換成對應Servlet的
成員方法或成員變量,因此JSP聲明依然符合Java語法。-->
<%
//將count的值輸出後再加1
out.println(count++);
%>
<br/>
<%
//輸出info()方法的返回值
out.println(info());
%>
<%--(3)JSP輸出表達式實例,如下代碼所示--%>
<!--使用表達式輸出變量值-->
<%=count++%><br/>
<!--使用表達式輸出方法返回值-->
<%=info()%>
<!--需要注意的是輸出表達式語法後面不能有分號,從執行結果來看,輸出表達式被轉換成了Servlet裏的輸出語句-->
<%--(4)JSP腳本實例,我們在JSP腳本里寫一個利用JDBC查詢數據庫的例子,如下--%>
<%
// 註冊數據庫驅動
Class.forName("com.mysql.jdbc.Driver");
// 獲取數據庫連接
Connection conn = DriverManager.getConnection(
"jdbc:mysql://localhost:3306/shop","root","");
// 創建Statement
Statement stmt = conn.createStatement();
// 執行查詢
ResultSet rs = stmt.executeQuery("select * from category");
%>
<table bgcolor="#9999dd" border="1" width="300">
<%
// 遍歷結果集
while(rs.next())
{%>
<tr>
<!-- 輸出結果集 -->
<td><%=rs.getString(1)%></td>
<td><%=rs.getString(2)%></td>
</tr>
<%}%>
<table>
<!--小結一下-->
<!--以前JSP腳本應用非常廣泛,因此JSP腳本里面可以包含任何可執行的Java代碼。通常來說,所有可執行的Java代碼
都可以通過JSP腳本嵌入HTML頁面。
但是將過多的Java腳本放在頁面裏面,會造成產品的複雜性過高,程序代碼難以閱讀(比如我寫的這個JSP頁面,
融合了好幾個例子,將HTML代碼和過多的Java代碼混在一起,是不是看起來特別亂)和維護,雖然說JSP在很多情況
下速度還是很有優勢的,但是需要我們的硬盤空間來儲存一系列的.java文件和.class文件,以及對應的版本文件,這個
是一個比較麻煩的事情。
最後一點要說的是,完全用JSP技術寫成的Web應用程序,調試起來是特別麻煩的一件事,如果
程序出錯,JSP服務器會返回出錯信息,並在瀏覽器中顯示。這時,由於JSP是先被轉換成Servlet後再運行的,所以,
瀏覽器中所顯示的代碼出錯的行數並不是JSP源代碼的行數,而是指轉換後的Servlet程序代碼的行數。 -->
<!--本篇博文到此就結束了,主要介紹了JSP的4個基本語法,探討了一下JSP的不足之處。-->
</body>
</html>
給大家看一下上面的JSP頁面的運行結果: