Servlet_note

2015/8/24

  1. Web項目目錄結構:總目錄my,中有WEB-INF目錄,中有classes、lib兩目錄和web.xml文件。classes保存編譯好的java文件,lib保存庫文件,web.xml爲此web app的配置文件。
  2. 爲與tomcat鏈接,classes中的java文件須要引入tomcat/lib中的servlet-api.jar。
  3. 用戶訪問時,輸入網址後,web.xml中相關語句將網址與相關java文件鏈接;

    <!--相同name的servlet標籤與servlet-mapping標籤對應,用戶訪問url-pattern中的網址,servlet-class中的java文件起做用。name隨便起,url-pattern起始爲斜槓/,sevlet-class爲classes目錄中class文件的名字。一個servlet可對應多個servlet-mapping-->javascript

<servlet>html

      <servlet-name>myfirstservlet</servlet-name>java

      <servlet-class>HelloWorldServlet</servlet-class>web

    </servlet>數據庫

    <servlet-mapping>api

        <servlet-name>myfirstservlet</servlet-name>瀏覽器

        <url-pattern>/HelloWorldServlet</url-pattern>tomcat

</servlet-mapping>服務器

java文件中爲一個extends HttpServlet的類,含有doGet或doPost等方法(用於處理用戶請求)方法有用戶請求與服務器應答兩個參數,接受請求,作出應答。cookie

2015/8/25

  1. WEB_INF中的classes至關於java的classpath,裏面的java的class文件要有與之所在包對應的目錄結構。
  2. 爲使頁面支持中文,須要在傳輸數據以前resp.setContentType("text/html;charset=gbk");
  3. servlet的生命週期:classLoader:加載class;

                  new:實例化servlet,在第一次用戶請求此servlet時;

                  init(ServletConfig):實例化後,執行它,僅在實例化時執行一次,爲servlet中的方法;

                  service doGet…:處理請求,每個用戶的請求,在多線程中執行,各線程均調取上面已在第一次時實例化出的對象,不新實例化;

                  destroy():最後會退出。

整個過程當中只有一個實例化出的對象,init()只執行一次。

因此不要在servlet中設計成員變量,不然不一樣用戶只能有同一個成員變量。

2015/8/26

  1. 地址欄中輸入htm文件地址(/ThreeParams.htm),則瀏覽器顯示htm展現的頁面。htm文件中可設置跳轉,以下。按「提交「按鈕,參數被提交到req對象中,頁面跳轉至(/ThreeParams),接下來執行xml,class文件。

 

<form id="form1" name="form1" method="post" action="ThreeParams">

  <table width="343" border="1">

<tr>

      <td width="92">param1</td>

      <td width="94"><input name="param1" type="text" id="param1" />      </td>

</tr>

<tr>

   <td>&nbsp;</td>

   <td><label>

      <input type="submit" value="提交" />

   </label></td>

</tr>

</table>

</form>

 

  1. 也能夠地址欄中輸入/ThreeParams,則直接-xml-class,此時req的參數爲空。

 

2015/8/27

  1. Cookie分兩種,沒生命週期的,有生命週期的;沒生命週期的僅在此窗口和子窗口有效,有生命週期的在生命週期內一直存在。
  2. 父路徑設置的Cookie子路徑能夠讀取,子路徑的父路徑不能讀取,同目錄下能夠;/servlet/SetCoolies中設置的,/ShowCookies中不能讀取,反之能夠。(路徑只是URL,寫在web.xml中的servlet-map,和class所在的包無關)
  3. form

form提交中action的路徑能夠爲虛擬路徑,

也能夠爲絕對路徑,/表明http://127.0.0.1/

web.xml

web.xml中url-pattern爲webapplication根路徑,/表明http://127.0.0.1/Test/

  1. jsp中  <%!..%>中聲明的變量爲servlet的成員變量(可用於訪問次數計數器等做用),方法爲類的方法;

<%...%>(沒有歎號)中聲明的變量爲相似doGet()方法的_jspService()方法的局部變量,聲明方法將出錯,由於方法中不能再定義方法。

 

