Servlet1總結

 ServletContext
 1.它是一種域對象
 2.一個Web應用只有一個ServletContext對象
 3.服務器啓動時對象就創建了,當服務器關閉時對象才銷燬
 功能方法:
 (1)獲取ServletContext對象
    ServletContext sc = servletconfig.getServletContext();
    由於GenericServlet類中定義了方法getServletContext(),
    而HttpServlet繼承自GenericServlet,
    我們自定義的Servlet類繼承自HttpServlet,所以類中也有
    方法getServletContext()
    ServletContext sc = this.getServletContext();
  (2) 域功能,內部有map,可以存取數據
      servletContext.setAttribute("name","Tom");//保存數據
      servletContext.setAttribute("name","Jack");//替換數據
      servletContext.getAttribute("name");//獲取數據
      servletContext.removeAttribute("name");//刪除數據
      Enumeration en = servletContext.getAttributeNames();//獲取所有的屬性名
      保存在ServletContext中的數據是被當前Web應用中的所有資源共享
  (3)訪問當前的web應用的資源
      //根據文件相對路徑得到絕對路徑
      String getRealPath(String path)
      G:\apache-tomcat-6\webapps\day6_2\WEB-INF\web.xml
      //將得到的資源包裝成一個InputStream
      InputStream is = servletContext.getResourceAsStream("/WEB-INF/web.xml");
   (4)獲取在web.xml中配置的初始化參數(不屬於一個Servlet)
 <context-param>
  <param-name>school</param-name>
  <param-value>rjxy</param-value>
 </context-param>
  <context-param>
  <param-name>major</param-name>
  <param-value>java</param-value>
 </context-param>
      String value = this.getInitParameter("name");
————————————————————————————————————————
  response:
  是service()方法的參數,類型是HttpServletResponse.
  在客戶端發出請求時,服務器都會創建一個新的response對象,把它傳給service()方法。
  response對象用來完成對客戶端的響應。
  它有4種功能:
  設置響應頭信息
  發送狀態碼
  設置響應正文
  重定向

 1、 response設置響應正文,通過兩種流發送到客戶端的:
  PrintWriter out = response.getWriter();//字符流
  ServletOutputStream out = response.getOutputStream();//字節流 比如下載一個圖片時


  通過字符流發送響應時,要注意字符編碼問題。
  response.getWriter()默認編碼爲ISO-8859-1,不支持中文。
  把字符集設置爲UTF-8,  response.setcharacterEncoding("UTF-8");
  這樣發送到客戶端的就是UTF-8編碼的內容。
  瀏覽器一般默認的解碼字符集爲GB2312或者GBK。
  比如“安陽”  UTF-8編碼爲6個字節,而GB2312編碼爲4個字節。
  解決亂碼: response.setContentType("text/html;charset=UTF-8");

  緩衝區
  response.getWriter()有緩衝區,大小爲8KB,如果響應數據沒有達到8KB,
  所有數據都暫時存放在緩衝區中,不會立刻發送到客戶端。當Servlet執行完畢後,
  服務器纔會將緩衝區中的數據發送到客戶端。如果想立刻發送到客戶端,
  調用response.flushBuffer()方法手動刷新緩衝區。

 2、設置響應頭信息
  告訴客戶端瀏覽器一些關於響應的信息,比如內容編碼,內容長度等。
  //3秒鐘自動跳轉到某個主頁
  response.setHeader("Refresh","3;URL=http://www.aynu.edu.cn");
  //跳轉到本項目內主頁
  response.setHeader("Refresh", "3;URL=/day7/index.jsp");

 3、設置狀態碼
  response.setStatus(200);
  response.setStatus(404);
 
 4、重定向
    本來瀏覽器訪問的是A地址,服務器卻通知瀏覽器去訪問B地址,即再次發送一個新的請求。
    //重定向(到項目外的資源)
    response.sendRedirect("http://www.aynu.edu.cn");
   //重定向(到項目內的資源)
   response.sendRedirect("/day7/FServlet");
   


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章