亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

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

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下的文件") ;
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
精品国产一区二区三区久久| 亚洲综合国产精品| 成人在线视频网站| 国产精品户外野外| 97av在线播放| 亚洲第一区在线| 欧美高清性猛交| 中文字幕免费精品一区| 亚洲va久久久噜噜噜久久天堂| 国产中文字幕91| 国产精品久久久久久久久久久久| 日韩av免费在线| 日韩精品免费在线视频观看| 久久久久久国产精品三级玉女聊斋| 国产精品久久久久91| 久久精品视频亚洲| 亚洲国产婷婷香蕉久久久久久| 国产精品久久在线观看| 亚洲在线第一页| 亚洲欧美精品在线| 亚洲精品99久久久久中文字幕| 欧美中文在线字幕| 日韩av在线资源| 久久久久久久影视| 久久精品国产精品亚洲| 国模精品视频一区二区| 色婷婷成人综合| 成人免费看吃奶视频网站| 亚洲人成自拍网站| 亚洲性视频网址| 国产精品一二三在线| 亚洲全黄一级网站| 国产成人精品国内自产拍免费看| 中文字幕亚洲欧美在线| 日韩男女性生活视频| 久久影视三级福利片| 亚洲国产精品va在线观看黑人| 国产精品视频yy9099| 国产成人精品视频| 精品中文字幕视频| 国产精品男人的天堂| 国产激情久久久久| 国产午夜精品一区理论片飘花| 97精品一区二区视频在线观看| 国产自摸综合网| 久久亚洲国产成人| 青青草原成人在线视频| 日韩精品在线视频观看| 亚洲欧洲日产国码av系列天堂| 国产精品www色诱视频| 国产不卡一区二区在线播放| 亚洲男人天堂手机在线| 色与欲影视天天看综合网| 欧美精品999| 日韩亚洲在线观看| 精品久久久久久久大神国产| 久久国产精品免费视频| 欧美视频一二三| 欧美亚洲另类制服自拍| 97**国产露脸精品国产| 日本欧美精品在线| 狠狠躁18三区二区一区| 91日韩在线播放| 久久伊人免费视频| 亚洲永久免费观看| 国产成人精品视| 国产精品久久久久久久天堂| 国产精品一区二区三区免费视频| 色妞一区二区三区| 久久久999精品免费| 亚洲永久免费观看| 北条麻妃久久精品| 亚洲精品成人免费| 尤物九九久久国产精品的分类| 韩国一区二区电影| 一区二区三区国产在线观看| 国产精品视频最多的网站| 国产精品伦子伦免费视频| 中文字幕av一区中文字幕天堂| 国产精品久久久久久久av电影| 欧美大片在线免费观看| 伊人久久久久久久久久久| 国产精品视频永久免费播放| 欧美日韩亚洲精品内裤| 亚洲综合色激情五月| 亚洲福利视频在线| 亚洲第一av网| 2018日韩中文字幕| 国产日韩在线免费| 在线视频国产日韩| 亚洲欧洲黄色网| 精品中文字幕乱| 97国产一区二区精品久久呦| 精品国产网站地址| 久热精品视频在线| 久久99精品久久久久久琪琪| 久久精品国产综合| 中文字幕在线看视频国产欧美| 久久久欧美精品| 日本精品性网站在线观看| 欧美精品一本久久男人的天堂| 97香蕉超级碰碰久久免费的优势| 日本精品va在线观看| 亚洲精品美女久久久| 国产精品三级在线| 亚洲xxxx妇黄裸体| 久久久女人电视剧免费播放下载| 成人久久18免费网站图片| 亚洲激情视频网站| 中文字幕在线日韩| 国产精品扒开腿做爽爽爽视频| 亚洲人精选亚洲人成在线| 欧美丰满片xxx777| 91精品视频免费观看| 亚洲第一偷拍网| 日韩免费观看高清| 欧美福利在线观看| 日本一欧美一欧美一亚洲视频| 国产亚洲精品久久久久久| 日韩视频免费中文字幕| 精品偷拍各种wc美女嘘嘘| 国产精品嫩草视频| 亚洲成avwww人| 日韩精品久久久久| 国产精品视频精品| 久久乐国产精品| 欧美丝袜美女中出在线| 亚洲欧美日韩一区二区三区在线| 精品成人乱色一区二区| 97视频国产在线| 亚洲午夜未删减在线观看| 九九热这里只有精品免费看| 成人激情视频在线播放| 国产精品久久久久久婷婷天堂| 日韩中文视频免费在线观看| 最近2019年中文视频免费在线观看| 亚洲夜晚福利在线观看| 久热精品视频在线观看一区| 精品无人区乱码1区2区3区在线| 国产性猛交xxxx免费看久久| 欧美日韩国产一区二区三区| 亚洲影院高清在线| 精品视频www| 国产精品久久久久久久电影| 亚洲国产另类久久精品| 亚洲精品91美女久久久久久久| 欧美网站在线观看| 91美女高潮出水| 亚洲香蕉av在线一区二区三区| 91免费视频网站| 日韩视频免费中文字幕| 国产精品爱啪在线线免费观看| 亚洲丁香婷深爱综合| 国产一区二区三区免费视频| 日本国产欧美一区二区三区| 成人免费视频在线观看超级碰| 日本欧美一级片| 成人网在线视频| 国产v综合v亚洲欧美久久| 欧美日韩在线视频首页| 国产精品一区二区3区| 日韩电影在线观看中文字幕| 国产成人亚洲综合青青| 久久久久久久久91|