Servlet學習筆記

http:傳輸數據

url:定位數據

html:顯示數據

建立連接->發送請求->反應信息->斷開連接


工具:httpwatch數據抓包


寫一個servlert服務

 servlet服務就是一個class,和普通的類一樣

 繼承HttpServlet,導入響應的包(javax.servlet.http.HttpServlet);

 覆蓋services(HtttpServletRequest req,HttpServletResponse res)方法


配置web.xml

<?xml version="1.0" encoding="UTF-8"?>

<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">

  <display-name>web_demo_1</display-name>

  <welcome-file-list>

    <welcome-file>index.html</welcome-file>

    <welcome-file>index.htm</welcome-file>

    <welcome-file>index.jsp</welcome-file>

    <welcome-file>default.html</welcome-file>

    <welcome-file>default.htm</welcome-file>

    <welcome-file>default.jsp</welcome-file>

  </welcome-file-list>

  <servlet>(可以配置多個servlet)

      <servlet-name>two</servlet-name>  配置servlet-name

      <servlet-class>com.sun.Myservlet.Servlet</servlet-class> 配置servlet-class告訴服務器服務類存在

  </servlet>

  <servlet-mapping>

      <servlet-name>two</servlet-name>

      <url-pattern>/222</url-pattern> 配置servlet的url(可以配置多個)

  </servlet-mapping>

</web-app>




servlet配置擴展

<url-pattern>/one/*</urlpattern>配置one下所有的請求

<url-pattern>/one/</urlpattern>配置one的一個請求

<url-pattern>>*.one</urlpattern>配置一.one結尾的所有請求



servlet生命週期:

services服務是一個多線程的程序,一個services服務只有一個實例對象


tomcat服務器啓動時加載服務器類,然後條用init方法初始化少生成一個實例對象,接下來每來一個請求

就啓動一個線程條用services,初始化init只會調用一次,services服務是多線程服務,destroy方法當項目卸載時調用該方法


通過配置servlet加載類

<load-on-startup>num</load-on-startup>服務器啓動時加載類加載順序由num的值決定 值越小先加載


表單應用:doGet和doPost方法

根據表單提交方法調用相應的方法,doget和dopost是由services調用的

services->doGet,doPost ;doGet和doPost 都是普通方法


HttpSevletRequest對象用法(服務器將客戶端的信息封裝在這個對象中)

request對象可以被多個同屬於一個請求的servlet共享(一個會話可以有多個請求)

1.請求行(請求的第一行的信息):

getMethod()獲取請求的方式

getRequestURI()獲取端口協議到?之間的字符

getQueryString()返回?之後的內容

getSchem()獲取協議名稱

getContextPath()返回WEb應用的根目錄一以'/'開始

getRequestURL()獲取?之前的內容

2.請求頭:getHeaderNames();獲取請求頭的參數名,getHeader(parameter)獲取請求頭參數值

3.請求體;

getParameter(parameter)獲取表單域的值

getParameterValues(parmeter);多個同名不同域的參數的值

獲取網絡信息:getRemoteAddr()獲取客戶端地址

getRemotePort()過去客戶端的端口

getLocalAddr()獲取服務器的地址

getLocalPort()獲取服務器的端口

req.getReader() //讀取文本

req.getInputStream() //讀取非文本

HttpServletResponse(服務器端的響應信息被封裝在這個對象中)響應信息由response對象發送給web服務器,由web服務器發給客戶端

構建響應頭:

設置響應頭:response.setHeader("參數","值");

添加響應頭:response.addHeader("參數","值");

構建響應體:

response.getWriter() //輸出文本使用

response.getOutputStream() //輸出非文本使用

text/html,text/xml,text/plain

請求轉發與重定向:

重定向:resp.sendRedirect(url);//重定向客戶端需要發送兩次請求,重定向後面的語句仍然會執行,因此後面一般加return;

轉發:req.getRequestDispatcher(url).forward(req, resp); //請求轉發客戶端只有一次請求。地址的改變是服務器內部的調用,同上其後也加return,轉發時,多個servlet共享一個對象


保存狀態的兩種機制:

Session(服務器端,適合保存大量數據 ,安全效率高)

獲取session對象:httpSession session=req.getSession()返回當前的sessio對象(唯一的,如果存在返回已有的session對象),一個session對象被一個會話所共享

session.getId()返回session對象的ID,一個瀏覽器只對應一個session,每當瀏覽器訪問服務器時服務器就會產生一個session同時session對象置

Cookie爲session的ID,只要Cookie有效,瀏覽器就可以通過Cookie確定session

session.setMaxInactiveInterval()設置session最大的空閒時間

session.invalidate()q強制session失效

Cookie(客戶端,適合保存小量數據,不安全)

構造函數:

生成cookie;

Cookie cookie=new Cookie('name','value');

respon.addCookie(object Cookie) add a Cookie to servlet,this method can be used multiple times to set more than one cookie

setMaxAge() seconds ,a positive number set the maxmun available time,the cookie will be expire after the set time; a negative number means the cookie will  not stored

persistently when the web brower exit the cookie will  expire; zero means the cookie will expire;

getMaxAge()h獲取有效期

setPath()設置路徑

setDomain()設置域名examplple(.vim.com); 以.開頭的

respon.addCookie()告訴服務器coookie對象

讀取Cookie:

cookie.getName()獲取cookie對象屬性的姓名cookie.getValue()獲取cookie屬性的值

修改cookie:

setValue();setMaxAge()

刪除coookie設置cookie的生命週期爲0   setMaxAge()

ServletConfig對象:

ServletConfig.getInitParameter(String para)獲取初始化配置參數的值

ServletConfig.getInitParameterNames()獲取配置文件的初始化參數的名稱,返回值是一個集合

ServletContext對象:代表當前web應用:

getRealPath()

getResoursePaths();

ServletContext對象(重要)



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