国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

淺談Servlet

wayneli / 2823人閱讀

摘要:信息錄入輸入內(nèi)容提交同樣,我們也需要在下添加一條路由映射規(guī)則這樣我們?cè)谥休斎胄畔⒑缶蜁?huì)跳轉(zhuǎn)到,這樣就可以通過(guò)對(duì)象獲取到變量的值。

Servlet(服務(wù)端小程序)是使用Java語(yǔ)言編寫的服務(wù)端小程序,可以用于生成動(dòng)態(tài)的Web頁(yè)面。

Servlet處理的基本流程

客戶端通過(guò)HTTP提出請(qǐng)求。

Web服務(wù)器接受該請(qǐng)求并將其發(fā)送給Servlet。如果這個(gè)Servlet還沒(méi)有被加載,Web服務(wù)器會(huì)將它加載到Java虛擬機(jī)并執(zhí)行它。

Servlet程序?qū)⒔邮赵揌TTP請(qǐng)求并執(zhí)行某種處理。

Servlet會(huì)將處理后的結(jié)果向Web服務(wù)器返回應(yīng)答。

Web服務(wù)器將從Servlet收到的應(yīng)答發(fā)回給客戶端。

在整個(gè)Servlet程序中,最重要的就是Servlet接口,在此接口下定義了一個(gè)GenericServlet的子類,但是一般不會(huì)直接繼承這個(gè)子類,而是根據(jù)不同的協(xié)議選擇GenericServlet的子類來(lái)繼承,例如:

用Servlet來(lái)寫一個(gè)“Hello World”

首先我們要明確的一件事是:在處理HTTP請(qǐng)求的Servlet程序中,肯定要繼承HttpServlet類,那么在自定義的Servlet中至少要覆寫HttpServlet中提供的doGet()方法。

javapackage servlet;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;

public class HelloServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        PrintWriter out = resp.getWriter();
        out.print("First Servlet");
        out.println("");
        out.println("

Hello world

"); out.println(""); out.close(); } }

寫好這個(gè)Servlet然后編譯,還不能訪問(wèn),因?yàn)槲覀冞€需要找到一個(gè)鉤子讓網(wǎng)頁(yè)跟我們的Servlet聯(lián)系起來(lái)。那么這個(gè)“鉤子”就是配置web.xml的路由映射

xml
    hello
    servlet.HelloServlet


    hello
    /helloServlet

這樣,就可以通過(guò)../helloServlet查看效果:

一個(gè)表單實(shí)例

如果表單使用的是post的方式提交的,所以在編寫Servlet程序時(shí)要使用doPost()方法。
input.html:

html


    
    信息錄入


輸入內(nèi)容:

InputServlet.java:

javapackage servlet;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;

/**
 * Created by mcbird on 14/11/24.
 */
public class InputServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        String info = req.getParameter("info");
        PrintWriter out = resp.getWriter();
        out.println("");
        out.println("

" + info + "

"); out.println(""); out.close(); } @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { this.doGet(req, resp); } }

同樣,我們也需要在web.xml下添加一條路由映射規(guī)則:
web.xml:

xml
        input
        servlet.InputServlet
    
    
        input
        /inputServlet
    

這樣我們?cè)?b>input.html中輸入信息后就會(huì)跳轉(zhuǎn)到InputServlet,這樣InputServlet就可以通過(guò)req對(duì)象獲取到info變量的值。

Servlet生命周期

Servlet的生命周期包括加載程序、初始化、服務(wù)、銷毀、卸載5個(gè)部分,如下圖所示。

加載Servlet

當(dāng)Web容器啟動(dòng)時(shí)或者是在第一次使用這個(gè)Servlet時(shí),容器會(huì)負(fù)責(zé)創(chuàng)建Servlet實(shí)例,但是必須在web.xml中指定Servlet的位置,成功加載后,Web容器會(huì)通過(guò)反射的方式對(duì)Servlet進(jìn)行實(shí)例化

初始化

當(dāng)一個(gè)Servlet被實(shí)例化后,容器將調(diào)用init()方法初始化這個(gè)對(duì)象,初始化的目的是為了讓Servlet對(duì)象在處理客戶端請(qǐng)求前完成一系列初始化的工作,像建立數(shù)據(jù)庫(kù)的連接、讀取資源文件信息等,如果初始化時(shí)失敗了,那么Servlet將被直接卸載。

處理服務(wù)

當(dāng)有請(qǐng)求提交時(shí),Servlet將調(diào)用service()方法(常用的是doGet()doPost())進(jìn)行處理。

銷毀

當(dāng)Web容器關(guān)閉或者檢測(cè)到一個(gè)Servlet要從容器中被刪除時(shí),會(huì)自動(dòng)調(diào)用destroy()方法,以便讓實(shí)例釋放掉所占用的資源。

卸載

當(dāng)一個(gè)Servlet調(diào)用完destroy()方法后,此實(shí)例將等待被垃圾收集器所回收,如果需要再次使用此Servlet時(shí),會(huì)重新調(diào)用init()方法進(jìn)行初始化。

  

