3.3、page指令
page指令主要的作用是用來設置一個JSP頁面的屬性。那麼主要的屬性包含以下幾個:
· contentType屬性
· import屬性
3.3.1、contentType屬性
設置MIME類型的屬性,例如,現在一個JSP頁面中包含了中文:
<h1>中國啊,奧運會!</h1> |
因爲在瀏覽器中默認的編碼是西歐風格的編碼,所以根本無法正確的顯示出中文,所以此頁面在運行的時候最好直接指定好其操作編碼。
·<%@page contentType="MIME類型"%>
<%@page contentType="text/html;charset=GBK"%>
<h1>中國啊,奧運會!</h1> |
注意:
如果此時MIME類型設置錯誤,則會出現下載框提示:
<%@page contentType="test/html;charset=GBK"%>
<h1>中國啊,奧運會!</h1> |
網頁製作的時候說過靜態頁面的後綴可以是*.htm、*.html,兩者可以通用就是因爲兩者的MIME類型的解析方式完全一樣。Tomcathome/conf/web.xml
<mime-mapping>
<extension>htm</extension>
<mime-type>text/html</mime-type>
</mime-mapping>
<mime-mapping>
<extension>html</extension>
<mime-type>text/html</mime-type>
</mime-mapping> |
那麼也就可以直接利用MIME類型將一個頁面轉成Word進行輸出,只需要設置好相應的MIME類型即可,WORD的MIME類型爲:
<mime-mapping>
<extension>doc</extension>
<mime-type>application/msword</mime-type>
</mime-mapping> |
例如:將一個頁面保存成word
<%@ page contentType="application/msword"%>
<table border="1">
<%
for(int i=0;i<10;i++){
%>
<tr>
<%
for(int j=0;j<10;j++){
%>
<td><%=i*j%></td>
<%
}
%>
</tr>
<%
}
%>
</table> |
頁面運行之後出現了以下的提示框:
3.3.3、import屬性
在整個page中有很多的屬性,但是所有的屬性只允許出現一次,惟獨只有import屬性可以重複出現多次。
例如:以下程序導入多個包
<%@ page contentType="text/html;charset=GBK"%>
<%@ page import="java.io.*"%>
<%@ page import="java.net.*"%>
<%@ page import="java.sql.*,java.util.*"%> |
既然,頁面已經可以導入所需要的包,那麼就一定可以使用JDBC進行數據庫操作,觀察下面的步驟,在JSP中直接連接Oracle。
在連接Oracle的時候需要把Oracle中的監聽和數據庫服務啓動,同時需要將驅動程序包拷貝到D:\Tomcat 5.5\common\lib目錄下。
PageDemo05.jsp:
<%@ page contentType="text/html;charset=GBK"%>
<%@ page import="java.sql.*"%>
<%--
查詢出EMP表中的全部數據
--%>
<%!
public static final String DBDRIVER = "oracle.jdbc.driver.OracleDriver" ;
public static final String DBURL = "jdbc:oracle:thin:@localhost:1521:MLDN" ;
public static final String DBUSER = "scott" ;
public static final String DBPASS = "tiger" ;
%>
<%
Connection conn = null ;
PreparedStatement pstmt = null ;
ResultSet rs = null ;
%>
<%
try{
%>
<%
Class.forName(DBDRIVER) ;
conn = DriverManager.getConnection(DBURL,DBUSER,DBPASS) ;
String sql = "SELECT empno,ename,job,sal,comm,hiredate FROM emp" ;
pstmt = conn.prepareStatement(sql) ;
rs = pstmt.executeQuery() ;
%>
<center>
<table border="1" width="80%">
<tr>
<td>僱員編號</td>
<td>僱員姓名</td>
<td>僱員工作</td>
<td>僱員工資</td>
<td>僱員佣金</td>
<td>僱傭日期</td>
</tr>
<%
while(rs.next()){
int empno = rs.getInt(1) ;
String ename = rs.getString(2) ;
String job = rs.getString(3) ;
float sal = rs.getFloat(4) ;
float comm = rs.getFloat(5) ;
java.util.Date date = rs.getDate(6) ;
%>
<tr>
<td><%=empno%></td>
<td><%=ename%></td>
<td><%=job%></td>
<td><%=sal%></td>
<td><%=comm%></td>
<td><%=date%></td>
</tr>
<%
}
%>
</table>
</center>
<%
}catch(Exception e){
// 向tomcat中進行打印
System.out.println(e) ;
}finally{
%>
<%
rs.close() ;
pstmt.close() ;
conn.close() ;
%>
<%
}
%> |
注意:
對於服務器而言,只要是放進了新的包,則服務器必須重新啓動,因爲重新啓動之後會自動把所有的包都加載進來。