2015/8/28

  1. html的註釋<!-->裏含有的jsp代碼(<%>)會正常運行。<!-->的內容會傳到客戶端html頁面,爲正常的html註釋。全部的jsp代碼均不會在客戶端顯示,只在服務器端運行。
  2. jsp中的out.println()表示在html頁面中輸出,System.out.println()表示在服務器的標準輸出上輸出。
  3. jsp中的變量是存在於服務器中的,不能直接在javascript中使用,由於javascript是客戶端中的語句,這點要注意。因此jsp變量須要被html調用時,全是out.println(),而不是直接寫。
  4. jsp編譯指令<%@... > 在編譯時發生做用,包含三種,page、include、taglib。

page:<%@page 屬性=」值」%> 說明jsp程序的有關信息,如import、extends、是否可用session、頁面編碼、出錯後連接到哪一個頁面;

include(靜態包含):<%@include file=」fileURL」%> file爲jsp文件,此條命令至關於把指定jsp文件中的內容取代這條指令,兩個jsp文件將整合爲一個。此命令不能爲file傳參數,」fileURL?name=val」是錯的。

taglib:之後補充。

     5.   jsp動做指令<jsp:…>

include:<jsp:include page=」name.jsp」>

<jsp:param name=」name1」 value=」val1」>

<jsp:param name=」name2」 value=」val2」>

</jsp:include>

 

 

靜態包含

動態包含

編譯時間

與父文件一塊兒編譯

運行到它時再編譯

是否生成獨立class

與父文件結合生成一個父文件名稱的java及class

獨立java及class

能否傳參數

不能單獨傳參數

可傳參數,其request含有父文件request的參數及單獨傳的參數。

調用方式

直接在父文件java中的_jspService方法中加入相關語句

父文件java調用一個方法,指定動態包含的jsp文件名,並傳入父文件的req等參數

 

forward:<jsp:forward page=」name.jsp」>用於轉到某個頁面,與動態包含同樣可傳參數且包含父文件的參數,有獨立的java及class,但forward後的語句不會繼續執行。另它與response.sendRedirect(「name.jsp」);須要區分,sendRedirect是由response傳給客戶端,客戶端再連到新地址,而forward是服務器內部轉到;且sendRedirect後的語句還能執行,而forward是阻斷式的:

 

 

 

 

 

Sendredirect

Forward

是不一樣的request

雖然是不一樣的對象,可是,能夠取到上一個頁面的內容

send後的語句會繼續執行,除非return

forward後的語句不會繼續發送給客戶端

速度慢

速度快

須要到客戶端的往返,能夠轉到任何頁面,

服務器內部轉換,

地址欄有變化

地址欄沒有變化

能夠傳參數,直接寫在url後面

能夠傳參數

/表明的是http://127.0.0.1/

<%response.sendRedirect("/test/ServletToJSP");%>

<form action="/test/ServletToJSP">

<a href="/test/ServletToJSP">test</a>

/表明的是http://127.0.0.1/test webapp地址

this.getServletContext().getRequestDispatcher ("/servlet_jsp/ServletUseJsp.jsp")
.forward(req, resp);

而且只能以/開頭

 

useBean: <jsp:useBean id=」實例名」 class=」類名」>。useBean的scope,page只在當前此html頁面有效;request至關於new出的是request的attribute,request不變則均有效,包含及forward均不變;session至關於new出session的attribute,session同理於cookie;application至關於new出application的attribute。

2015/8/30

  1. eclipse鏈接數據庫步驟(鏈接oracle爲例):

1)         將JDBC的jar包引入;

2)         Class.forName(「oracle.jdbc.driver.OracleDriver」);或new oracle.driver.OracleDriver();

3)         Connection conn =

DriverManager.getConnection

(「jdbc:oracle:thin:@192.168.0.1:SXT:1521」, 「scott」, 「tiger」);

4)         Statement stmt = conn.createStatement(); 建立語句對象

5)         ResultSet rs = stmt.executeQuery(「select * from dept」); 經過具體語句得到結果集合,rs相似於iterate,rs.next()返回boolean值,rs.getString(String columnName)以String類型拿到元素

6)         rs.close(); stmt.close(); conn.close();

相關文章
相關標籤/搜索
本站公眾號
   歡迎關注本站公眾號,獲取更多信息