JSP 快速展示資料

來源:互聯網
上載者:User

小弟 2004 年學 MS Classic ASP 最老的那種 ASP,非 Net。到現在開始,正式使用 JSP。雖然小弟之前很早就接觸 Java 了,大概知道一點點,卻又不盡然。因此,JSP,還是要邊學邊用。是以為筆記吧。
瞭解 Tomcat

Tomcat 是 HTTP Server,也是 Web 容器。Tomcat 由以下的組件所構成:

  • Catalina (servlet container,所謂 Servlet,應該就是今天Web 架構裡面的 Route、分發之類的問題),
  • Coyote (an HTTP connector 處理 HTTP 頭和回應標頭的底層包)
  • Jasper (a JSP engine,說穿了就是一個模版系統)
內建對象

JSP 頁面內建對象,這都是內建的、預設的,每張 JSP頁面都會提供的。和 ASP 類似,它們是:

  ASP JSP
返回服務端的一些資訊 Server

實際類型:

org.apache.catalina.core.StandardWrapperFacadeStandardWrapperFacade

實現介面javax.servlet.ServletConfig

page
實際類型:org.apache.jsp.index_jspindex_jsp
繼承類org.apache.jasper.runtime.HttpJspBaseHttpJspBase
繼承類javax.servlet.http.HttpServlet

程式範圍下的全域對象 Application

實際類型:
org.apache.catalina.core.ApplicationContextFacadeApplicationContextFacade

實現介面javax.servlet.ServletContext

用戶端的請求 Request 實際類型:

org.apache.catalina.connector.RequestFacadeRequestFacade

實現介面javax.servlet.http.HttpServletRequest

響應用戶端 Response 實際類型:
org.apache.catalina.connector.ResponseFacadeResponseFacade
實現介面javax.servlet.http.HttpServletRequest
會話 Seesion 實際類型:
org.apache.catalina.session.StandardSessionFacadeStandardSessionFacade
實現介面javax.servlet.http.HttpSession
頁面上下文 ObjectContext pageContext
實際類型:
org.apache.jasper.runtime.PageContextImplPageContextImpl
繼承類javax.servlet.jsp.PageContext
異常 exception

這方面應該多差文檔,例如官方的就不錯。待項目深入逐漸學習各個 API 之用法。

插入 HTML 片斷 / 標籤複用

最簡單的一種 <%@ include file="public/class.jsp" %>,ASP 和 JSP 寫法一樣。

不過和 ASP 不一樣,不能在方法中混搭 HTML,如下面的是不行的哦:

<% public static voidgetFooter(){%> <div>...</div><%}%>

於是,得使用 JSP 標籤。最妙的是可以使用 <%=var%> 讀取上下文變數。

<jsp:include page="bar.jsp" >    <jsp:param name="extraparam" value="TestTest" />    <jsp:param name="extraparam2" value="<%=a%>" /></jsp:include>

被 include 頁面,用 $ 讀取參數:

888-----------${param.extraparam}------${param.extraparam2}-------888

雖然 JSP 頁面不如 ASP 那般靈活,但好在每個 include 頁面都是獨立的上下文,此時可以通過 request、session、application 等範圍共用的對象作為中介媒體,傳遞對象。它們本質上 map,因此可以通過 setArrtibute() 方法設定任意類型的對象。如下所示:

<%   String name="zhouhaigang";  request.setAttribute("name", name);%>${ name }

更複雜一些資料類型……

// jsp頁面開頭要匯入你的User類。 List<User> userList = (List<User>)request.getAttribute("你傳來的List");int len = userList.size();for(...){  ...}

匯入 JAR / Classes
  • 使用已編譯的 Class:按照命名空間放置 *.class 檔案在 WEB-INF/Classes 目錄下。然後 JSP 中使用 import iori.db 調用
  • 使用 JAR 包(JAR包就是包含很多 Class 的集合):一般情況下,放到WEB-INF/lib下就可以了,這也是推薦的做法;實在不行就放到/Tomcat /common/lib下,不過會啟動伺服器就自動載入的,但是太多了影響啟動速度。最後就是在 JSP 中引入 <%@ page import="Com.bbpoint.Connect.*" %><jsp:useBean id="asd" scope="page" class="connect.Connect" />。這樣前提 JAR 包中有相對應的類。JAR 是 ZIP
    壓縮包,用 7zip 之類的工具可以瀏覽。未知  JAR 包,要瞭解其 API 的話,最好用 Eclipse 或者反編譯的手段。

下麵包為什麼不需要通過 Class/ JAR,引入就可以在 JSP 頁面中直接使用?

<%@page   import="java.sql.Connection"%><%@page   import="java.sql.DriverManager"%><%@page   import="java.sql.Statement"%><%@page   import="java.sql.ResultSet"%> 

答案:因為 tomcat 已經通過系統內容變數 Classpath 擷取到你的 JDK/JRE 的包,所以直接 import 就可以了。

如何編譯一個 Class 呢?好處是別人不會輕易地看到你的代碼!

詳見該文《Tomcat+JSP經典配置執行個體 》,寫得不錯哦。

JSP 中如何定義一個方法或類

要定義方法,必須在 <% 後加個驚嘆號 !

<%!   //此處有驚嘆號  private   void   aMethod(){ ...;   }  // 也可以是屬性private   String   aVariableOfClassScope; ……%>

這樣的做法相當於在 Servlet 中重新定義了一個方法;如果沒驚嘆號,就是普通的那種情況,那表示在 Servlet.doService() 方法寫邏輯,你在產生的 java 類中看到混搭 HTML / Java 的代碼。

<%      //此處無驚嘆號,代碼將會在 doService() 方法中   ...; %> 

奇怪的是類也可以寫在 doService() 方法中????

捕獲異常

設定可以捕獲代碼中顯式拋出的異常:

<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8" errorPage="error.jsp"%>

接收異常的頁面

<%@page isErrorPage="true"%><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>JSP Page</title></head><body>Error~!<%=exception.getMessage()%></body></html>

對於未知的、非捕獲的異常也就是 500 出錯,應該用 tomcat 的 500 err 代碼跳轉,但卻又不利於調試,怎麼兩者都兼顧呢?

調試手段:

System.out.println("676"+uid_Str);

mylist.getClass().getName();

out.write(str);

設定 Tomcat 相容中文 url:

在 Server.xml 中加入的 Connector 節點中加入  URIEncoding="UTF-8" 屬性:

<Connector port="8080" protocol="HTTP/1.1"                connectionTimeout="20000"                redirectPort="8443" URIEncoding="UTF-8" />

參閱

《為什麼JSP的內建對象不需要聲明》

《用TOMCAT作簡單的jsp web開發》

JSP 原理和 Tomcat 配置

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.