成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

淺談Servlet

wayneli / 2832人閱讀

摘要:信息錄入輸入內(nèi)容提交同樣,我們也需要在下添加一條路由映射規(guī)則這樣我們在中輸入信息后就會跳轉(zhuǎn)到,這樣就可以通過對象獲取到變量的值。

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

Servlet處理的基本流程

客戶端通過HTTP提出請求。

Web服務器接受該請求并將其發(fā)送給Servlet。如果這個Servlet還沒有被加載,Web服務器會將它加載到Java虛擬機并執(zhí)行它。

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

Servlet會將處理后的結(jié)果向Web服務器返回應答。

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

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

用Servlet來寫一個“Hello World”

首先我們要明確的一件事是:在處理HTTP請求的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(); } }

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

xml
    hello
    servlet.HelloServlet


    hello
    /helloServlet

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

一個表單實例

如果表單使用的是post的方式提交的,所以在編寫Servlet程序時要使用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
    

這樣我們在input.html中輸入信息后就會跳轉(zhuǎn)到InputServlet,這樣InputServlet就可以通過req對象獲取到info變量的值。

Servlet生命周期

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

加載Servlet

Web容器啟動時或者是在第一次使用這個Servlet時,容器會負責創(chuàng)建Servlet實例,但是必須在web.xml中指定Servlet的位置,成功加載后,Web容器會通過反射的方式對Servlet進行實例化。

初始化

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

處理服務

當有請求提交時,Servlet將調(diào)用service()方法(常用的是doGet()doPost())進行處理。

銷毀

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

卸載

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

  

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

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

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/64275.html

相關(guān)文章

  • 后端語言選型淺談

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

    xcc3641 評論0 收藏0
  • 后端語言選型淺談

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

    alighters 評論0 收藏0
  • Java3y文章目錄導航

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

    KevinYan 評論0 收藏0
  • 后臺開發(fā)常問面試題集錦(問題搬運工,附鏈接)

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

    spacewander 評論0 收藏0
  • 后臺開發(fā)常問面試題集錦(問題搬運工,附鏈接)

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

    xfee 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<