servlet重要的知識點
Java Servlet知識點歸納
Servlet生命周期
1.servlet容器完成加載Servlet類加載和實例化:
當(dāng)servlet容器啟動時,或者servlet容器檢測到需要這個servlet服務(wù)的第一個請求時, servlet容器會加載這個servlet,并生成servlet實例。也可以在兩者之間的任何時候執(zhí)行(配置為load on start up的 servlet是在容器啟動時被加載的)。
2.serlet初始化
當(dāng)servlet實例化后,容器將調(diào)用這個對象的init()方法進行初始化,初始化的目的是在這個實例為請求提供服務(wù)前完成初始化工作,如建立配置連接,獲取配置信息等。servlet實例可以使用容器為其提供的ServletConfig對象,從web應(yīng)用程序的配置信息中(即web.xml文件),獲取初始化的參數(shù)信息
3.服務(wù)
Servlet容器調(diào)用servlet實例的service()方法來對請求進行處理。在service()方法中,servlet實例通過ServletRequest對象,來獲取客戶端的相關(guān)信息和請求信息;處理完成后,servlet實例通過ServletResponse對象來設(shè)置相應(yīng)信息。
4.銷毀
當(dāng)容器檢測到某個servlet實例需要在服務(wù)中移除時,則容器將調(diào)用servlet實例的destroy()方法,以便釋放實例所使用的資源,并將數(shù)據(jù)存儲到持久存儲設(shè)備中。當(dāng)調(diào)用destroy()方法后,容器將釋放此servlet實例,該實例隨后將由垃圾回收器進行垃圾回收處理。如果再有對此實例的服務(wù)請求時,容器將重新創(chuàng)建一個新的servlet實例。
如何獲得請求參數(shù)?
1. request。getParameter(“name”);
2. 如果一個請求參數(shù)有多個值,需要返回一個數(shù)組!
String []size=request.getParameter(“name”);
For(int i=0;i
out.print(size[0]);}
除了參數(shù),還可以獲得其他
1與請求相關(guān)的cookie Cookie [] cookies=request.getCookies();
2與會話相關(guān)的session Session session=request.getSession();
3請求的HTTP方法 String methed=request.getMethed();
Request對象的主要方法:
setAttribute(String name,Object):設(shè)置名字為name的request的參數(shù)值
getAttribute(String name):返回由name指定的屬性值
getAttributeNames():返回request對象所有屬性的名字集合,結(jié)果是一個枚舉的實例
getCookies():返回客戶端的所有Cookie對象,結(jié)果是一個Cookie數(shù)組
getCharacterEncoding():返回請求中的字符編碼方式
getContentLength():返回請求的Body的長度
getHeader(String name):獲得HTTP協(xié)議定義的文件頭信息
getHeaders(String name):返回指定名字的request Header的所有值,結(jié)果是一個枚舉的實例
getHeaderNames():返回所以request Header的名字,結(jié)果是一個枚舉的實例
getInputStream():返回請求的輸入流,用于獲得請求中的數(shù)據(jù)
getMethod():獲得客戶端向服務(wù)器端傳送數(shù)據(jù)的方法
getParameter(String name):獲得客戶端傳送給服務(wù)器端的有name指定的參數(shù)值
getParameterNames():獲得客戶端傳送給服務(wù)器端的所有參數(shù)的名字,結(jié)果是一個枚舉的實例
getParametervalues(String name):獲得有name指定的參數(shù)的所有值
getProtocol():獲取客戶端向服務(wù)器端傳送數(shù)據(jù)所依據(jù)的協(xié)議名稱
getQueryString():獲得查詢字符串
getRequestURI():獲取發(fā)出請求字符串的客戶端地址
getRemoteAddr():獲取客戶端的IP地址
getRemoteHost():獲取客戶端的名字
getSession([Boolean create]):返回和請求相關(guān)Session
getServerName():獲取服務(wù)器的名字
getServletPath():獲取客戶端所請求的腳本文件的路徑
getServerPort():獲取服務(wù)器的端口號
removeAttribute(String name):刪除請求中的一個屬性
RequestDispacherciew=request getRequestDispacher(“result.jsp”);
view.forword(request, response); 請求派發(fā)向客戶端輸出的方法:
Response.setContentType(“application/jar”); 設(shè)置返回瀏覽器內(nèi)容類型!
response.getOutputStream(); 初始化一個輸出流對象。
response.getWrite();
response.secdredirect(); 重定向
response.setHead(”foo”,”bar”);
response.addHead(”foo”,”bar”);
用于在Web應(yīng)用范圍內(nèi)存取共享數(shù)據(jù)的方法。
注:web應(yīng)用范圍具有以下兩層含義:
(1) 表示有web應(yīng)用的生命周期構(gòu)成的時間段.
(2) 表示在web應(yīng)用的生命周期內(nèi)所有web組件的集合。
Ø setAttribute(String name,java.lang.Object object):把一個java對象和一個屬性名綁定,并存放到ServletContext中,參數(shù)name指定屬性名,參數(shù)Object表示共享數(shù)據(jù)。 Ø
getAttribute(String name):根據(jù)參數(shù)給定的屬性名,返回一個Object類型的對象。
Ø getAttributeNames():返回一個Enumeration對象,該對象包含了所有存放在ServletContext中的屬性名。
Ø removeAttribute(String name):根據(jù)參數(shù)指定的屬性名,從servletContext對象中刪除匹配的屬性。
訪問當(dāng)前Web應(yīng)用的資源
Ø getContextpath():返回當(dāng)前web應(yīng)用的URL入口。
Ø getInitParameter(String name):返回web應(yīng)用方位內(nèi)的匹配的初始化參數(shù)值。在web.xml中元素中元素表示應(yīng)用范圍內(nèi)的初始化參數(shù)。 Ø
getInitParameterNames():返回一個Enumeration對象。
Ø getServletContextName():返回web應(yīng)用的名字。即元素中元素的值。
Ø getRequestDispatcher(String path):返回一個用于向其他web組件轉(zhuǎn)發(fā)請求的RequestDispatcher對象。
web.xml文件
web.xml文件是用來初始化配置信息:比如Welcome頁面、servlet、servlet-mapping、filter、listener、啟動加載級別等
5、get 和post 比較
1. get是從服務(wù)器上獲取數(shù)據(jù),post是向服務(wù)器傳送數(shù)據(jù)。
2. get是把參數(shù)數(shù)據(jù)隊列加到提交表單的ACTION屬性所指的URL中,值和表單內(nèi)各個字段一一對應(yīng),在URL中可以看到。post是通過HTTP post機制,將表單內(nèi)各個字段與其內(nèi)容放置在HTML HEADER內(nèi)一起傳送到ACTION屬性所指的URL地址。用戶看不到這個過程。
3. 對于get方式,服務(wù)器端用Request.QueryString獲取變量的值,對于post方式,服務(wù)器端用Request.Form獲取提交的數(shù)據(jù)。
4. get傳送的數(shù)據(jù)量較小,不能大于2KB。post傳送的數(shù)據(jù)量較大,一般被默認(rèn)為不受限制。但理論上,IIS4中最大量為80KB,IIS5中為100KB。
5. get安全性非常低,post安全性較高。但是執(zhí)行效率卻比Post方法好。
6.response.setContentType(“Application/jar”); 說明要返回給客戶一個jar文件。
7.用servelt向客戶端輸出
1.以字符形式輸出
PrintWrite pw=response.getWrite();
pw.println(“acvbbb”);
2.以流的形式輸出
ServletOutStream out=response.getOutputSt();
out.write(“sssssss”);
8.監(jiān)聽器:Listener
它是實現(xiàn)了javax.servlet.ServletContextListener 接口的服務(wù)器端程序,它也是隨web應(yīng)用的啟動而啟動,只初始化一次,隨web應(yīng)用的停止而銷毀。主要作用是: 做一些初始化的內(nèi)容添加工作、設(shè)置一些基本的內(nèi)容、比如一些參數(shù)或者是一些固定的對象等等。
看了“servlet重要的知識點”的還看了:
1.java web基礎(chǔ)知識
2.jsp基礎(chǔ)知識
3.java實習(xí)日記范文3篇
4.java實習(xí)報告范文3篇