初識和利用Servlet,獲取和顯示頁面提交的資料以及對MySQL資料庫的簡單操作 7.04
阿新 • • 發佈:2019-01-03
Servlet:web伺服器端的程式設計技術。是繼承了javax.servlet.http.HttpServlet類的Java類。由支援servlet的web伺服器(tomcat)呼叫和啟動執行。一個servlet負責對應的一個或一組url的訪問請求,並返回相應的響應內容。
C/S:客戶機和伺服器架構,伺服器負荷輕,維護升級成本高。
B/S:瀏覽器和伺服器架構,伺服器負荷重,維護升級成本低。
B/S:工作原理:
瀏覽器--伺服器--資料庫
通過Url來訪問伺服器,在瀏覽器裡傳送請求(傳遞引數)給伺服器,伺服器呼叫dao類(有引數先接收引數)操作資料庫。
生命週期:訪問時開始:init()→service()→destroy()
1).public void init(){
super.init();
}
2).protected void service(HttpServletRequest req, HttpServletResponse resp)throws ServletException, IOException {
super.service(req, resp);
}
3)public void destroy() {
super.destroy();
}
3.給servlet配備一個URL地址,供瀏覽器訪問servlet用。
開啟WebRoot/WEB-INF/web.xml檔案,新增<servlet>和<servlet-mapping>兩個標籤
<servlet>
<servlet-name>FirstServlet<servlet-name>
<servlet-class>com.xxx.servlet.web.servlet.FirstServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>FirstServlet</servlet-name>
<url-pattern>/first</url-pattern><!-/first代表localhost:80/專案名稱/first>
404錯誤:找不到網頁,網頁地址錯誤。
一個類被修改後要重新啟動Tomcat釋出。
servlet的三個方法:
init()方法:
預設情況下:第一次訪問servlet時被呼叫(該servlet被初始化),且只能被呼叫一次。
service()方法:
servlet的主方法,每訪問一次就呼叫一次。
destroy()方法:
在伺服器關閉的時候,被呼叫(該servlet被銷燬)
網頁引數的接收與返回:(關鍵程式碼示例)
接收:HttpServletRequest request
String username = request.getParameter("name");
返回:HttpServletResponse response
PrintWriter out = response.getWriter();
out.print("接收到的名字:"+username+"<br>");
網頁的編碼集:
接收中文的處理:
req.setCharacterEncoding("UTF-8");(gb2312也可以)
username = new String(username.getBytes("ISO-8859-1"),"UTF-8");
表單資訊的提交與頁面對錶單資訊的獲取主要步驟:
1.新建一個jsp網頁,繪製一個簡單的使用者登入表單。
2.新建一個servlet類,在service()方法中進行引數的獲取(request)和返回顯示(response).(注意該servlet類url地址的註冊)
3.通過表單屬性actoin提交輸入資訊到伺服器,並轉到所建立的servlet類。
提交網頁資料,遍歷資料庫,返回顯示遍歷判斷結果:
1.新建jsp網頁,servlet類。(參考上一個例子)
2.建立操作資料庫的類(UserDao)(注意驅動,連線引數等的配置,詳情請參考7.03的那篇文章)
3.在UserDao中建立查詢的方法。(使用者名稱和密碼作為條件,同時滿足(and))
String sql = "select * from userInfor where userName = ? and userPassword = ? ";
4.在servlet類中的service方法中獲取網頁資料。(方法參考上一個例子)
5.通過UserDao user = UserDao.getInstance();
Map<String,String> map = new HashMap<String, String>();
map.put(key,value);分別鍵入鍵值對資料(userName和userPassword)啟用UserDao中的查詢方法遍歷資料庫。
C/S:客戶機和伺服器架構,伺服器負荷輕,維護升級成本高。
B/S:瀏覽器和伺服器架構,伺服器負荷重,維護升級成本低。
B/S:工作原理:
瀏覽器--伺服器--資料庫
通過Url來訪問伺服器,在瀏覽器裡傳送請求(傳遞引數)給伺服器,伺服器呼叫dao類(有引數先接收引數)操作資料庫。
servlet建立步驟:
專案結構圖:
1.建立一個繼承類(extends javax.servlet.http.HttpServlet):
生命週期:訪問時開始:init()→service()→destroy()
1).public void init(){
super.init();
}
2).protected void service(HttpServletRequest req, HttpServletResponse resp)throws ServletException, IOException {
super.service(req, resp);
}
3)public void destroy() {
super.destroy();
}
3.給servlet配備一個URL地址,供瀏覽器訪問servlet用。
開啟WebRoot/WEB-INF/web.xml檔案,新增<servlet>和<servlet-mapping>兩個標籤
<servlet>
<servlet-name>FirstServlet<servlet-name>
<servlet-class>com.xxx.servlet.web.servlet.FirstServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>FirstServlet</servlet-name>
<url-pattern>/first</url-pattern><!-/first代表localhost:80/專案名稱/first>
</servlet-mapping>
實際例子:
eg.
500錯誤:伺服器內部錯誤。
404錯誤:找不到網頁,網頁地址錯誤。
一個類被修改後要重新啟動Tomcat釋出。
servlet的三個方法:
init()方法:
預設情況下:第一次訪問servlet時被呼叫(該servlet被初始化),且只能被呼叫一次。
service()方法:
servlet的主方法,每訪問一次就呼叫一次。
destroy()方法:
在伺服器關閉的時候,被呼叫(該servlet被銷燬)
網頁引數的接收與返回:(關鍵程式碼示例)
接收:HttpServletRequest request
String username = request.getParameter("name");
返回:HttpServletResponse response
PrintWriter out = response.getWriter();
out.print("接收到的名字:"+username+"<br>");
網頁的編碼集:
接收中文的處理:
req.setCharacterEncoding("UTF-8");(gb2312也可以)
username = new String(username.getBytes("ISO-8859-1"),"UTF-8");
表單資訊的提交與頁面對錶單資訊的獲取主要步驟:
1.新建一個jsp網頁,繪製一個簡單的使用者登入表單。
2.新建一個servlet類,在service()方法中進行引數的獲取(request)和返回顯示(response).(注意該servlet類url地址的註冊)
3.通過表單屬性actoin提交輸入資訊到伺服器,並轉到所建立的servlet類。
4.servlet獲取引數,並在網頁中顯示。
網頁例項:
提交網頁資料,遍歷資料庫,返回顯示遍歷判斷結果:
1.新建jsp網頁,servlet類。(參考上一個例子)
2.建立操作資料庫的類(UserDao)(注意驅動,連線引數等的配置,詳情請參考7.03的那篇文章)
3.在UserDao中建立查詢的方法。(使用者名稱和密碼作為條件,同時滿足(and))
String sql = "select * from userInfor where userName = ? and userPassword = ? ";
4.在servlet類中的service方法中獲取網頁資料。(方法參考上一個例子)
5.通過UserDao user = UserDao.getInstance();
Map<String,String> map = new HashMap<String, String>();
map.put(key,value);分別鍵入鍵值對資料(userName和userPassword)啟用UserDao中的查詢方法遍歷資料庫。
6.根據查詢結果判斷使用者資訊是否存在,在網頁中顯示判斷結果。
資料庫表格及結果例項:
關於500錯誤:
由於我選擇的是本地的Tomcat,而不是系統自帶的,JDBC的驅動是從其他專案複製過去的,但初次執行的時候報了500錯誤:
java.lang.ClassNotFoundException: com.mysql.jdbc.Driver導致專案無法正常執行。
這個錯誤主要是由於我選擇的Tomcat所在路徑的lib資料夾下面沒有JDBC驅動:mysql-connector-java-5.1.5-bin.jar。
解決辦法:
必須把mysql-connector-java-5.1.5-bin.jar匯入到tomcat的lib目錄下面!
在java專案中,只需要引入mysql-connector-java-5.1.5-bin.jar就可以執行java專案。
在web專案中,當Class.forName("om.mysql.jdbc.Driver");時myeclipse是不會去查詢字串,不會去查詢驅動的。所以
就需要把
mysql-connector-java-5.1.5-bin.jar拷貝到tomcat下lib目錄下了。
本地Tomcat lib資料夾: