JSP基本語法--Page指令 <%@page 屬性=”內容“%>


page指令語法:<%@page 屬性=”內容“%>

常用:contentType,import,pageEncoding

 

例子,設置MIME屬性,如果使用一些高版本的tomcat,可能自動設置編碼,但是為了保證程序不出問題,一定要設置MIME類型:

<%@ page language="java" contentType="text/html;charset=GBK"%>
<html>
<head><title>www.mldnjava.cn,MLDN高端Java培訓</title></head>
<body>
<center>
<h2>歡迎大家光臨 MLDN !</h2>
<h3>網址:www.MLDNJAVA.cn</h3>
</center>
</body>
</html>

 

為什么htm和html都可以識別,是因為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>
  • 如果想讓jsp變種格式顯示, 就更改MIME就可以,比如word:

<%@ page language="java" contentType="application/msword;charset=GBK"%>

  • 如果想改名字的話,這樣的話,打開jsp文件就會顯示下載mldn.doc:

<%
response.setHeader("Content-Disposition","attachement;filename=mldn.doc") ;
%>

  • contentType主要功能就是設置MIME,之后的charset是指定編碼,也可以通過pageEncoding來指定編碼,比較常見:

<%@ page language="java" contentType="text/html" pageEncoding="GBK"%>

兩種方式的區別:如果pageEncoding存在的話,就以它為主,如果不存在,再找charset,如果都不存在,就默認ISO8859-1.

如果一個jsp文件只是需要按照text/html風格顯示的話,則只需要指定一個pageEncoding就可以了。

 

  • 錯誤頁的設置

一些網站,如果出現錯誤,會統一跳轉到一個頁面上顯示,而且會提示,對不起,請聯系管理員,這就是錯誤頁的功能。

完成錯誤頁的操作,需要滿足2個條件:

1. 指定錯誤出現的跳轉頁,通過errorPage屬性指定

2. 錯誤處理也必須有明確的標識,通過isErrorPage屬性指定

 

 

<%@ page language="java" contentType="text/html" pageEncoding="GBK"%> 
<%@ page errorPage="error.jsp"%>
<html>
<head><title>www.mldnjava.cn,MLDN高端Java培訓</title></head>
<body>
<%
int result = 10 / 0 ;
%>
</body>
</html>

 

error.jsp:

語句response.setStatus(200) ;是為了聲明此文件是正常的可以處理錯誤的頁面,避免有些時候無法跳轉的情況

<%@ page language="java" contentType="text/html" pageEncoding="GBK"%> 
<%@ page isErrorPage="true"%>
<html>
<head><title>www.mldnjava.cn,MLDN高端Java培訓</title></head>
<body>
<%
response.setStatus(200) ;
%>
<h1>程序出現了錯誤</h1>
</body>
</html>

以上發現,地址欄地址沒有發生改變,但是內容改變了,此種方式成為服務器端跳轉。

但是,這樣編寫太麻煩,最經常出現的問題:404,500,而且程序也可以出現異常,此時可以集中處理這些問題,這樣就需要修改web.xml文件了。D:\Workspace\WEB-INF\web.xml, 在 </web-app> 之前加入:

<error-page>
<error-code>500</error-code>
<location>/basic_page/error.jsp</location>
</error-page>
<error-page>
<error-code>404</error-code>
<location>/basic_page/error.jsp</location>
</error-page>
<error-page>
<exception-type>java.lang.NullPointerException</exception-type>
<location>/basic_page/error.jsp</location>
</error-page>

重啟服務器后,輸入http://localhost:8080/wly/basic_page/ss驗證,即可彈出error.jsp錯誤頁面

 

  • page指令存在import屬性,所以導包就可以正確使用,在整個page指令的屬性中,只有import可以多次使用,其他的屬性只能設置一次

 

數據庫的連接操作:

/*======================= 刪除數據庫 =======================*/
DROP DATABASE IF EXISTS mldn ;
/*======================= 創建數據庫 =======================*/
CREATE DATABASE mldn ;
/*======================= 使用數據庫 =======================*/
USE mldn ;
/*======================= 刪除數據表 =======================*/
DROP TABLE IF EXISTS emp ;
/*======================= 創建數據表 =======================*/
CREATE TABLE emp(
empno    INT(4)    PRIMARY KEY,
ename    VARCHAR(10),
job    VARCHAR(9),
hiredate    DATE,
sal    FLOAT(7,2)
) ;
/*======================= 插入測試數據 =======================*/
INSERT INTO emp (empno,ename,job,hiredate,sal) VALUES (6060,'李興華','經理','2001-09-16',2000.30) ;
INSERT INTO emp (empno,ename,job,hiredate,sal) VALUES (7369,'董鳴楠','銷售','2003-10-09',1500.90) ;
INSERT INTO emp (empno,ename,job,hiredate,sal) VALUES (8964,'李祺','分析員','2003-10-01',3000) ;
INSERT INTO emp (empno,ename,job,hiredate,sal) VALUES (7698,'張惠','銷售','2005-03-12',800) ;
INSERT INTO emp (empno,ename,job,hiredate,sal) VALUES (7782,'楊軍','分析員','2005-01-12',2500) ;
INSERT INTO emp (empno,ename,job,hiredate,sal) VALUES (7762,'劉明','銷售','2005-03-09',1000) ;
INSERT INTO emp (empno,ename,job,hiredate,sal) VALUES (7839,'王月','經理','2006-09-01',2500) ;

需要注意的是,mysql數據庫連接的時候需要額外的驅動程序mysql-connector-java-5.1.36-bin.jar  

放入:D:\apache-tomcat-7.0.57\lib ,然后重啟服務器

lit.jsp:

<%@ page contentType="text/html" pageEncoding="GBK"%>
<%@ page import="java.sql.*"%>
<html>
<head><title>www.mldnjava.cn,MLDN高端Java培訓</title></head>
<body>
<%!
  public static final String DBDRIVER = "org.gjt.mm.mysql.Driver" ;
  public static final String DBURL = "jdbc:mysql://localhost:3306/mldn" ;
  public static final String DBUSER = "root" ;
  public static final String DBPASS = "********" ;
%>
<%
  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,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>
  </tr>
<%
  while(rs.next()){
    int empno = rs.getInt(1) ;
    String ename = rs.getString(2) ;
    String job = rs.getString(3) ;
    float sal = rs.getFloat(4) ;
    java.util.Date date = rs.getDate(5) ;
%>
  <tr>
    <td><%=empno%></td>
    <td><%=ename%></td>
    <td><%=job%></td>
    <td><%=sal%></td>
    <td><%=date%></td>
  </tr>    
<%
  }
%>
</table>
</center>
<%
  }catch(Exception e)    {
    System.out.println(e) ;
  }finally{
    rs.close() ;
    pstmt.close() ;
    conn.close() ;    // 如果直接關閉連接也可以
  }
%>
</body>
</html>

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM