摘要:的學(xué)習(xí)的開發(fā)是運行在服務(wù)器端的程序,用于處理及響應(yīng)客戶端的請求。是個特殊的類,必須繼承。另外還包含兩個方法創(chuàng)建實例銷毀實例不需要為編寫構(gòu)造器,如果需要對進行初始化的操作,可以重寫方法。調(diào)用的方法銷毀。的是應(yīng)用啟動時立刻創(chuàng)建實例。
Servlet 的學(xué)習(xí) Servlet的開發(fā)
Servlet是運行在服務(wù)器端的程序,用于處理及響應(yīng)客戶端的請求。
Servlet是個特殊的Java類,必須繼承HttpServlet。每個Servlet可以響應(yīng)客戶端的請求。
Servlet相應(yīng)客戶端請求的方法:
doGet():響應(yīng)客戶端的Get請求
doPost():響應(yīng)客戶端的POST請求
doPut():響應(yīng)客戶端的PUT請求
doDelete():響應(yīng)客戶端的DELETE請求
大部分時候,Servlet對于所有請求的響應(yīng)都是一樣的,所以可以只重寫service()方法。
另外HttpServlet還包含兩個方法:
init(ServletConfig config):創(chuàng)建Servlet實例
destroy():銷毀Servlet實例
不需要為Servlet編寫構(gòu)造器,如果需要對Servlet進行初始化的操作,可以重寫init方法。
例子:
//Servlet必須繼承HttpServlet類 @WebServlet(name="firstServlet" ,urlPatterns={"/firstServlet"}) public class FirstServlet extends HttpServlet { //客戶端的響應(yīng)方法,使用該方法可以響應(yīng)客戶端的所有類型請求 public void service(HttpServletRequest request, HttpServletResponse response) throws ServletException,java.io.IOException { //設(shè)置解碼方式 request.setCharacterEncoding("utf-8"); response.setContentType("text/html;charset=utf-8"); //獲取name的請求參數(shù) String name = request.getParameter("name"); //獲取gender的請求參數(shù) String gender = request.getParameter("gender"); //獲取color的請求參數(shù) String[] color = request.getParamterValues("color"); //獲取country的請求參數(shù) String national = request.getParameter("national"); //獲取頁面輸出流 PrintStream out = new PrintStream(response.getOutputStream()); //輸出HTML頁面標(biāo)簽 out.println(""); out.println(""); out.println("Servlet測試 "); out.println(""); out.println(""); //輸出請求參數(shù):name out.println("name "+name + "
"); //輸出請求參數(shù):gender out.println("gender "+gender + "
"); //輸出請求參數(shù):color for(String c:color) { out.println("color " + c +"
"); } //輸出請求參數(shù):national out.println("national "+national); out.println(""); out.println(""); } }
Servlet的配置Servlet和JSP的區(qū)別在于:
Servlet中沒有內(nèi)置對象,原來JSP中的內(nèi)置對象都必須由程序顯式創(chuàng)建
對于靜態(tài)的HTML標(biāo)簽,Servlet都必須使用頁面輸出流逐行輸出
編輯后的Servlet文件要編譯成class文件,然后將文件放在WEB-INF/classes中才能夠響應(yīng)用戶請求。而且還要將Servlet配置在web應(yīng)用中(修改web.xml)
配置Servlet的方式有兩種(Servlet3.0開始):
在Servlet類中使用@WebServlet注解進行配置
通過在web.xml文件中進行配置
@WebServlet注解最常用的屬性
name:指定Servlet的名稱
urlPatterns:指定Servlet處理的url
配置Servlet的注意事項:
使用注解來配置Servlet:
1、不要在web.xml文件的根元素
中制定metadata-complete="true"
2、不要在web.xml文件中配置該文件使用web.xml配置Servlet需要配置兩個部分:
1、配置Servlet的名字:對應(yīng)web.xml文件中的
元素
2、配置Servlet的URL:對應(yīng)web.xml文件中的元素
通過配置web.xml文件的例子(通過注解的方式的例子在上面的代碼中):
JSP/Servlet的生命周期firstServlet FirstServlet firstServlet /firstServlet
生命周期:
(1)創(chuàng)建Servlet實例
(2)Web容器調(diào)用Servlet的init方法,對Servlet進行初始化
(3)Servlet初始化后,將一直存在于容器中,響應(yīng)用戶請求。
(4)調(diào)用Servlet的destroy方法銷毀Servlet。
load-on-startup Servletload-on-startup Servlet的是Web應(yīng)用啟動時立刻創(chuàng)建Servlet實例。
配置load-on-startup的Servlet的方式有兩種:
在web.xml文件中通過
元素的子元素 進行配置 通過@WebServlet注解的loadOnStartup屬性指定
(不管通過哪種方式,都之接收一個整型值,數(shù)字越小代表優(yōu)先級越高)
注解配置:
@WebServlet(loadOnStartup=1) public class TimerServlet extends HttpServlet { public void init(ServletConfig config)throws ServletException { super.init(config); Timer t = new Timer(1000.new ActionListener(){ public void actionPerformed(ActionEvent e) { System.out.println(new Date()); } }); } }
web.xml配置:
訪問Servlet的配置參數(shù)timerServlet hsr.TimerServlet 1
為Servlet配置參數(shù)的方法:
通過@WebServlet的initParam屬性指定
在web.xml文件的
的子元素 指定
通過@WebServlet指定:
@WebServlet(name="testServlet", urlPatterns={"/testServlet"}, initParam={ @WebInitParam(name="Param_name1",value="Param_value1"), @WebInitParam(name="Param_name2",value="Param_value2") })
通過wel.xml指定:
param_name param_name
訪問配置參數(shù):
//獲取ServletConfig對象 ServletConfig config = getServletConfig(); //通過ServletConfig對象獲取參數(shù) String param = config.getInitParameter("param_name");
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://www.ezyhdfw.cn/yun/67774.html
摘要:當(dāng)后繼請求相同的頁面時,容器加載之前生成的類,并且通知去執(zhí)行已經(jīng)存在的字節(jié)碼,從而省去了轉(zhuǎn)換的過程,這也是第一次執(zhí)行頁面時間較長的原因。 以往學(xué)習(xí)的時候大多是看完書或者看完視頻,動手實踐一下就OK了。然而過了一段時間我發(fā)現(xiàn)東西都忘差不多了,需要復(fù)習(xí)才能重新掌握?,F(xiàn)在開始學(xué)習(xí)JavaWeb了,我將在這里記錄自己的學(xué)習(xí)的一點一滴,不僅便于自己以后回顧知識點,也希望能對JavaWeb初學(xué)者有...
摘要:學(xué)習(xí)筆記工作以來就一直在用各種框架,比如,這些,向外提供接口都很方便,但是一直在想它的內(nèi)部是怎樣對外暴露服務(wù)的,正好之前學(xué)習(xí)基礎(chǔ)的時候也沒好好看這塊,抽個時間學(xué)習(xí)總結(jié)一下,也能更好的理解掌握現(xiàn)在的框架。 Servlet學(xué)習(xí)筆記 工作以來就一直在用各種web框架,比如SpringMVC,Spring Cloud這些,向外提供接口都很方便,但是一直在想它的內(nèi)部是怎樣對外暴露服務(wù)的,正好之前...
摘要:時間年月日星期日說明本文部分內(nèi)容均來自慕課網(wǎng)。整體目錄結(jié)構(gòu)如下項目文件用于數(shù)據(jù)持久化配置項目配置配置視圖解析器配置靜態(tài)資源映射配置配置配置自定義指令配置解析器配置,類似于項目啟動類新建,注冊配置類,并將其和當(dāng)前關(guān)聯(lián)。 時間:2017年3月19日星期日說明:本文部分內(nèi)容均來自慕課網(wǎng)。@慕課網(wǎng):http://www.imooc.com教學(xué)示例源碼:無個人學(xué)習(xí)源碼:https://githu...
摘要:當(dāng)不存在子類,也不存在子類時,規(guī)范中定義,在這種情況下,為服務(wù)動態(tài)生成一個名為的實例,并自動探測匹配資源。其中是中的基類,它繼承于情況二當(dāng)不存在子類,但是存在子類時。以上就是規(guī)范中定義的四種服務(wù)的方式。 最近在學(xué)習(xí) jersey 框架。他是 目前比較流行的 基于 JAX-RS 2.0 規(guī)范實現(xiàn)的 RESTful 框架。 我是跟著 《Java RESTful Web Service 實...
閱讀 852·2021-08-23 09:46
閱讀 1002·2019-08-30 15:44
閱讀 2654·2019-08-30 13:53
閱讀 3110·2019-08-29 12:48
閱讀 3969·2019-08-26 13:46
閱讀 1885·2019-08-26 13:36
閱讀 3572·2019-08-26 11:46
閱讀 1499·2019-08-26 10:48