2022-10-29 Servlet 1、 Servlet的作用: 例如:查詢數據 (1)瀏覽器端點擊某個查詢功能,向伺服器端發出請求;伺服器端解析請求,創建Servlet對象,並調用特定方法;Servlet對象調用“DAO”方法獲取數據;DAO方法查詢資料庫。 (2)之後將後端的處理數據傳遞給“前 ...
2022-10-29
Servlet
1、 Servlet的作用:
例如:查詢數據
(1)瀏覽器端點擊某個查詢功能,向伺服器端發出請求;伺服器端解析請求,創建Servlet對象,並調用特定方法;Servlet對象調用“DAO”方法獲取數據;DAO方法查詢資料庫。
(2)之後將後端的處理數據傳遞給“前端頁面”,進行刷新。資料庫返回查詢結果;DAO方法返回集合數據;Servlet將數據響應給瀏覽器;瀏覽器接收到響應,顯示頁面。
2、Servlet的含義:
Servlet:Server Applet(就是指伺服器端的小程式。主要用於和客戶端交互,接收和處理請求)。
3、創建Servlet的“HelloServlet”:
步驟:
(1)新建一個普通類。如在創建的“Java Enterprise”項目的“Web Application”模塊中的“src”文件夾下創建一個“HelloServlet”類。
(2)實現介面Servlet。(實現介面使用的是“implements Servlet”)
(3)實現介面的抽象方法(主要實現“service”方法)
package com.haha.servlet; import javax.servlet.*; import java.io.IOException; public class HelloServlet implements Servlet { /** * 主要功能:處理客戶端的請求和響應 * @param servletRequest 來自客戶端的請求 * @param servletResponse 來自客戶端的響應 * @throws ServletException * @throws IOException */ @Override public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException { System.out.println("訪問到HelloServlet的service方法..."); } @Override public String getServletInfo() { return null; } @Override public void destroy() { } @Override public void init(ServletConfig servletConfig) throws ServletException { } @Override public ServletConfig getServletConfig() { return null; } }
(4)給剛剛創建的類(HelloServlet)設置訪問路徑。設置的訪問路徑在“web.xml”。配置文件的設置:
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd" version="4.0"> <servlet> <!--為servlet起名--> <servlet-name>HelloServlet</servlet-name> <!--servlet的全類名(就是包名.類名)--> <servlet-class>com.haha.servlet.HelloServlet</servlet-class> </servlet> <servlet-mapping> <!--和上面起的名字一樣--> <servlet-name>HelloServlet</servlet-name> <!--訪問servlet的路徑,註意前面一定要加/,要不然訪問不到--> <url-pattern>/hello</url-pattern> </servlet-mapping> </web-app>
之後,在該模塊下的“src”文件夾下,創建一個“index.html”,設置一個超鏈接進行訪問,如下:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <a href="hello">訪問HelloServlet</a> </body> </html>
運行結果:
在彈出的瀏覽器中點擊“超鏈接”,頁面出現的空白的,在idea中的控制臺上出現了運行結果。
4、servlet的生命周期
在servlet中的介面中,有“init/service/destory”。預設情況下,在進行請求時,執行init與service方法,如果要執行“destory”方法,那麼需要停止“tomcat”伺服器。
5、另一種實現servlet的方式
(1)創建一個普通類(MysecondServlet)
(2)繼承“HttpServlet”
(3)重寫“doget”和“dopost”方法。如下:
package com.haha.servlet; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; public class MySecondServlet extends HttpServlet { @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { System.out.println("訪問到了MySecondServlet的doGet方法..."); } @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { System.out.println("訪問到了MySecondServlet的doPost方法..."); } }
(4)在web.xml中設置MysecondServlet的配置文件
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd" version="4.0"> <servlet> <servlet-name>mySencondServlet</servlet-name> <servlet-class>com.haha.servlet.MySecondServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>mySencondServlet</servlet-name> <url-pattern>/second</url-pattern> </servlet-mapping> </web-app>
測試:
在剛剛創建的“index.html”中創建一個超鏈接,進行訪問
<a href="second">訪問MySencondServlet</a>
6、創建servlet的簡易方式:
在“src”文件夾下的“包名”下,點擊右鍵,如下:
可命名為“LoginServlet”,之後,在配置文件中會自動創建"<servlet>",但需要手動創建“<servlet-mapping>”