站在巨人的肩膀上看Servlet

前言html

以前在公司作項目接觸的太多太雜了,等作完項目後發現有個弊端,好多知識只能說出個大概,不像以前寫博客研究某一個知識點能知其然並知其因此然,好比說Servlet,雖然說以前大概學過,用的時候也會用,可是讓我給別人講,還達不到精簡的境界,今天翻了翻以前寫過的筆記,好像理解比之前深了一層,做此篇,分享給你們。java

如何理解Servlet?web

學前提要:後端

我在這主要強調理解學習Servlet的思惟,要是想細品Servlet,請看以前寫過的博客《Java匹馬行天下之JavaWeb核心技術——Servlet》,更多精彩邀您觀看。學過Servlet的都知道,Servlet3.0以前的版本要使用Servlet,須要在web.xml中進行配置,在web.xml中配置Servlet時能夠配置一些初始化參數,在servlet中能夠經過ServletConfig接口提供的方法來獲取這些參數。這種方法我在以前的博客中寫的很詳細,就很少說,我主要說在Servlet3.0及3.0以後的版本,該版本新增了若干註解,用於簡化Servlet、Filter(過濾器)和監聽器(Listener)的聲明,這使得web.xml部署描述文件再也不是必選的了。瀏覽器

要理解Servlet首先要知道Servlet是JavaWeb的三大組件之一(Servlet、Filter、Listener),還要知道ServletContext是JavaWeb四大域對象之一(PageContext、ServletContext、ServletRequest、HttpSession)。(在這提一下,具體的看前面連接中的博客或者百度)服務器

初步瞭解:
咱們以前學的JavaSE中的一些基礎知識只是在控制檯輸出,如今學習Servlet後不只能在控制檯上輸出,還能跟瀏覽器進行交互,例如客戶端發出登陸請求,或者發出註冊請求都由Servlet來完成處理,在Servlet中一般須要接收請求數據、處理請求、完成響應。eclipse

好,知道Servlet是用來幹什麼的,接下來再說Servlet是如何實現的。maven

具體實現:
在《Java匹馬行天下之JavaWeb核心技術——Servlet》 中有寫到Servlet有三種實現方式,在這我只演示實現Http協議的Servlet,別的實現方式本身看上面的博客,裏面也很全面。ide

我用的工具是IDEA,下載和安裝見《IDEA永久使用》,新建的是Maven項目,對maven不熟的朋友能夠先看《咱們一塊兒走進Maven——知己知彼》,須要在你的電腦上安裝並配置Maven環境,具體安裝配置過程見《Maven的安裝與配置》,完成以上這些,咱們開始Servlet學習之旅。工具

新建Maven項目
如何新建一個Maven項目見《IDEA爲新手專業打造》。

實現Servlet
建立一個Servlet類
站在巨人的肩膀上看Servlet

繼承HttpServlet實現Servlet
站在巨人的肩膀上看Servlet

爲何會出現報紅?
沒有導入Servlet模塊,至關於Myeclipse裏的jar包。

導入Servlet模塊
如何在maven項目中導入Servlet模塊?

先從Maven存儲庫(https://mvnrepository.com/)中搜索須要導入的模塊,如今咱們須要導入Servlet模塊,操做過程以下圖所示
站在巨人的肩膀上看Servlet
站在巨人的肩膀上看Servlet
站在巨人的肩膀上看Servlet
站在巨人的肩膀上看Servlet
站在巨人的肩膀上看Servlet
站在巨人的肩膀上看Servlet
站在巨人的肩膀上看Servlet
站在巨人的肩膀上看Servlet

這時重點來了,若是是用Servlet3.0以前的版本,須要在web.xml中配置響應的參數
站在巨人的肩膀上看Servlet

如今我用的是Servlet3.0以後的版本,只需加一個@WebServlet(「/login」)的註解,經過解析註解實現Servlet,能夠不用在web.xml中配置了。
站在巨人的肩膀上看Servlet
站在巨人的肩膀上看Servlet

package
 servlet;

import
 javax.servlet.
ServletException
;

import
 javax.servlet.annotation.
WebServlet
;

import
 javax.servlet.http.
HttpServlet
;

import
 javax.servlet.http.
HttpServletRequest
;

import
 javax.servlet.http.
HttpServletResponse
;

import
 java.io.
IOException
;

@WebServlet
(
"/login"
)

public

class

ServletDemo

extends

HttpServlet
 {

@Override

protected

void
 doGet(
HttpServletRequest
 req, 
HttpServletResponse
 resp) 
throws

ServletException
, 
IOException
 {

        doPost(req, resp);

    }

@Override

protected

void
 doPost(
HttpServletRequest
 req, 
HttpServletResponse
 resp) 
throws

ServletException
, 
IOException
 {

System
.out.println(
"Hello Servlet!!!"
);

    }

}

設置Tomcat
站在巨人的肩膀上看Servlet

站在巨人的肩膀上看Servlet

站在巨人的肩膀上看Servlet

站在巨人的肩膀上看Servlet

站在巨人的肩膀上看Servlet

站在巨人的肩膀上看Servlet

站在巨人的肩膀上看Servlet

Tomcat配置成功,代碼以下:

package
 servlet;

import
 javax.servlet.
ServletException
;

import
 javax.servlet.annotation.
WebServlet
;

import
 javax.servlet.http.
HttpServlet
;

import
 javax.servlet.http.
HttpServletRequest
;

import
 javax.servlet.http.
HttpServletResponse
;

import
 java.io.
IOException
;

@WebServlet
(
"/login"
)

public

class

ServletDemo

extends

HttpServlet
 {

@Override

protected

void
 doGet(
HttpServletRequest
 req, 
HttpServletResponse
 resp) 
throws

ServletException
, 
IOException
 {

        doPost(req, resp);

    }

@Override

protected

void
 doPost(
HttpServletRequest
 req, 
HttpServletResponse
 resp) 
throws

ServletException
, 
IOException
 {

System
.out.println(
"Hello Servlet!!!"
);
//向控制檯輸出

//設置編碼

        req.setCharacterEncoding(
"utf-8"
);

        resp.setCharacterEncoding(
"utf-8"
);

//設置服務器響應的格式

        resp.setContentType(
"text/html"
);

//從瀏覽器接收參數

String
 name = req.getParameter(
"name"
);

//在控制檯輸出從瀏覽器接收的參數

System
.out.println(name);

//向瀏覽器頁面輸出

        resp.getWriter().println(
"<font color='red'>我要經過Servlet在瀏覽器頁面輸出</font>"
);

    }

}

運行項目
站在巨人的肩膀上看Servlet

站在巨人的肩膀上看Servlet

整個完整的Servlet模塊完成,Servlet的接收請求和完成響應都有展現,對於初學者,能看到這些效果我想或許能有些許興奮吧。。。。。。至少小有收穫了,恭喜你入門。

Servlet理解的要點

入門後要繼續深究,我在這引一下Servlet中須要學習的要點,具體學習看文章開頭分享的博客,裏面很詳細。

ServletContext域對象

Servlet生命週期

請求和響應機制

JSP

此篇名爲站在巨人的肩膀上看Servlet,其實是讓初學者在宏觀的思惟先了解Servlet,而後進行系統的學習,我以爲這樣比直接看Servlet官方語言知識點好理解。Servlet學習仍是很重要的,畢竟它是先後端溝通的橋樑,我只是在學習的時候感受頓悟了一點,要是分享的過程當中有不對的地方,還望你們海涵並指正,謝謝!

相關文章
相關標籤/搜索