J2EE的基礎學習_jsp_servlet_獲得連接池

之前一直在學J2EE框架今天想花點時間來總結一下。J2EE是一個技術框架,主要用於在web開發中很好的嵌入java的邏輯代碼。我大致總結了J2EE的三大技術核心。(主要從其的職責分的,按MVC劃分的)

一、Jsp(主要擔任的是V層 即是視圖層 )

1.jsp的意思即爲java  service  page。在jsp文本中可以嵌入java的邏輯代碼。使頁面具有交互性可以動態的改變頁面。jsp的代碼在執行時,先是將jsp代碼轉換成java代碼,再編譯成.class文件,最後以流的形式輸送給瀏覽器,讓瀏覽器進行解釋並且顯示。

2.jsp分爲兩部分:

       1).靜態部分,即就是我們的html代碼部分,這個主要是顯示我們的靜態頁面的

       2).動態部分,就是我們jsp的用武之地。jsp頁面中嵌入動態的java邏輯代碼的方式有五種:

          1.<%@ %>指令,通過指令我們可以進行導包,引入其他jsp代碼中聲明的方法。

          2.<% %>小腳本,小腳本是這五個中,用的最多的。在小腳本中可以寫入我們的邏輯處理代碼。注意的是小腳本實質上是一個已經聲明的方法,所以在其內部不能聲明方法。一般在小腳本中我們可以採用  / 註釋段/  和/* 註釋段 */對jsp邏輯代碼進行註釋。其最具有獨特的地方是,它由9個內置對象。分別爲request(HttpServletRequest)、response(HttpServletResponse)、out(PrintWriter)、session(HttpSession)、application(ServletContext)、page、pageContext、config、exception........本文中我就主要總結我最常用的五種內置對象。(見第3小點)

          3.<%=%>表達式,表達式主要是用於返回小腳本中內置對象或者是在小腳本中聲明的的數據。例如:<%=request.getAttribute("key")%>

          4.<%! %>聲明,聲明是自定義方法,可以把自定義的方法,通過指令引入到其他jsp的文件中(通過指令<%@ include file="方法聲明的資源地址"%>)

          5.<%-- --%>註釋,註釋主要用於在jsp文件中做註釋的,這個用的很少。例如:<%-- 註釋的 --%>和html中<!-- 註釋 -->效果一樣。當然jsp文本中也可以中<!--  -->註釋。

3.jsp中<%%>小腳本中常用的5個內置對象

       1).request(HttpServletRequest)對象,字面意思就知道這是請求處理對象,是客戶端到服務器所攜帶的參數和一些客戶端信息都存儲在這個對象裏面。request的重要方法有getParamter("參數的key")方法,用來獲取客戶端攜帶給服務器的請求參數的。還有一點重要的是,request對象的方法getRequestDispatcher("地址資源")是用來轉發的,所以請求參數是可以共享的。

       2).response(HttpServletResponse)對象,這個是響應處理對象,是用來設置服務器響應給瀏覽器的數據的屬性或者設置在此請求的地址,最終要的方法有sendRedirect("請求地址資源"),此操作還是在服務器端,但是相當於是瀏覽器再次發送了一次地址請求,叫做重定向,但是通過這種方式,頁面之間的請求參數則是不共享的。      

      3).out(PrintWrite) 輸出對象,其一個主要的作用是向瀏覽器中輸出html腳本,給瀏覽器解釋執行。另外一個作用就是在異步請求中,用來給請求的資源返回響應數據。(異步請求在接下來會總結)

      4).session(HttpSession)這是會話對象,當每一個客戶端請求服務器是都擁有自己的session對象,用來存儲一次會話的的參數數據的或者記錄一下重要信息。session的生命週期是,一次瀏覽器的打開到瀏覽器的關閉。服務器會給每一個客戶端都創建一個session對象。

      5).application(ServletContext)服務器上下文對象,他的生命週期是和服務器一樣的。application內置對象主要是用來共享服務器中共享的資源的和數據的,如果是每個客戶端都需要的資源或數據則可以存放到application中,所以application對象是對所有客戶端可見的,而session對象是隻對當前客戶端是可見的。

      6).第六點說一個並非是小腳本的內置對象,它是存在與客戶端的,與服務器端的session對象相同之處,那就是我們的Cookie對象,它是客戶端存儲數據的一個重要的對象,向我們平常瀏覽器中記住密碼的功能就是通過此對象來完成的。

