servlet的介紹 & xml中配置 以及 & 三種實現方式(補充設定瀏覽器不快取的方法)
開始時間:2018年10月13日20:53:30 | 2018年10月14日16:10:56
結束時間:2018年10月13日21:53:30 | 2018年10月14日17:02:23
累計時間:3小時
動態資源:
Servlet 簡單介紹:
Servlet 伺服器端的一個小程式: 執行在伺服器上。 能夠接收客戶端請求,並且給客戶端做出相應。 * 實現方式: 三種: (1)實現Servlet 介面: (2)繼承GenericServlet:類。 (3)繼承HttpServlet: * Servlet 當中設定的方法: 初始化的方法; init(); 接收客戶端的請求,Service(); 銷燬Servlet: destroy();
* Servlet 的生命週期: 和Servlet 宣告週期相關的方法: init(ServletConfig config); Servlet建立之後,自動執行。 service(ServletRequest request, ServletResponse response); 當客戶端瀏覽器發出請求的時候 service方法被呼叫。 destroy() 伺服器關閉的時候,當前的應用稱web伺服器上解除安裝的時候。 生命週期---(面試問題) 誕生: 當客戶端瀏覽器第一次訪問該Servlet的時候,此時Servlet誕生。 自動會呼叫init方法,執行一個初始化操作。 服務: 當客戶端瀏覽器每次發出請求,service方法都會被執行。 銷燬: 伺服器關閉的時候,當前的應用稱web伺服器上解除安裝的時候。
* 訪問方式
不能被瀏覽器直接訪問, 需要在當前應用的核心配置當中 對 當前servlet進行配置
配置方法如下:
補充一個Servlet 簡單案例:
重點是瀏覽器設定不快取
下面程式碼設定了瀏覽器不快取,避免出現 修改伺服器端給瀏覽器的響應 而瀏覽器顯示不改變 的情況!
如果已經出現的話,清空瀏覽器快取,或者重啟。
package com.yidongxueyuan.web.servlet; import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class AServlet extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doPost(request, response); } public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { request.setCharacterEncoding("utf-8"); response.setContentType("text/html;charset=utf-8"); response.getWriter().println("yyy"); //設定瀏覽器不快取: // 同時出現,設定瀏覽器的不快取: response.setHeader("expires", "-1"); response.setHeader("Pragma", "no-cache");// http10.0 response.setHeader("Cache-Control", "no-cache");// http1.1 } }
response.setHeader("expires", "-1"); 中的 第二個引數 不一定非得是-1,只要小於當前時間的毫秒值,即可。一般是-1活0
重點介紹三種實現方式
方式一: 實現步驟 (1) 建立一個類: 類實現implements Servlet (2) 重寫Servlet當中的方法: (3) 訪問》 通過瀏覽器訪問:
下面程式中: servlet例項被建立的時候,自動執行init方法。
package com.yidongxueyuan.web.servlet;
import java.io.IOException;
import javax.servlet.Servlet;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
public class FirstServlet implements Servlet {
//第一步: 建立一個Servlet 例項:
public FirstServlet(){
System.out.println("servlet 被建立了");
}
//初始化方法: 對當前的Servlet 進行初始化操作:
@Override
public void init(ServletConfig paramServletConfig) throws ServletException {
System.out.println("init方法被執行了,完成了一個初始化操作。 ");
}
@Override
public ServletConfig getServletConfig() {
return null;
}
//service 方法: 對客戶端的請求 進行相關的處理:
@Override
public void service(ServletRequest request,
ServletResponse paramServletResponse) throws ServletException,
IOException {
System.out.println("serice方法被執行了。。。。。。");
}
@Override
public String getServletInfo() {
return null;
}
@Override
public void destroy() {
System.out.println("destroy方法被執行了。 此時Servlet被銷燬。 ");
}
}
web.xml當中進行配置:
<!--註冊Servlet: --> <servlet>//需要有兩個子標籤 第一個放檔名 第二個放你的檔案所在的全路徑名
(如果是eclipse的話 可以快速copy全路徑 如圖 點選 copy qualified name即可) <servlet-name>FirstServlet</servlet-name> <servlet-class>web.servlet.FirstServlet</servlet-class> </servlet> <!-- 對映 --> <servlet-mapping> <servlet-name>FirstServlet</servlet-name> 和上面註冊一樣 <url-pattern>/xxx</url-pattern> /表示相對當前路徑 對映上面那個class 自己命名的值會顯示在URL欄 </servlet-mapping> 八: Servlet的補充: 1: web的三大元件: Servlet: Filter : 過濾器 Listener: 監聽器 :2:作用: 接收請求: 處理請求: 完成響應: :3: 初始化的方法,init service的方法, 引數都是來源於Tomcat伺服器。 Tomcat伺服器幫忙建立的。