html与java接口,JavaWeb学习——Servlet相关的接口和类
JavaWeb學習——Servlet相關的接口和類
摘要:本文主要學習了Servlet相關的接口和類。
Servlet的接口和類
三種方式
實現Servlet有三種方式:
實現javax.servlet.Servlet接口。
繼承javax.servlet.GenericServlet類。
繼承javax.servlet.http.HttpServlet類。
實現Servlet接口
Servlet接口是最基礎的接口,如果要使用Servlet,就要實現這個接口,或者繼承其他已經實現了這個接口的類。
創建一個類并實現Servlet接口:
1 public class TestServlet implements Servlet {
2 @Override
3 public ServletConfig getServletConfig() {
4 return null;
5 }
6
7 @Override
8 public String getServletInfo() {
9 return null;
10 }
11
12 @Override
13 public void service(ServletRequest req, ServletResponse res) throws ServletException, IOException {
14 System.out.println("service()方法被執行……");
15 }
16
17 @Override
18 public void init(ServletConfig config) throws ServletException {
19 System.out.println("init()方法被執行……");
20 }
21
22 @Override
23 public void destroy() {
24 System.out.println("destroy()方法被執行……");
25 }
26 }
繼承GenericServlet類
GenericServlet類實現并重寫了Servlet接口的一些方法,使得程序員在開發的時候只需要關注service()方法的實現就好。
創建一個類并繼承GenericServlet類:
1 public class TestServlet extends GenericServlet {
2 @Override
3 public void service(ServletRequest req, ServletResponse res) throws ServletException, IOException {
4 System.out.println("service()方法被執行……");
5 }
6 }
繼承HttpServlet類
HttpServlet類繼承了GenericServlet類,是對HTTP請求的特殊支持,由于開發的項目一般遵循HTTP協議,所以經常使用的是HttpServlet類。
在HttpServlet的service(HttpServletRequest, HttpServletResponse)方法會去判斷當前請求是GET還是POST,如果是GET請求,那么會去調用本類的doGet()方法,如果是POST請求會去調用doPost()方法,這說明在子類中去重寫doGet()或doPost()方法即可。
創建一個類并繼承HttpServlet類:
1 public class TestServlet extends HttpServlet {
2 @Override
3 protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
4 super.doGet(req, resp);
5 }
6
7 @Override
8 protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
9 super.doPost(req, resp);
10 }
11 }
其他的接口和類
ServletConfig接口
代表當前Servlet的配置信息,封裝了ServletContext對象和配置參數信息。
可以通過Servlet里面的getServletConfig()方法獲取:
1 public ServletConfig getServletConfig();
常用方法:
1 public String getServletName();// 獲取當前Servlet的友好名稱。
2 public ServletContext getServletContext();// 獲取ServletContext對象。
3 public String getInitParameter(String name);// 獲取初始化參數,初始化參數可以在web.xml配置文件的標簽里的標簽里設置。
4 public Enumeration getInitParameterNames();// 獲取全部初始化參數,初始化參數同樣需要在web.xml配置文件的標簽里的標簽里設置。
ServletContext接口
代表當前Web應用,服務器為每個Web應用程序都創建一個對應的ServletContext對象,被所有客戶端共享。當Web應用啟動時自動創建,當Web應用關閉和重新啟動、服務器關閉時都會造成ServletContext銷毀。
可以通過ServletConfig里面的getServletContext()方法獲取:
1 public ServletContext getServletContext();
常用方法:
1 public String getServletContextName();// 獲取當前項目的名稱。
2 public String getServerInfo();// 返回Servlet容器名稱和版本號。
3 public ServletContext getContext(String uripath);// 通過路徑獲取ServletContext對象。
4 public String getContextPath();// 獲取服務器上當前項目的相對目錄。比如:/HelloWorld。
5 public String getRealPath(String path);// 得到指定文件的真實路徑,從應用程序根目錄開始。比如:TestServlet得到的是盤符:\文件夾\工作空間\項目名稱\WebContent\TestServlet。
6 public Set getResourcePaths(String path);// 得到指定相對路徑下的文件夾名和文件名,從應用程序根目錄開始,指定路徑必須以/開頭。比如:/得到的是應用程序根目錄下的內容。
7 public URL getResource(String path) throws MalformedURLException;// 得到指定相對路徑下的地址,從應用程序根目錄開始。比如:/得到的是jndi:/域名/項目名/。
8 public InputStream getResourceAsStream(String path);// 將指定文件轉化為流以便讀取,從應用程序根目錄開始。比如:index.html可以獲取到應用程序根目錄下的index.html并轉為流。
9 public RequestDispatcher getRequestDispatcher(String path);// 創建跳轉到指定路徑的轉發器,從應用程序根目錄開始,指定路徑必須以/開頭。
10 public RequestDispatcher getNamedDispatcher(String name);// 創建跳轉到指定Servlet名的轉發器,不需要也不能以/開頭。
11 public String getInitParameter(String name);// 獲取指定的初始化參數,初始化參數需要在web.xml配置文件的標簽里設置。
12 public Enumeration getInitParameterNames();// 獲取所有指定的初始化參數,初始化參數也需要在web.xml配置文件的標簽里設置。
13 public boolean setInitParameter(String name, String value);// 設置初始化參數,效果同在web.xml配置文件的標簽里設置的一樣。
14 public Object getAttribute(String name);// 通過屬性名獲取屬性對象。
15 public Enumeration getAttributeNames();// 獲取全部屬性名。
16 public void setAttribute(String name, Object object);// 設置屬性名和屬性對象。
17 public void removeAttribute(String name);// 通過屬性名刪除屬性對象。
RequestDispatcher接口
RequestDispatcher實例對象是由Servlet引擎創建的,用于包裝一個要被其他資源調用的資源,并可以通過其中的方法將客戶端的請求轉發給所包裝的資源。
RequestDispatcher接口中定義了兩個方法:forward()方法和include()方法。forward()和include()方法接收的兩個參數,必須是傳遞給當前Servlet的service()方法的ServletRequest和ServletResponse對象,或者是對它們進行了包裝的ServletRequestWrapper和ServletResponseWrapper對象。
可以通過ServletContext對象的getRequestDispatcher()方法和getNamedDispatcher()方法獲取:
1 public RequestDispatcher getRequestDispatcher(String path);
2 public RequestDispatcher getNamedDispatcher(String name);
請求轉發:
1 // 該方法用于將請求從一個Servlet傳遞到服務器上另外的Servlet、Jsp頁面或者Html文件,由當前的Servlet發送給另一個Servlet,該方法必須在響應被提交給客戶端之前調用。
2 // 在當前的Servlet中可以給請求設置屬性,設置的響應頭信息不回被忽略,但是設置的響應體信息可能會被忽略。
3 public void forward(ServletRequest request, ServletResponse response) throws ServletException, IOException;
請求包含:
1 // 該方法用于在響應中包含Servlet、Jsp頁面或者Html文件,由當前的Servlet發送給客戶端,必須要在當前Servlet中設置編碼格式。
2 // 當前Servlet和要包含的資源都可以設置響應體,按先后順序輸出到客戶端。
3 public void include(ServletRequest request, ServletResponse response) throws ServletException, IOException;
請求轉發與請求包含比較:
請求轉發大多是應用在Servlet中,轉發目標大多是Jsp頁面。
請求包含大多是應用在Jsp頁面中,完成多頁面的合并。
總結
以上是生活随笔為你收集整理的html与java接口,JavaWeb学习——Servlet相关的接口和类的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 不会演讲的你,一开口就输了!
- 下一篇: 网站服务器时间秒杀,Javascript