麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 學院 > 開發設計 > 正文

Servlet學習 ——Web部分第十天

2019-11-14 09:27:39
字體:
來源:轉載
供稿:網友

Servlet學習 ——Web部分第十天

小知識點

Servlet是java web 的三大組件之一,它屬于動態資源。java web 的三大組件有Servlet,Filter,Listener。常見的端口號:http/80 ; smtp/25 ; pop3/110 ; ftp/23 ; https/443

1. Servlet簡介

Servlet是用來完成客戶端向服務器發出請求的處理行為的編寫。即接受請求數據,處理請求,完成響應。實現Servlet的方式有我們自己編寫,通過繼承或實現接口的方式有關接口和類信息:javax.servlet.Servlet 接口 ; javax.servlet.GenericServlet 抽象類 ;javax.servlet.http.HttpServlet 抽象類

特性

Servlet是單例類,可以實現多個Servlet類,但每個類只有一個對象。線程不安全,它存在多個客戶端訪問同一個Servlet資源,所以不要在Servlet類中實現可以同時讀和寫的方法 。Servlet由我們編寫,但是由服務器去創建對象,并且由服務器來調用相應的方法。

寫完后的Servlet實現要在WEB-INF下的web.xml中編寫xml信息

<servlet> <!--servlet標簽中存放的信息就是ServletConfig的信息,并且通過以下方法獲取關鍵的信息--> <!--public String getInitParameter(String name) 通過指定的名稱獲取指定初始化參數的值--> <!--public Enumeration getInitParameterNames() 獲取所有初始化參數的名稱 --> <!--public ServletContext getServletContext()獲取Servet上下文對象 --> <!--public String getServletName() :用于獲取servlet-name標簽下的內容--> <!--servlet-name標簽是自定義訪問名稱,用于servlet-mapping標簽中的servlet-name標簽來相匹配--> <!--servlet-class 中存放的應是classes目錄下實現的MySerlevt的類名--> <!--init-param標簽下設置的是初始化參數--> <!--load-on-startup表示當服務器啟動時就訪問該Servlet參數為多個Servlet標簽時的執行順序--> <servlet-name>abc</servlet-name> <servlet-class>包名.MyServlet</servlet-class> <load-on-startup>0</load-on-startup> <init-param> <param-name>p1</param-name> <param-value>v1</param-value> </init-param> <init-param> <param-name>p2</param-name> <param-value>v2</param-value> </init-param><servlet><servlet-mapping> <servlet-name>abc</servlet-name> <!--url-pattern 決定了當服務器訪問該Servlet的路徑名稱,可以為多個標簽常用的標簽表達方式如下三種--> <!--通配符*只能出現在末尾或者開頭--> <!--表示serlevtpath地址下的的所有路徑對應此servlet--> <url-pattern>/servletpath/*</url-pattern> <!--表示對應的擴展名為.xxxx的路徑對應此servlet--> <url-pattern>*.xxx</url-pattern> <!--表示所有路徑都對應此servlet--> <url-pattern>/*</url-pattern></servlet-mapping>

通過實現Servlet接口實現MyServlet

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 MyServlet implements Servlet { @Override public void destroy() { //該方法會在Servlet對象銷毀之前執行,并且只執行一次。 } @Override public ServletConfig getServletConfig() { //獲取Servlet的配置信息 return null; } @Override public String getServletInfo() { //獲取Servlet的信息 return null; } @Override public void init(ServletConfig config) throws ServletException { //由Tomcat服務器來調用并且只調用一次 //該方法會在Servlet對象創建之后馬上執行,并且只執行一次。 } @Override public void service(ServletRequest req, ServletResponse res) throws ServletException, IOException { //該方法會被多次調用,用于處理每次發出的請求,并做出回應或處理。 }}

通過實現GenericServlet接口實現MyServlet

GenericServlet該類視為了方便程序員對Servlet接口的重復操作的編寫創建的抽象類以下代碼即為GenericServlet功能的主要實現。MyServlet就可以模擬GenericServlet存在的目的當繼承GenericServlet類時,重寫無參的init()方法即可。//手寫GenericServlet類的源碼實現import java.io.IOException;import java.util.Enumeration;import javax.servlet.Servlet;import javax.servlet.ServletConfig;import javax.servlet.ServletContext;import javax.servlet.ServletException;import javax.servlet.ServletRequest;import javax.servlet.ServletResponse;public class MyServlet implements Servlet,ServletConfig{ //創建ServletConfig對象,方便服務調用, PRivate ServletConfig config; @Override public void destroy() { } @Override public ServletConfig getServletConfig() { return this.config; } //如下四個方法是是實現的ServletConfig接口中的方法 public String getInitParameter(String name) { return getServletConfig().getInitParameter(name); } public Enumeration getInitParameterNames() { return getServletConfig().getInitParameterNames(); } public ServletContext getServletContext() { return getServletConfig().getServletContext(); } public String getServletName() { return getServletConfig().getServletName(); } @Override public String getServletInfo() { return null; } @Override public void init(ServletConfig servletConfig) throws ServletException { this.config = servletConfig; init(); } //通過創建無參init方法方便子類繼承并能夠正常的享有父類擁有的信息 public void init() throws ServletException { } @Override public void service(ServletRequest request, ServletResponse response) throws ServletException, IOException { }}

通過繼承HttpServlet接口實現MyServlet

HttpServlet是專門對GenericServlet類中ServletRequest, ServletResponse 的參數進行強轉來處理Http的請求繼承該類后只需實現其中的doGet()和doPost()方法即可如果沒有實現其中的一種方法而用該種方式請求瀏覽器則瀏覽器會報405狀態碼,表示客戶端向服務器請求方式的錯誤。package text.web.servlet;import java.io.IOException;import java.io.PrintWriter;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;public class MyServlet extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { } public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { }}

2.ServletContext關鍵類

一個項目只有一個ServletContext對象,他的創建和銷毀是對應服務器的創建和銷毀。

它可以被個Servlet來獲取該對象,它可以被用來給多個Servlet對象傳遞數據。

獲取ServletContext對象的方式

ServletConfig中的getServletContext() ;GenericServlet中的getSerletContext() ;Httpsession中的getSerletContext() ;SerletContextEvent中的getSerletContext() ;

ServletContext是javaweb的四大域對象之一

四大域對象分別是: PageContext;ServletRequest;HttpSession ;ServletContext所有域對象內部有一個Map。用來儲存數據

ServletContext操作數據的方法

void setAttribute(String name, Object object) 保存一個域信息,和map相同的是相同的name會覆蓋object ;Object getAttribute(String name) 得到name的域信息void removeAttribute(String name) 刪除name的鍵值對信息;Enumeration getAttributeNames() 得到所有的name的域信息

ServletContext的對象可以獲取真實的路徑

可以使用ServletContext來獲取web應用下的資源文件,String realPath = servletContext.getRealPath("/WEB下的文件") ;//realPath返回的是帶盤符的真實路徑可以使用ServletContext來獲取web應用下的資源流,InputStream in = servletContext.getResourceAsStream("/WEB下的文件") ;可以使用ServletContext來獲取web目錄下的所有資源Set set = servletContext.getResourcePaths("/WEB下的文件") ;
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: www国产成人免费观看视频,深夜成人网 | 黄在线观看在线播放720p | 日韩欧美精品中文字幕 | 免费一级欧美大片视频在线 | 福利免费观看 | 一本一本久久a久久精品综合小说 | 欧美成人午夜一区二区三区 | 毛片免费视频在线观看 | 99久久婷婷国产综合精品青牛牛 | 97风流梦电影 | 一级黄色淫片 | 一本一道久久久a久久久精品91 | 中文字幕免费在线观看视频 | 久草在线观看资源 | 日本欧美一区二区三区在线观看 | 久久精品一区二区三区四区五区 | 九九热在线精品视频 | 中文字幕h| av观看国产 | 免费观看黄色一级视频 | 久久久一区二区三区四区 | 国产 日韩 一区 | 一级做人爱c黑人影片 | 国产在线精品一区二区三区不卡 | 精品亚洲视频在线 | 羞羞视频一区 | 欧美成人黄色小视频 | 免费一区在线 | 国内精品久久久久久久久久 | 中文字幕精品在线视频 | 久草手机视频在线观看 | 久草在线免费资源站 | 羞羞的视频免费在线观看 | 黄色特级毛片 | 成人国产精品齐天大性 | 日本成人在线免费 | 一级毛片电影院 | 久久精品伊人网 | chengrenyingshi| 韩国十九禁高潮床戏在线观看 | 精品成人免费一区二区在线播放 |