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