初学Java Web——Servlet(一)
1. Servlet
1.1 靜態(tài)網(wǎng)頁(yè)和動(dòng)態(tài)網(wǎng)頁(yè)
如果瀏覽器在不同時(shí)刻訪問(wèn)Web服務(wù)器所獲得的頁(yè)面內(nèi)容(源文件)可以發(fā)生變化,那么這個(gè)頁(yè)面就稱(chēng)之為動(dòng)態(tài)網(wǎng)頁(yè)。我們參考以下代碼:
<html><head><script type="text/javascript">document.write(new Date());</script></head><body></body> </html>雖然每隔一段時(shí)間刷新網(wǎng)頁(yè)會(huì)看見(jiàn)時(shí)間的改變,但是網(wǎng)頁(yè)的源文件是沒(méi)有變化的,這種情況就不屬于動(dòng)態(tài)網(wǎng)頁(yè)。
1.2 Servlet簡(jiǎn)介
一個(gè)Servlet程序就是一個(gè)實(shí)現(xiàn)特殊接口的java類(lèi),它由支持Servlet的Web服務(wù)器調(diào)用和運(yùn)行。Servlet程序負(fù)責(zé)處理它所對(duì)應(yīng)的一個(gè)或多個(gè)訪問(wèn)請(qǐng)求,并用于接收客戶(hù)端發(fā)出的訪問(wèn)請(qǐng)求信息和產(chǎn)生的響應(yīng)內(nèi)容
我們可以在Servlet中完成如下功能: 1. 獲取瀏覽器Html頁(yè)面中的Form表單,并通過(guò)一種方式提交到服務(wù)器 2. 創(chuàng)建對(duì)瀏覽器的響應(yīng)消息內(nèi)容 3. 訪問(wèn)服務(wù)器的文件系統(tǒng) 4. 連接數(shù)據(jù)庫(kù) 5. 調(diào)用其他Java類(lèi) **開(kāi)發(fā)Servlet涉及的相關(guān)知識(shí):** 1. 應(yīng)該具備良好的Java編程基礎(chǔ) 2. Servlet是基于Web站點(diǎn)的技術(shù),應(yīng)該對(duì)于Xml、Http協(xié)議以及Html、Css和Js有所了解 3. 應(yīng)該具備數(shù)據(jù)庫(kù)系統(tǒng)的相關(guān)知識(shí),能對(duì)數(shù)據(jù)庫(kù)進(jìn)行基本的管理和操作是必要的
#2. Servlet開(kāi)發(fā) ##2.1 Servlet的第一個(gè)例子 上文已經(jīng)提到 **Servlet是一個(gè)實(shí)現(xiàn)特殊接口的Java類(lèi)**我們可以在API文檔中發(fā)現(xiàn) |--java.lang.Object|--javax.servlet.GenericServlet|--javax.servlet.http.HttpServletHttpServlet是在GenericServlet類(lèi)的基礎(chǔ)上進(jìn)行了一些針對(duì)Http的擴(kuò)充。顯然,一個(gè)類(lèi)只要繼承了GenericServlet或者HttpServlet,它就是一個(gè)Servlet。為了充分利用Http協(xié)議的功能,在一般情況下我們都應(yīng)該繼承HttpServlet。
**Servlet開(kāi)發(fā)步驟:** 1. 新建Web工程MyJavaWeb 2. 編寫(xiě)類(lèi)繼承HttpServlet 3. 配置web.xml文件
package com.xpeng_V.servlet;import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse;public class MyServlet extends HttpServlet {//doGet方法public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {response.getWriter().write("this is my first Servlet");}}配置web.xml文件
<servlet><servlet-name>MyServlet</servlet-name><servlet-class>com.xpeng_V.servlet.MyServlet</servlet-class> </servlet> <servlet-mapping><servlet-name>MyServlet</servlet-name><url-pattern>/MyServlet</url-pattern> </servlet-mapping>注冊(cè)Servlet:
其中,指定了MyServlet.java的注冊(cè)名是MyServlet,servlet的注冊(cè)名可以是任意的,但是不能和其他的servlet重復(fù)。指定了當(dāng)前servlet的完整路徑
映射Servlet:
與servlet的注冊(cè)名相同,是servlet對(duì)外的訪問(wèn)路徑
同一個(gè)Servlet可以被映射到多個(gè)URL上,在上可以使用“”通配符。例如,“.do”表示匹配所有以“.do”結(jié)尾的URL,另一種“/*”表示匹配當(dāng)前路徑下所有的URL。
將工程發(fā)布到Tomcat并重啟服務(wù)器,在瀏覽器地址欄中輸入http://127.0.0.1:8080/MyJavaWeb/MyServlet
**缺省Servlet** 如果某一個(gè)Servlet的映射路徑僅僅為“/”,那么這個(gè)Servlet就是當(dāng)前Web應(yīng)用的缺省Servlet。凡是web.xml文件中不能匹配的元素,就都交給缺省Servlet處理。訪問(wèn)Tomcat服務(wù)器中的靜態(tài)頁(yè)面和圖片時(shí),實(shí)際上訪問(wèn)的就是缺省Servlet,我們將web.xml中的缺省Servlet注釋,就會(huì)發(fā)現(xiàn)瀏覽器的靜態(tài)頁(yè)面無(wú)法正常顯示了。 Tomcat服務(wù)器中的缺省Servlet:
<servlet-mapping><servlet-name>default</servlet-name><url-pattern>/</url-pattern></servlet-mapping>2.2 Servlet生命周期
Servlet的生命周期主要的方法有構(gòu)造方法、init、service、destroy:
public class LifeServlet extends HttpServlet {public LifeServlet() {System.out.println("Servlet被創(chuàng)建...");}@Overridepublic void init(ServletConfig config) throws ServletException {System.out.println("init初始化方法...");}@Overrideprotected void service(HttpServletRequest req, HttpServletResponse resp)throws ServletException, IOException {System.out.println("service方法被調(diào)用");}@Overridepublic void destroy() {System.out.println("destroy被調(diào)用,Servlet被銷(xiāo)毀");} }當(dāng)?shù)谝淮螐臑g覽器訪問(wèn)時(shí),控制臺(tái)輸出如下:
Servlet被創(chuàng)建... init初始化方法... service方法被調(diào)用每一次發(fā)出請(qǐng)求都只會(huì)調(diào)用service方法,當(dāng)服務(wù)器關(guān)閉或者重新發(fā)布web應(yīng)用時(shí)會(huì)調(diào)用destroy方法。
構(gòu)造方法:創(chuàng)建Servlet對(duì)象時(shí)被調(diào)用 Servlet構(gòu)造方法只調(diào)用一次,所以在Tomcat服務(wù)器中Servlet是單例的
init:創(chuàng)建完Servlet對(duì)象后被調(diào)用
service:每次發(fā)出請(qǐng)求時(shí)被調(diào)用
destroy:停止Web服務(wù)器或者重新發(fā)布Web應(yīng)用時(shí)會(huì)銷(xiāo)毀Servlet對(duì)象
轉(zhuǎn)載于:https://www.cnblogs.com/xpeng-V/p/7349686.html
總結(jié)
以上是生活随笔為你收集整理的初学Java Web——Servlet(一)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Angular2学习笔记——NgModu
- 下一篇: 组件化的css-module