摘要:概述是公司提供的一門用于開發(fā)動態(tài)資源的技術(shù)。把開發(fā)好的類部署到服務(wù)器中。應(yīng)用程序被停止或重新啟動之前,引擎將卸載,并在卸載之前調(diào)用的方法。
servlet概述
Servlet是sun公司提供的一門用于開發(fā)動態(tài)web資源的技術(shù)。
Sun公司在其API中提供了一個servlet接口,用戶若想用發(fā)一個動態(tài)web資源(即開發(fā)一個Java程序向瀏覽器輸出數(shù)據(jù)),需要完成以下2個步驟:
(1)編寫一個Java類,實現(xiàn)servlet接口。 (2)把開發(fā)好的Java類部署到web服務(wù)器中。 (3)按照一種約定俗成的稱呼習(xí)慣,通常我們也把實現(xiàn)了servlet接口的java程序,稱之為Servlet
servlet運行過程:
(1)Servlet程序是由WEB服務(wù)器調(diào)用,web服務(wù)器收到客戶端的Servlet訪問請求后: ①Web服務(wù)器首先檢查是否已經(jīng)裝載并創(chuàng)建了該Servlet的實例對象。如果是,則直接執(zhí)行第④步,否則,執(zhí)行第②步。 ②裝載并創(chuàng)建該Servlet的一個實例對象。 ③調(diào)用Servlet實例對象的init()方法。 ④創(chuàng)建一個用于封裝HTTP請求消息的HttpServletRequest對象和一個代表HTTP響應(yīng)消息的HttpServletResponse對象,然后調(diào)用Servlet的service()方法并將請求和響應(yīng)對象作為參數(shù)傳遞進去。 ⑤WEB應(yīng)用程序被停止或重新啟動之前,Servlet引擎將卸載Servlet,并在卸載之前調(diào)用Servlet的destroy()方法。IDEA創(chuàng)建第一個servlet程序
選中自己的project,打開Project Structure界面》》選中Libraries》》點擊"+"并選擇java》》選擇并選中自己的tomcat/lib/servlet-api.jar》》Apply》》OK
通過idea創(chuàng)建servlet,選中項目的src目錄,右鍵選擇new
創(chuàng)建一個servlet,命名為testServlet
創(chuàng)建成功后testServlet.java文件中有一行關(guān)鍵的代碼:
@WebServlet(name = "TestServlet") 備注:可以加上具體的urlPattern參數(shù)來定義servlet的具體的請求的URL,如下 @WebServlet(name = "TestServlet",urlPatterns = "/test")
示例代碼:
示例代碼分享:
關(guān)于servlet之http請求的request與response對象:
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; import java.util.Arrays; import java.util.Enumeration; import java.util.Arrays; @WebServlet(name = "testServlet",urlPatterns = "/test") public class testServlet extends HttpServlet { protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { } protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //請求頭,請求行,請求體 System.out.println("請求行:"); System.out.println("url:"+request.getRequestURL()); System.out.println("uri"+request.getRequestURI()); System.out.println("methord:"+request.getMethod()); System.out.println("querystring:"+request.getQueryString()); System.out.println("addr:"+request.getRemoteAddr()); System.out.println("host:"+request.getRemoteHost()); System.out.println("--------------------"); System.out.println("請求頭:"); EnumerationheaderNames = request.getHeaderNames(); while(headerNames.hasMoreElements()){ String key = headerNames.nextElement(); String value = request.getHeader(key); System.out.println(key+"="+value); } System.out.println("--------------------"); System.out.println("請求體:"); Enumeration params = request.getParameterNames(); while (params.hasMoreElements()){ String key = params.nextElement(); //接收的參數(shù)中一般有中文,注意編碼 String value = request.getParameter(key); value = new String(value.getBytes("iso-8859-1"),"UTF-8"); System.out.println(key+"="+value); } System.out.println("--------------------"); //開始response //1.二進制流方式輸出 response.setContentType("text/html;charset=UTF-8");//一定要做編碼的設(shè)置,否則瀏覽器可能輸出亂碼 //response.getOutputStream().write("中國".getBytes("UTF-8")); //2.字符流方式輸出 response.getWriter().write("字符流"); } }
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://www.ezyhdfw.cn/yun/74336.html
摘要:系列文章請查看超詳細(xì)的面試題總結(jié)一之基礎(chǔ)知識篇超詳細(xì)的面試題總結(jié)二之基礎(chǔ)知識篇超詳細(xì)的面試題總結(jié)三之集合篇常見問題下面的都是自己之前在學(xué)習(xí)的時候總結(jié)的,對于鞏固的基礎(chǔ)知識應(yīng)該有很大幫助。注意多線程的并發(fā)的讀寫類屬性會導(dǎo)致數(shù)據(jù)不同步。 系列文章請查看: 超詳細(xì)的Java面試題總結(jié)(一)之Java基礎(chǔ)知識篇 超詳細(xì)的Java面試題總結(jié)(二)之Java基礎(chǔ)知識篇 超詳細(xì)的Java面試題總結(jié)(...
摘要:出現(xiàn)的目的同一樣也是要提到頁面中的腳本代碼。標(biāo)準(zhǔn)標(biāo)準(zhǔn)標(biāo)簽庫有個子庫,但隨著發(fā)展,目前常使用的是他的核心庫標(biāo)簽庫標(biāo)簽庫的前綴下載與導(dǎo)入下載從的網(wǎng)站下載的包。 一、JSP技術(shù)1.jsp腳本和注釋jsp腳本:1) ----- 內(nèi)部的java代碼翻譯到service方法的內(nèi)部2) ----- 會被翻譯成service方法內(nèi)部out.print()3) ---- 會被翻譯成servlet的成員的...
摘要:協(xié)議版本請求頭客戶端向服務(wù)器端表示,我能支持什么類型的數(shù)據(jù)。在地址欄上輸入項目名稱向報告,我這個應(yīng)用里面有這個,名字叫做具體的路徑是注冊的映射。的配置,通過這個對象,可以獲取在配置的時候一些信息先說,在寫怎么用,最后說有什么用。 1.Http協(xié)議 什么是協(xié)議 雙方在交互、通訊的時候, 遵守的一種規(guī)范、規(guī)則。 http協(xié)議 針對網(wǎng)絡(luò)上的客戶端 與 服務(wù)器端在執(zhí)行http請求的時候...
摘要:當(dāng)后繼請求相同的頁面時,容器加載之前生成的類,并且通知去執(zhí)行已經(jīng)存在的字節(jié)碼,從而省去了轉(zhuǎn)換的過程,這也是第一次執(zhí)行頁面時間較長的原因。 以往學(xué)習(xí)的時候大多是看完書或者看完視頻,動手實踐一下就OK了。然而過了一段時間我發(fā)現(xiàn)東西都忘差不多了,需要復(fù)習(xí)才能重新掌握。現(xiàn)在開始學(xué)習(xí)JavaWeb了,我將在這里記錄自己的學(xué)習(xí)的一點一滴,不僅便于自己以后回顧知識點,也希望能對JavaWeb初學(xué)者有...
摘要:創(chuàng)建與銷毀對象是發(fā)送請求服務(wù)器就會創(chuàng)建它,當(dāng)響應(yīng)產(chǎn)生時,對象就會銷毀。是容器為開發(fā)人員提供的對象,它提供了對某一資源的已過濾請求調(diào)用鏈的視圖。 一、Listener監(jiān)聽器 Javaweb開發(fā)中的監(jiān)聽器,是用于監(jiān)聽web常見對象 HttpServletRequest HttpSession ServletContext 監(jiān)聽它們的創(chuàng)建與銷毀 屬性變化 session綁...
閱讀 3698·2023-04-25 16:35
閱讀 806·2021-10-11 11:09
閱讀 6406·2021-09-22 15:11
閱讀 3420·2019-08-30 14:03
閱讀 2657·2019-08-29 16:54
閱讀 3408·2019-08-29 16:34
閱讀 3133·2019-08-29 12:18
閱讀 2221·2019-08-28 18:31