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