知識點回顧: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.tomcat和eclipse的整合!tomcat鏡像!
5.http協議介紹及get與post請求、響應狀態碼
報文首部
報文首行
報文頭部
空行
報文體
請求報文
get請求
post請求
get請求和post請求的區別:
1、get請求是經過url地址欄來傳遞參數的,而post請求經過報文體來傳遞參數的
2.get請求能夠在瀏覽器地址欄中看到請求參數,而post請求看不到
3.get請求對傳遞的參數有限制,最多容許255個字符,因此數據比較大的話咱們使用post請求!
4.在表單中通常咱們都使用post請求,除了在表單中,頁面中的其它地方基本上都是使用get請求!
響應報文
6.servlet快速入門!
1.servlet是web的三大組件之一;web的三大組件是指:Servlet、Filter、Listener
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-name對servlet進行配置! -->
<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-name對servlet進行配置! -->
<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) 功能:
1)getInitParameter:獲取整個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標籤