第三天知識點

知識點回顧:html

1.tomcat安裝及目錄介紹web

JAVA_HOME瀏覽器

CATALINA_HOMEtomcat

PATH=%JAVA_HOME%/bin;安全

 

2.靜態web項目、動態web項目服務器

WEB-INF多線程

libapp

classeseclipse

web.xmlpost

3.外部動態web項目

server.xml

<host>

<Context path="" docBase="" />

</host>

 

4.tomcateclipse的整合!tomcat鏡像!

 

 

5.http協議介紹及getpost請求、響應狀態碼

 

報文首部

報文首行

報文頭部

空行

報文體

 

請求報文

get請求

 

post請求

 

get請求和post請求的區別:

1get請求是經過url地址欄來傳遞參數的,而post請求經過報文體來傳遞參數的

2.get請求能夠在瀏覽器地址欄中看到請求參數,而post請求看不到

3.get請求對傳遞的參數有限制,最多容許255個字符,因此數據比較大的話咱們使用post請求!

4.在表單中通常咱們都使用post請求,除了在表單中,頁面中的其它地方基本上都是使用get請求!

響應報文

 

6.servlet快速入門!

1.servletweb的三大組件之一;web的三大組件是指:ServletFilterListener

2.狹義的servlet:servlet

3.廣義的servlet:凡是實現了servlet接口的類都稱之爲servlet!

 

7.如何快速定義一個servlet?

1.自定義實現類,實現servlet接口,實現接口就意味着實現servlet中的方法!

2.web.xml中註冊一下!

 

問題點:

1.建立動態web項目的時候沒有選擇tomcat

 

2.複製類的全路徑的時候!

 

3.項目名書寫:不要8.x

 

 

 

 

今日知識點:

4.servlet的配置

  <!-- 向服務器註冊servlet -->

  <servlet>

   <!-- servlet-name是給咱們使用的,咱們使用這個servlet-nameservlet進行配置! -->

   <servlet-name>AServlet</servlet-name>

   <!-- servlet-class指定全類名,給服務器使用,服務器使用這個全類名建立一個servlet實例【對象】 -->

   <servlet-class>com.neuedu.servlet.AServlet</servlet-class>

  </servlet>

  

  <!-- servlet-mapping作請求映射 -->

  <servlet-mapping>

   <servlet-name>AServlet</servlet-name>

   <!-- 請求映射是經過這個url-pattern來實現的! -->

   <url-pattern>/BServlet</url-pattern>

  </servlet-mapping>

  

  注意點:

1.<url-pattern>標籤中指定的映射路徑沒必要和<servlet-name>標籤指定的內容保持一致!

2.只有你瀏覽器地址欄中請求的url和咱們這裏<url-pattern>標籤中的映射一致的時候,咱們自定義的servlet類纔會處理這個請求!

 

 

5.生命週期

 

servlet是由tomcat服務器來管理的!

 

servlet生命週期:是指servlet對象由產生到銷燬的過程!

 

servlet生命週期涉及的幾個方法:

1.構造器方法:只會在第一次訪問這個servlet的時候調用一次,調用一次就說明servlet是單例的,可是servlet是多線程的,

  非線程安全的,也就是說在servlet中咱們儘可能不要在service方法中操做全局變量!

 

2.init方法:init方法只會在第一次訪問servlet的時候調用一次,對servlet對象進行初始化操做!

 

3.service:service方法會在每次訪問這個servlet的時候都調用一次,並且咱們的業務邏輯也是寫在這個service方法!

 

4.destroy方法:destroy方法只會在咱們的項目卸載的時候調用一次,也就是說在服務器關閉的時候會在服務器關閉的時候調用一次!

 

6.servletConfig

     

 ServletConfig:是一個接口,一個ServletConfig對象只表明當前的servlet類的配置信息。

 1) represent:

 *    <servlet>

<!-- servlet-name是給咱們使用的,咱們使用這個servlet-nameservlet進行配置! -->

<servlet-name>AServlet</servlet-name>

<!-- servlet-class指定全類名,給服務器使用,服務器使用這個全類名建立一個servlet實例【對象】 -->

<servlet-class>com.neuedu.servlet.AServlet</servlet-class>

  </servlet>

 

    2).如何獲取:

由服務器建立,經過init方法的參數直接傳遞給咱們,咱們直接在init方法使用就能夠了!

 

3)功能:

getServletName():獲取當前servlet-name值,也就是獲取servletname

getInitParameter("password"):獲取servlet的初始化參數!