二、Servlet(主要擔任的是C 即是控制層)

1.servlet主要是用來處理客戶端請求的。配置servlet的方式有兩種

      1).通過配置文件web.xml來配置servlet

<servlet>  //這是配置一個servlet
    <servlet-name>response</servlet-name>   //servlet的名字
    <servlet-class>com.yc.servlet.TestServlet</servlet-class>  //servlet的處理類
    <init-param> 
      <param-name>unicode</param-name>   //servlet的初始化參數名
      <param-value>utf-8</param-value>  //與servlet初始化參數名對應的參數值
    </init-param>
  </servlet>
  <servlet-mapping>   //配置servlet的映射關係的
    <servlet-name>response</servlet-name>  //上面配置的servlet名字
    <url-pattern>/yd</url-pattern>   //請求地址
  </servlet-mapping>

上面的配置文件的意義:當請求地址爲   項目名稱/yd時,服務器就找到配置的servlet-mapping中的url-pattern中與之對應的地址,然後根據servlet-name找到servlet-class中的處理類來處理客戶端的請求。

      2).第二種配置servlet的方法很簡單就是我們的註解方式配置servlet。語法爲:@WebServlet("請求地址"),意思同上當客戶端地址欄的地址爲請求地址時,則服務器就會把該請求交給對應的servlet處理類來處理。

2.servlet的生命週期和三大重要方法

      1).servlet對象的三大方法:1.init(ServletConfig config)這是方法是初始化servlet對象的,當第一次有對應請求地址發送到服務器端時,servlet容器就會實例化該servlet對象,並且初始化,config參數就是獲得servlet的初始化參數並且對自身做初始化的。2.就是service(HttpServletRequest request,HttpServletResponse)方法,是用來做客戶端請求處理的。關於的request和response對象之前就已經說過,request對象是用來獲取客戶端請求是攜帶到服務器的參數的,response對象是用來給客戶端做響應的。

      2).servlet的生命週期:當第一次客戶端有對應的servlet映射地址請求時,servlet容器就會創建對應的servlet對象,並且初始化該servlet對象,然後調用處理方法service。當第二次客戶端再有對應的請求地址請求時,servlet容器則直接找到之前創建的servlet對象並且直接調用其處理方法service(也就是說servlet對象只有第一次請求時會被實例化和初始化),當服務器關閉後,servlet對象也隨之銷燬。

三、JDBC(主要擔任的是M層是 即是模型層也成爲了業務邏輯處理層)

JDBC是java database connection也就是數據庫連接。在這裏就不總結普通的數據庫連接方式了.主要是總結一下在j2ee框架下通過jndi技術獲得連接池。

1.什麼是jndi,jndi 就是java naming document interface即java命名目錄接口,個人理解就是通過給要獲取的資源命名,這樣要用它的時候直接通過資源名字來獲得來取得的資源即可。

2.所有j2ee服務器都要求實現jndi的實現接口,Web服務器的是如何實現jndi的我個人總結了一下(主要說一下Tomcat服務器)。jndi首先是要給資源命名,web服務器是在我們的的context.xml中給資源命名並且給資源配置相關的屬性的,獲得連接的主要參數有

<Resource
        name="jndi/jsp"   //資源名字
        type="javax.sql.DataSource"   //資源的類型
        auth="Container"   //資源的管理者
        driverClassName="oracle.jdbc.driver.OracleDriver"   //數據庫的連接驅動
        url="jdbc:oracle:thin:@localhost:1521:zydb"    //數據庫的地址
        username="scott"   //數據庫的用戶名
        password="a"   // 數據庫的密碼     以上都是獲得連接池必須配置的參數
        initialSize="10"     //初始化大小
        minIdle="10"   //最小的空閒的連接數
        maxActive="100"   //最多同時獲得的連接個數
        maxWait="10000"  //最大等待的連接時間
     />

3.在服務器中通過實例化Context context=new Context();//獲得服務器的上下文對象

DataSource datasource=context.lookup("java:comp/env/資源名") 即可獲得連接池,從而很簡單的就能過的我們的數據源了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章