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