在默認(rèn)情況下,初始化方法是在第一次使用時(shí)才調(diào)用,你也可以通過(guò)在web.xml中配置servlet1這樣在容器啟動(dòng)時(shí)Servlet就會(huì)被初始化。

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/64275.html

相關(guān)文章

  • 后端語(yǔ)言選型淺談

    摘要:再往后來(lái),也就是這種以事件循環(huán)常駐內(nèi)存為特點(diǎn)的后端平臺(tái),姑且能算是第四代后端平臺(tái)。 前不久回答了一個(gè)關(guān)于后端語(yǔ)言選型的問(wèn)題,寫的回答也讓筆者有了很多感觸,因此在這里談?wù)撓伦约簩?duì)后端語(yǔ)言選型的心得體會(huì),姑且算是拋磚引玉,希望大家能分享各自的心得。 后端語(yǔ)言發(fā)展歷史 Web 后端語(yǔ)言的興起是從靜態(tài)網(wǎng)頁(yè)向動(dòng)態(tài)網(wǎng)頁(yè)的發(fā)展所產(chǎn)生的,最早的動(dòng)態(tài)頁(yè)面技術(shù)就是 CGI 技術(shù),將客戶端的輸入交給 CGI...

    xcc3641 評(píng)論0 收藏0
  • 后端語(yǔ)言選型淺談

    摘要:再往后來(lái),也就是這種以事件循環(huán)常駐內(nèi)存為特點(diǎn)的后端平臺(tái),姑且能算是第四代后端平臺(tái)。 前不久回答了一個(gè)關(guān)于后端語(yǔ)言選型的問(wèn)題,寫的回答也讓筆者有了很多感觸,因此在這里談?wù)撓伦约簩?duì)后端語(yǔ)言選型的心得體會(huì),姑且算是拋磚引玉,希望大家能分享各自的心得。 后端語(yǔ)言發(fā)展歷史 Web 后端語(yǔ)言的興起是從靜態(tài)網(wǎng)頁(yè)向動(dòng)態(tài)網(wǎng)頁(yè)的發(fā)展所產(chǎn)生的,最早的動(dòng)態(tài)頁(yè)面技術(shù)就是 CGI 技術(shù),將客戶端的輸入交給 CGI...

    alighters 評(píng)論0 收藏0
  • Java3y文章目錄導(dǎo)航

    摘要:前言由于寫的文章已經(jīng)是有點(diǎn)多了,為了自己和大家的檢索方便,于是我就做了這么一個(gè)博客導(dǎo)航。 前言 由于寫的文章已經(jīng)是有點(diǎn)多了,為了自己和大家的檢索方便,于是我就做了這么一個(gè)博客導(dǎo)航。 由于更新比較頻繁,因此隔一段時(shí)間才會(huì)更新目錄導(dǎo)航哦~想要獲取最新原創(chuàng)的技術(shù)文章歡迎關(guān)注我的公眾號(hào):Java3y Java3y文章目錄導(dǎo)航 Java基礎(chǔ) 泛型就這么簡(jiǎn)單 注解就這么簡(jiǎn)單 Druid數(shù)據(jù)庫(kù)連接池...

    KevinYan 評(píng)論0 收藏0
  • 后臺(tái)開(kāi)發(fā)常問(wèn)面試題集錦(問(wèn)題搬運(yùn)工,附鏈接)

    摘要:基礎(chǔ)問(wèn)題的的性能及原理之區(qū)別詳解備忘筆記深入理解流水線抽象關(guān)鍵字修飾符知識(shí)點(diǎn)總結(jié)必看篇中的關(guān)鍵字解析回調(diào)機(jī)制解讀抽象類與三大特征時(shí)間和時(shí)間戳的相互轉(zhuǎn)換為什么要使用內(nèi)部類對(duì)象鎖和類鎖的區(qū)別,,優(yōu)缺點(diǎn)及比較提高篇八詳解內(nèi)部類單例模式和 Java基礎(chǔ)問(wèn)題 String的+的性能及原理 java之yield(),sleep(),wait()區(qū)別詳解-備忘筆記 深入理解Java Stream流水...

    spacewander 評(píng)論0 收藏0
  • 后臺(tái)開(kāi)發(fā)常問(wèn)面試題集錦(問(wèn)題搬運(yùn)工,附鏈接)

    摘要:基礎(chǔ)問(wèn)題的的性能及原理之區(qū)別詳解備忘筆記深入理解流水線抽象關(guān)鍵字修飾符知識(shí)點(diǎn)總結(jié)必看篇中的關(guān)鍵字解析回調(diào)機(jī)制解讀抽象類與三大特征時(shí)間和時(shí)間戳的相互轉(zhuǎn)換為什么要使用內(nèi)部類對(duì)象鎖和類鎖的區(qū)別,,優(yōu)缺點(diǎn)及比較提高篇八詳解內(nèi)部類單例模式和 Java基礎(chǔ)問(wèn)題 String的+的性能及原理 java之yield(),sleep(),wait()區(qū)別詳解-備忘筆記 深入理解Java Stream流水...

    xfee 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<