1. 程式人生 > >Servlet學習筆記(一、初學servlet)

Servlet學習筆記(一、初學servlet)

描述
serlvet有serlvet容器管理,生成動態的內容,serlvet是平臺獨立的Java類

serlvet容器負責serlvet和使用者的通訊一級呼叫servlet的方法,servlet和客戶的通訊太用“請求/響應”的模式。
功能:
1、接收使用者請求的HTTP協議
2、返回一個HTTP的響應協議。讓瀏覽器再去解析
Serlvet介面
servletConfig介面代表當前servlet,封裝了當前servlet的配置資訊,代表當前servlet ( 區域性變數)。
1)、讀取當前servlet的配置資訊

getServletName() 獲取在web.xml檔案中配置的名字
getInitParameter(string)
獲取當前servlet指定名稱的初始化引數的值
getInitParameterNames()
獲取當前servlet所有初始化引數的名字組成的列舉
getServletContext()
獲取當前web應用的servletContext物件

//初始化
	@Override
	public void init(ServletConfig config) throws ServletException {
		// TODO Auto-generated method stub
		System.out.println("init。。。。。。");
		String servletName = config.getServletName();
		System.out.println(servletName);
		
		//getInitParameter(string) 獲取當前servlet指定名稱的初始化引數的值
		String username = config.getInitParameter("username");
		System.out.println(username);
	
		//getInitParameterNames() 獲取當前servlet所有初始化引數的名字組成的列舉
		Enumeration<String> names = config.getInitParameterNames();
		while(names.hasMoreElements()){
			//獲取當前初始化引數name名
			String name = names.nextElement();
			//獲取初始化引數名
			String value = config.getInitParameter(name);
			System.out.println(name+","+value);
			
		}
		
		// getServletContext() 獲取當前web應用的servletContext物件
		ServletContext context = config.getServletContext();	//獲取當前物件
		System.out.println(context.getContextPath());			//獲取當前web的根目錄
	}

2)、獲取servletContext物件:代表當前web應用 全域性變數
1、servlet就是一個普通的Java類
要實現servlet有三種方法:

實現javax.servlet.Servlet介面
繼承avax.servlet.GenericServlet
繼承avax.servlet.http.HttpServlet(推薦)

2、在web.xml配置和對映Servlet

	配置web.xml
	<!-- 配置和對映servlet -->
  <!-- 註冊一個servlet -->
  <servlet>
  	<!-- 註冊名 -->
  	<servlet-name>hello</servlet-name>
  	<!-- servlet全類名 -->
  	<servlet-class>com.gcz.servlet.HelloServlet</servlet-class>
	<!-- 指定servlet建立和初始化時機 -->
  	<load-on-startup>1</load-on-startup>
  </servlet>
  	
  <!-- 配置servlet -->
  <servlet-mapping>
  	<!-- 必須和註冊名保持一直 -->
  	<servlet-name>hello</servlet-name>
  	<!-- 宣告訪問路徑 -->
  	<url-pattern>/hello</url-pattern>
  </servlet-mapping>
  
訪問路徑:http://localhost:8080/Days11_14/hello

3、servlet容器執行servlet,jsp等元件的執行環境
1)、負責管理servlet宣告週期
2)、宣告週期方法:由servlet容器負責呼叫

類中的方法:

構造器:只執行一次,第一次請求servlet時,建立servlet例項,呼叫該構造器 單例 init
初始化:只被呼叫一次,在建立好servlet例項後,立即呼叫,負責初始化servlet
service方法:被呼叫多次,每一請求都會呼叫service方法,用於響應請求
destroy登出:只調用了一次,在當前servlet所在的web應用被解除安裝的時候,使用者釋放 當前servlet所佔用的資源

4:<load-on-startup>:指定servlet建立和初始化時機
	如果為負數,在第一次請求servlet時建立和初始化
	如果是正數或0在當前web應用載入時建立該例項和初始化
	數值越小越先被建立

	同一個servlet可以被對映到url中,前提兩個註冊名一致
<servlet-mapping>
	1)、在servlet對映到的URL中也可以使用*萬用字元,但是隻能有兩個中固定格式
	一種是“*.副檔名”,另一種是一正斜槓(/)開頭並以“/*結尾,比如*.do  不可以,
兩個不能組合使用

三大域物件

ServletContext
HttpSession
HttpServletRequest
功能:
1)、獲取WEB應用程式的初始化引數
2)、獲取專案的真實路徑
3)、作為域物件,儲存多個各戶共享的資料