<!--相同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
new:實例化servlet,在第一次用戶請求此servlet時;
init(ServletConfig):實例化後,執行它,僅在實例化時執行一次,爲servlet中的方法;
service doGet…:處理請求,每個用戶的請求,在多線程中執行,各線程均調取上面已在第一次時實例化出的對象,不新實例化;
destroy():最後會退出。
整個過程當中只有一個實例化出的對象,init()只執行一次。
因此不要在servlet中設計成員變量,不然不一樣用戶只能有同一個成員變量。
<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> </td>
<td><label>
<input type="submit" value="提交" />
</label></td>
</tr>
</table>
</form>
form提交中action的路徑能夠爲虛擬路徑,
也能夠爲絕對路徑,/表明http://127.0.0.1/
web.xml
web.xml中url-pattern爲webapplication根路徑,/表明http://127.0.0.1/Test/。
<%...%>(沒有歎號)中聲明的變量爲相似doGet()方法的_jspService()方法的局部變量,聲明方法將出錯,由於方法中不能再定義方法。
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") 而且只能以/開頭 |
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。
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();