getServletContext():獲取當前web應用!

  

7.ServletContext

1) 表明:表明的是當前web應用,也就是指的web.xml文件中的信息!

 

2)獲取:經過ServletConfig對象的getServletContext()獲取!

 

3) 功能:

1getInitParameter:獲取整個web應用的初始化參數,也就是以下:

  <context-param>

<param-name>user</param-name>

<param-value>lisi</param-value>

  </context-param>

        2)獲取資源的真實路徑:getRealPath()

   虛擬路徑:http://localhost:8080/servlet-demo1/index.html    

   真實路徑:E:\LHF teacher\marsworkspace\servlet-demo1\WebContent\index.html

   

8.MyGenericServlet

1.定義一個抽象類實現servlet接口,保留service方法不去實現,其他方法都實現了!

2.自定義抽象類子類,在web.xml文件中註冊一下這個子類!

 

9.HttpServlet

public class AServlet extends HttpServlet {

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

doPost(request,response);

}

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

}

 

}

 

10.HttpServletRequest

1)表明:表明瀏覽器向服務器發送的請求報文

2) 獲取:tomcat服務器建立,而後作爲參數傳遞給咱們相對應的doGet或者doPost方法!

3) 功能:

     getParameter()獲取請求參數

 getContextPath():獲取當前項目名

 setAttribute/getAttribute:自己就是一個域對象!

 request.getRequestDispatcher("1.html").forward(request, response);能夠實現轉發功能!

 

11.HttpServletResponse

    1)表明:服務器響應給瀏覽器的響應報文

2)獲取:由服務器建立,而後作爲參數傳遞給咱們相對應的doGet或者doPost方法!

3)功能:

response.getWriter().println("<h3>hello world!</h3>");能夠返回給瀏覽器一個頁面或者一個頁面片斷!

response.sendRedirect("/servlet1/1.html"); :能夠作請求的重定向

 

 

12.轉發和重定向

 

轉發:當瀏覽器向服務器發送請求的時候,服務器本身不處理,而是調用其它的web資源進行處理!

 

 

重定向:當瀏覽器向服務器發送請求的時候,服務器返回給瀏覽器一個特殊的響應,這個特殊的響應告訴瀏覽器再向另外一個地址發送一個請求!

 

轉發和重定向的區別:

       發生在瀏覽器端仍是服務器      瀏覽器的請求次數            瀏覽器地址欄是否發生變化               瀏覽器是否可以感知到

轉發[request] 發生在服務器端                 1                     不發生變化                             感知不到

重定向[response]    發生在瀏覽器端                 2                      發生變化                               能感知到!

 

13.登陸練習和註冊練習

 

 

14.編碼問題分析

通訊雙方在進行通訊的時候,其實是將通訊的內容【信息】是按照必定的規則轉化爲二進制進行通信的

而這個必定的規則就是字符的編碼:ascii,gb2312,gbk,iso8859-1,utf-8;

 

在請求到達的時候,另外一方就須要解碼!

 

亂碼緣由:

通訊雙方的編碼方式和解碼方式不一致形成的,

解決辦法:

統一通訊雙方的編碼方式和解碼方式,都使用utf-8編碼!

 

編碼分類:

   請求編碼

瀏覽器編碼---》服務器解碼iso8859-1

   響應編碼

     服務器編碼----》瀏覽器解碼

 服務器端默認使用的是iso8859-1編碼,而瀏覽器默認使用的是gb2312,固然咱們也能夠在頁面中告訴瀏覽器用什麼編碼方式!

 

15.請求編碼

get請求:

  統一瀏覽器和服務器端的編碼格式爲utf-8編碼:在server.xml文件的connector標籤中指定編碼格式爲utf-8編碼:URIEncoding="utf8"  

post請求!

  咱們能夠在post方法中在第一次獲取請求參數以前經過request.setCharacterEncoding("utf-8");來設置解碼格式!

  

 

16.響應編碼

 

 

 

17.路徑問題:

        ①相對路徑和絕對路徑

  絕對路徑

 

  相對路徑

 

②常見的路徑:

url-pattern

轉發的路徑:

> 這兩個的絕對路徑由服務器解析,相對於項目的根目錄

http://主機地址:端口號/項目名/

 

重定向的路徑:

頁面中的路徑:

> 這兩個路徑有瀏覽器解析,相對於服務器的根目錄

http://主機地址:端口號/

 

18.base標籤

相關文章
相關標籤/搜索