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

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

2 Servlet基礎

2019-11-14 22:52:22
字體:
來源:轉載
供稿:網友
2 Servlet基礎作者:禪樓望月(http://www.49028c.com/yaoyinglong)1. 從瀏覽器訪問Servlet的流程

剛才發現,這里的圖片不能正常顯示,所以我給個鏈接,大家可以下載下來看從瀏覽器訪問servlet流程圖.png

2. 生命周期

Servlet的一生都是由容器來管理的。

WEB服務器首先會檢查是否已經裝載并創建了該servlet實例對象。如果是直接進行第④步,否則執行第②步;

裝載并創建該Servlet類的一個實例對象(此時該對象還只是一個普通的java類);

調用Servlet實例對象的init()方法,使Java類成為一個真正的Servlet;

創建一個用于封裝HTTP請求消息的HttpServletRequest對象和一個代表HTTP響應消息的HttpServletResponse對象,然后調用service()方法并將請求和響應作為參數傳遞進去。service()方法將根據客戶端的請求方式來決定調用對應的doXXX()方法;

WEB應用被停止或重啟之前,Servlet引擎將卸載Servlet,在卸載之前調用Servlet的destroy()方法。

c6be888e-6985-428a-9b5f-d8c986202c55

3. Servlet 開發方法3.1 Servlet的開發方式

①實現Servlet接口

② 通過繼承 GenericServlet

③通過繼承 HttpServlet

99%的情況下我們使用的是第三種方式來發開。

3.2 手動開發一個Web應用

前一節中我們Web應用的目錄結構,只有按照這個目錄結構的規范,tomcat才能正確的解析這些內容。下面我們手動(不用IDE)使用實現Servlet接口的方法來開發并部署一個Servlet應用:

需求:請使用實現Servlet接口的方式,來開發一個Servlet ,要求該Servlet 可以顯示Hello,world。

①在Tomcat的webapps下建立一個web應用HelloWorld(即,建立一個名為HelloWorld的文件夾)

② 在HelloWorld下建立 WEB-INF->web.xml [web.xml可以從 ROOT/WEB-INF/web.xml拷貝]

③在WEB-INF 下建立 classes 目錄(簡單起見我們在這里放Servlet的.java文件和.class文件),建立lib文件夾

④添加Servlet的jar包到環境變量的classpath中

image

⑤開發HelloWorld.java

 1 package com.yyl; 2 import javax.servlet.*; 3 import javax.servlet.http.*; 4 import java.io.*; 5 class HelloWorld implements Servlet 6 { 7      //該函數用于初始化servlet,就是將該Servlet的Java對象轉為Servlet,該函數只會被調用一次 8      public void init(ServletConfig config) throws ServletException{ 9     }10 11    //得到ServletConfig對象12    public ServletConfig getServletConfig(){13      return null;14   }15 16    //該函數是服務函數,我們的業務邏輯代碼就是寫在這里,該函數每次都會被調用17    public void service(ServletRequest req,ServletResponse res)  throws ServletException,java.io.IOException{18        res.getWriter().View Code

現在我們在web.xml文件部署我們的Servlet:

 1 <?xml version="1.0" encoding="ISO-8859-1"?> 2 <!-- 3  Licensed to the Apache Software Foundation (ASF) under one or more 4   contributor license agreements.  See the NOTICE file distributed with 5   this work for additional information regarding copyright ownership. 6   The ASF licenses this file to You under the Apache License, Version 2.0 7   (the "License"); you may not use this file except in compliance with 8   the License.  You may obtain a copy of the License at 9 10       http://www.apache.org/licenses/LICENSE-2.011 12   Unless required by applicable law or agreed to in writing, software13   distributed under the License is distributed on an "AS IS" BASIS,14   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.15   See the License for the specific language governing permissions and16   limitations under the License.17 -->18 19 <web-app xmlns="http://java.sun.com/xml/ns/javaee"20    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"21    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"22    version="2.5">23 24     <!--根據serlvet規范,需要將Servlet部署到web.xml文件,該部署配置可以從examples下拷貝-->25     <servlet>26         <!--servlet-name 給該Servlet取名, 該名字可以自己定義:默認就使用該Servlet的名字-->27       <servlet-name>HelloWorld</servlet-name><!--③-->28         <!--servlet-class要指明該Servlet 放在哪個包下 的,形式是 包/包/../類-->29       <servlet-class>com.yyl.HelloWorld</servlet-class><!-- 注意:后面不要帶.java④-->30     </servlet>31         <!--Servlet的映射-->32     <servlet-mapping>33           <!--這個Servlet-name要和上面的servlet-name名字一樣-->34         <servlet-name>HelloWorld</servlet-name><!--②-->35           <!--url-pattern 這里就是將來訪問該Servlet的資源名部分-->36         <url-pattern>/ABC</url-pattern><!--①-->37     </servlet-mapping>38 </web-app>
View Code

訪問頁面:

image

如何使用IDE來開發Servlet應該沒必要說明了吧!大笑

3.3 HttpServlet的繼承體系

image

由于GenericServlet極少使用,所以就沒有列舉,但是HttpServlet中有很多方法都是從它那里繼承而來的。

ServletConfig對象

每一個Servlet都有一個ServletConfig對象,它用于在將普通Java類轉為Servlet時傳遞部署時信息;用于訪問ServletContext。參數在web.xml文件中配置,如:

1 <servlet>2       <init-param>3           <param-name>email</param-name>4           <param-value>yaoyinglong@Gmail.com</param-value>5       </init-param>6 </servlet>
View Code

ServletContext

每一個Web應用都有一個ServletContext,用于訪問Web應用參數(也在web.xml文件中配置)。

上面這兩個對象在以后用到會詳細說明,暫時有個印象就可以了。

4. 使用通配符將servlet映射到URL中

前提聲明:當映射一個servlet時候,可以多層次,即(用“/”分割),如:

<url-pattern>/servlet/abc/index.html</url-pattern>

通配符有兩種格式:

第一種格式 *.擴展名 比如 *.do *.ss

第二種格式 以 / 開頭 同時以 /* 結尾 比如 /* 、/news/*

在匹配的時候,要參考的標準:

(1) 看誰的匹配度高,誰就被選擇

(2) *.do 的優先級最低

5. Servlet單例問題

針對多客戶端的多次Servlet請求,通常情況下,服務器只會創建一個Servlet實例對象。也就是說Servlet實例對象一旦創建,它就會駐留在內存中,為后續的其他請求服務,直至web服務器退出或者reload該web應用,servlet實例對象才會才會銷毀(參考Servlet的生命周期)。

當Servlet被第一次訪問后,就被加載到內存,以后該實例對各個請求服務。即在使用中是單例,因此會出現線程安全問題。

這里給大家一個原則:

(1)如果一個變量需要多個用戶共享,則應當在訪問該變量的時候,加同步機制

synchronized (對象){

//同步代碼

}

(2)如果一個變量不需要共享,則直接在 doGet() 或者 doPost()定義。這樣不會存在線程安全問題。

6. 請求和響應易混點6.1 getServerPort()、getLocalPort()、getRemotePort()

這些是在服務器端調用的,所以相對于服務器來說,遠程指的是客戶。所以getRemotePort()得到的是客戶的端口。

getServerPort() 指的是請求原來發送到那個端口。而 getLocalPort()請求最后發送到那個端口。

6.2 對于輸出的兩個選擇

ServletOuptputStream用于輸出字節,PrintWriter用于輸出字符。

獲取方式:都是把返回類型的第一個詞去掉加get。

PrintWriter實際上包裝了ServletOutputStream(即PrintWriter有ServletOuptputStream的一個引用)而且會把調用委托給ServletOutputStream。返回給客戶的輸出流只有一個,但是PrintWriter會裝飾這個流,為它增加更高層的"字符友好"方法。

6.3 設置相應首部和增加相應首部

setHeader和addHeader

  • 共同點:當響應中還沒有這個首部(方法的第一個參數),他們都會增加這個首部和相應的值。
  • 不同點:如果響應中已經有這個首部,setHeader是用這個值替換原來的值,而addHeader是在原來值的基礎上,再加上這個值。
7. 請求轉發

兩種方法:

  1. 將請求重定向(301)到完全不同的URL。
  2. 把請求分派給Web應用的另一組件。

重定向

servlet調用sendRedirect(string)。請求返回到客戶瀏覽器,瀏覽器發現響應碼為301,立即找到location首部,使用該location的值建立一個新的請求。這時用戶會發現瀏覽器的地址欄已經改變了。

servlet調用的sendRedirect(string) 中的參數string可以是一個表示外部的絕對URL如:http://www.baidu.com。也可以是一個相對的URL。相對URL以"/"開頭表示:相對于本次請求的域名或Tomcat的webapp目錄。相對URL沒有以"/"開頭表示:相對于本次請求的上一級目錄。

請求分派

request.getRequestDispatcher("所請求的資源名").forward(request,response)。這里的"所請求的資源名"不能加上Web應用的名稱,因為請求分派只會在本Web應用中查找該資源。但是可以以斜線("/")開頭。

請求分派,請求不會返回瀏覽器,請求只有一次,并且客戶端的瀏覽器的URL不會發生改變。重定向的請求為兩次。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美久久精品一级黑人c片| 精品久久久一区二区| 日韩精品欧美激情| 日韩av电影免费观看高清| 日韩欧美在线视频观看| 国产成人精品电影久久久| 2020欧美日韩在线视频| 国产精品久久婷婷六月丁香| 国产精品网红直播| 午夜精品一区二区三区在线| 国产精品男人爽免费视频1| 日韩av在线免费观看一区| 国产成人精品免高潮费视频| 91精品国产精品| 69国产精品成人在线播放| 午夜免费久久久久| 欧美日本中文字幕| 日韩中文字幕精品| 国内成人精品视频| 中文字幕日韩专区| 在线观看欧美成人| 日韩欧美一区二区三区久久| 欧美亚洲国产日本| 欧美一级bbbbb性bbbb喷潮片| 欧美天堂在线观看| 国产日韩在线观看av| 国产精品尤物福利片在线观看| 日韩a**站在线观看| 欧美重口另类videos人妖| 欧美亚洲另类视频| 午夜免费日韩视频| 欧美日韩一区二区在线播放| 欧美精品videos性欧美| 国自在线精品视频| 国产精品www色诱视频| 亚洲美女福利视频网站| 黄色精品一区二区| 欧美成人黄色小视频| 中文字幕亚洲欧美一区二区三区| 精品动漫一区二区| 亚洲一区二区三区四区在线播放| 人妖精品videosex性欧美| 欧美日韩美女在线观看| 亚洲国产黄色片| 日韩av中文字幕在线免费观看| 中文字幕国产日韩| 91久久久久久久久久久久久| 国产在线观看一区二区三区| 久久免费精品视频| 麻豆国产va免费精品高清在线| 国产日韩在线看片| 69影院欧美专区视频| 亚洲国产毛片完整版| 国产亚洲精品久久久久动| 97精品一区二区三区| 国产又爽又黄的激情精品视频| 91精品国产91久久久久久不卡| 亚洲欧美国产高清va在线播| 亚洲剧情一区二区| 中文字幕精品久久久久| 亚洲天堂成人在线视频| 成人免费大片黄在线播放| 91成人国产在线观看| 国产精品手机播放| 欧美在线视频免费| 欧美在线一区二区视频| 在线观看欧美成人| 97av在线视频免费播放| 亚洲精品第一国产综合精品| 日韩欧美国产成人| 亚洲激情中文字幕| 26uuu另类亚洲欧美日本老年| 国产午夜精品麻豆| 国产精品久久久久久搜索| 日韩精品极品毛片系列视频| 亚洲欧美一区二区激情| 日韩欧美在线播放| 91经典在线视频| 亚洲国内精品视频| 日本久久久久亚洲中字幕| 国产午夜精品一区理论片飘花| 国产精品久久9| 国产精品毛片a∨一区二区三区|国| 亚洲日韩欧美视频一区| 国产免费成人av| 中文字幕亚洲专区| 91av国产在线| 色狠狠av一区二区三区香蕉蜜桃| 欧美日韩一区二区三区在线免费观看| 91系列在线播放| 欧美性猛交xxxx免费看漫画| 国产日韩欧美在线观看| 亚洲一区二区三区四区在线播放| 欧洲一区二区视频| 精品福利樱桃av导航| 国产精品久久久久久久久久小说| 亚洲男女自偷自拍图片另类| 久久天天躁夜夜躁狠狠躁2022| 久久久久久久97| 91久久国产综合久久91精品网站| 国产成人高清激情视频在线观看| 97超级碰碰碰久久久| 亚洲人午夜色婷婷| 欧美成人sm免费视频| 日本在线观看天堂男亚洲| 成人疯狂猛交xxx| 69久久夜色精品国产69| 亚洲欧美日本另类| 欧美特级www| 国产精品成熟老女人| 国产精品美女久久久久av超清| 夜夜躁日日躁狠狠久久88av| 国产99久久精品一区二区| 久久精品成人动漫| 欧美亚洲午夜视频在线观看| 亚洲精品国产精品久久清纯直播| 疯狂欧美牲乱大交777| 欧美大片免费看| 国产精品精品久久久| 久久久久女教师免费一区| 久久人人爽人人爽爽久久| 超在线视频97| 日韩视频免费在线| 北条麻妃一区二区三区中文字幕| www.亚洲男人天堂| www.日韩不卡电影av| 日韩中文字幕亚洲| 欧美成人在线免费| 亚洲在线第一页| 亚洲国产精品va在线看黑人| 日韩人在线观看| 在线观看欧美日韩国产| 亚洲精品理论电影| 国产欧美精品一区二区| 亚洲午夜av久久乱码| 欧洲成人免费视频| 国产精品久久99久久| 日韩av在线免费播放| 精品国产乱码久久久久久虫虫漫画| 国产一区二区三区在线视频| 亚洲一区二区日本| 欧美极品美女视频网站在线观看免费| 国产精品av在线播放| 色综久久综合桃花网| 国产精品永久免费视频| 亚洲第一色中文字幕| 国产亚洲精品美女久久久久| 色婷婷综合成人av| 亚洲综合中文字幕在线观看| 久久久久久网站| 国产精品视频专区| 国产91精品高潮白浆喷水| 日韩在线观看网站| 国产精品久久9| 国内偷自视频区视频综合| 久久久久日韩精品久久久男男| 中文字幕精品在线| 精品高清美女精品国产区| 欧美极品少妇xxxxⅹ喷水| 精品国产乱码久久久久久虫虫漫画| 亚洲美女自拍视频| 免费av在线一区| 美女福利精品视频| 国产日韩欧美在线观看|