JavaWeb複習資料

目錄

1

1.1 前臺

1.1.1 程序開發體系

1.1.2 Web應用概述

1.2 JSP

1.2.1 JSP執行流程

1.2.2 JSP的頁面元素

1.2.3 JSP內置對象

1.3 Servlet

2

2.1 名詞解釋

2.2 get/post區別

2.3 JSP工作原理

2.4 Servlet工作原理

2.5 Java Beans特點

2.6 JSP作用域

2.7 Spring MVC原理

2.8 控制反轉

2.9 依賴注入

3.0 AOP



1

1.1 前臺

1.1.1 程序開發體系

B/S是Brower/Server的縮寫,即瀏覽器/服務器結構。

C/S是Client/Server的縮寫,即客戶端/服務器模式。

1.1.2 Web應用概述

Web使用超文本技術將Internet上的資源以網頁的形式展示出來;

Internet採用超文本和超媒體的信息組織形式,將信息的鏈接擴展到整個Internet上。

Web構成

服務器:包括物理設備和軟件應用程序,物理設備指遠程計算機;軟件應用程序是應用程序,Apache,Tomcat等。

客戶端:通常指客戶使用的本地計算機。

Web應用

Web應用程序是一種使用Web訪問的應用程序。例如:百度。Web應用程序是一種使用HTTP作爲核心通信協議

Web服務器:Web服務器只負責處理HTTP協議,只能發送靜態頁面的內容。Apache、IIS、Nginx。

Web應用服務器:提供訪問商業邏輯的途徑以供客戶端應用程序使用,Tomcat

https://img-blog.csdn.net/20180628141123834?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L21hb194aWFveGk=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70


1.2 JSP

Tomcat搭建

目錄:

bin: 可執行文件(startup.bat, shutdown.bat)

conf: 配置文件(server.xml)

lib: tomcat依賴的jar文件

log:日誌文件(記錄出錯等信息)

temp:臨時文件

webapps: 可執行的項目(將我們開發的項目放入該目錄)

work: 存放由Jsp翻譯成的java(servlet類文件)以及編譯成的class文件

初始頁面的設置(web.xml中)

<welcome-file-list>

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

</welcome-file-list>

1.2.1 JSP執行流程

第一次訪問:服務端JSP翻譯成JAVA,再將JAVA編譯成class文件。

第二次訪問:不需要翻譯和編譯過程,而是直接訪問。

1.2.2 JSP的頁面元素

(1)訪問方式

A.<%局部變量、java語句 %>       

B.<%!字段、方法 %>

C.<%=表達式 %>

(2)Page指令:

<%@ page %>

Page指定的屬性:

Language:jsp頁面使用的腳本語言

pageEncoding: jsp文件自身編碼   jsp->java

contentType:瀏覽器解析jsp的編碼

import: java代碼需要使用的類的包的導入

(3)註釋:

Html註釋<!--    --> 

Java註釋//           /*…*/

Jsp 註釋 <%--     --%>

用戶可以通過瀏覽器查看到Html註釋;而另外兩個註釋看不到。

1.2.3 JSP內置對象

Out:

       輸出對象,功能是向客戶端輸出內容 Out.Print println

Request:

        請求對象,存儲“客戶端向服務端發送的請求信息”

       String getParameter(String name)  : 根據請求的字段名key,返回字段值value

       String[]  getParameterValues(String name): 根據請求的字段名key,返回多個字段值value(checkbox)

       Void setCharacterEncoding(String charset):設置post請求編碼

       getRequestDispatcher(“b.jsp”).forward(request,response);  請求轉發的方式跳轉頁面   ->b.jsp

       getServletContext(): 獲取項目的ServletContext對象

Response:

       響應對象

       Void addCookie(Cookie cookie):服務端想客戶端增加一個cookie對象    

       Void sendRedirect(String location) throws IOException: 頁面跳轉的一種方式(重定向)

       Void setContentType(String type):設置服務端響應的編碼(設置服務端的contentType類型)

Session(服務端):

       session存儲在服務端

       session是在同一個用戶(客戶)請求時共享

       session實現機制:第一次請求時產生一個sessionid並賦值給cookie的jsessionid,然後發送給客戶端,最終實現session的sessionid與cookie的jsessionid一一對應

       String getID:獲取sessionID

       Bool isNew():判斷是否是第一次訪問(新用戶)

       Void invalidate();使session失效。(退出或註銷)

       Object getAttribute()

       void setAttribute()

       void removeAttribute(String name)

       void setMaxInactiveInterval(秒):設置最大有效  非活動時間

       void getMaxInactiveInterval():獲取最大有效  非活動時間

Application  全局對象

       String getContextPath():虛擬路徑

       String getRealPath(String name):絕對路徑(虛擬路徑相對應的絕對路徑,tomcat中可能會有多個虛擬路徑)

 

跳轉的兩種方法

Cookie(客戶端,不是內置對象):服務端產生的,再發送到客戶端保存

Sesson和Cookie區別

Get提交方式

(1)統一每一個變量的編碼new String(name.getBytes(舊編碼),新編碼);//不推薦

(2)修改server.xml,URIEncoding="utf-8"

Post提交方式

  設置post編碼,request.setCharacterEncoding(“utf-8”);

1.3 Servlet

MVC設計模式

       Model ,模型

       View,視圖

       Controller,控制器

Servlet

Java類符合以下的規範:

  • 必須繼承javax.servlet.http.HttpServlet
  • 重寫其中的doGet()或doPost()方法
  • 必須進行配置

Web.xml

       <servlet>

              <servlet-name>...</servlet-class>

              <servlet-class>...</servlet-class>

       </servlet>

       <servlet-mapping>

              <servlet-name>...</servlet-name>

              <url-pattern>...</url-pattern>

       </servlet-mapping>

Servlet3.0後使用@Servlet。

不需要在web.xml中配置,但需要在Servlet類的定義上面編寫註解@WebServlet(“url-mapping”)。

ServletConfig 對象是 Servlet 的專屬配置對象,每個Servlet都單獨擁有一個 ServletConfig 對象,用來獲取 web.xml 中的配置信息:

ServletContext.getServletContext():獲取Servlet上下文對象。(就是jsp中的application)

常見方法:

       getRealPath():絕對路徑

       getContextPath():相對路徑

       setAttribute()

       getAttribute()

       String getInitParameter(String name):在當前Web容器範圍內,獲取名爲name的參數值(初始化參數)

2

2.1 名詞解釋

HTTP協議(HyperText Transfer Protocol,超文本傳輸協議)是因特網上應用最爲廣泛的一種網絡傳輸協議

URL(Uniform Resource Locator,統一資源定位符),它是WWW的統一資源定位標誌,就是指網絡地址。組成:協議類型、主機名和路徑及文件名。

MIME(Multipurpose Internet Mail Extensions)多用途互聯網郵件擴展類型。是設定某種擴展名文件用一種應用程序來打開的方式類型

HTML: 超文本標記語言(英語:HyperText Markup Language,簡稱:HTML)

CSS: 層疊樣式表(英文全稱:Cascading Style Sheets)是一種用來表現HTML(標準通用標記語言的一個應用)或XML(標準通用標記語言的一個子集)等文件樣式的計算機語言。

MVC全名是Model View Controller,是模型(model)-視圖(view)-控制器(controller)的縮寫,一種軟件設計典範,用一種業務邏輯、數據、界面顯示分離的方法組織代碼.

2.2 get/post區別

1.url可見性

  get傳參方式是通過地址欄URL傳遞,是可以直接看到get傳遞的參數,post傳參方式參數URL不可見,get把請求的數據在URL後通過?連接,通過&進行參數分割。psot將從參數存放在HTTP的包體內

2.傳輸數據大小

  get傳遞數據是通過URL進行傳遞,對傳遞的數據長度是受到URL大小的限制,URL最大長度是2048個字符。post沒有長度限制

3.後退頁面

  get後退不會有影響,post後退會重新進行提交

4.緩存

  get請求可以被緩存,post不可以被緩存

5.編碼方式

  get請求只URL編碼,post支持多種編碼方式

6.歷史記錄

  get請求的記錄會留在歷史記錄中,post請求不會留在歷史記錄

7 字符類型

  get只支持ASCII字符,post沒有字符類型限制

2.3 JSP工作原理

1. 當用戶訪問一個JSP頁面時,會向一個Servlet容器(Tomcat等)發出請求;

2. 如果是初始次訪問或頁面有所改動,則servlet容器首先要把JSP頁面轉化爲Servlet代碼,即翻譯成Java,再將其轉化爲class文件;

3. JSP容器負責調用從JSP轉換來的servlet,這些servlet負責提供服務相應用戶請求;如果用戶有多個請求,則容器會建立多個線程處理多個請求;

4. 容器執行字節碼文件,並將其結果返回到客戶端;

2.4 Servlet工作原理

web服務器接受到一個http請求後,web服務器會將請求移交給servlet容器,servlet容器首先對所請求的URL進行解析並根據web.xml配置文件找到相應的處理servlet, 同時將request、response 對象傳遞給它,servlet在處理完請求後會把所有需要返回的信息放入response對象中並返回到客戶端,servlet 一旦處理完請求,servlet 容器就會刷新response對象,並把控制權重新返回給web服務器。

Servlet流程

請求-><url-pattern>->根據<servlet-mapping>中的<servlet-name>去匹配<servlet>中的<servlet-name>,然後尋找到<servlet>中的<servlet-class>,最終將請求交由對應的class執行。

2.5 Java Beans特點

JAVABean

(1)public修飾的類,public無參構造函數

(2)所有屬性都是private,並提供get/set,如果返回boolean,則可以是is/get

       使用層面,java分爲兩大類:

       封裝業務邏輯的JavaBean

       封裝數據的JavaBean

2.6 JSP作用域

       pageContext:Jsp頁面容器,當前頁面有效,跳轉後無效

       Request: 請求對象,存儲“客戶端向服務端發送的請求信息”,同一次請求有效,其他請求無效(請求轉發有效,重定向後無效)

       Session(服務端):會話:同一次會話有效,無論怎麼跳轉都有效;關閉/切換瀏覽器後無效;登錄-》退出之間全部有效

       Application  全局對象:當前項目全局有效(整個項目運行期間有效;切換瀏覽器仍然有效),但是服務器關閉,則無效

2.7 Spring MVC原理

Spring MVC是Spring提供的一個實現了Web MVC設計模式的輕量級Web框架。

流程說明:

(1)客戶端(瀏覽器)發送請求,直接請求到DispatcherServlet。

(2)DispatcherServlet根據請求信息調用HandlerMapping,解析請求對應的Handler。

(3)解析到對應的Handler後,開始由HandlerAdapter適配器處理。

(4)HandlerAdapter會根據Handler來調用真正的處理器開處理請求,並處理相應的業務邏輯。

(5)處理器處理完業務後,會返回一個ModelAndView對象,Model是返回的數據對象,View是個邏輯上的View。

(6)ViewResolver會根據邏輯View查找實際的View。

(7)DispaterServlet把返回的Model傳給View。

(8)通過View返回給請求者(瀏覽器)

2.8 控制反轉

Ioc—Inversion of Control,即“控制反轉”,是一種設計思想。

IOC 容器具有依賴注入功能的容器,它可以創建對象。

傳統應用程序設計中,我們直接在對象內部通過new進行創建對象,是程序主動去創建依賴對象,也就是正轉;

在使用Spring框架之後,對象的實例不再由調用者來創建,而是由Spring容器來創建,Spring容器會負責控制程序之間的關係,而不是由調用者的程序代碼直接控制。這樣,控制權由應用代碼轉移到了Spring容器,控制權發生了反轉,這就是控制反轉。

Spring 提供了以下兩種不同類型的容器。

    Spring BeanFactory 容器

XmlBeanFactory factory = new XmlBeanFactory(new ClassPathResource("Beans.xml"));

    Spring ApplicationContext 容器

ApplicationContext context =new ClassPathXmlApplicationContext("Beans.xml");

     

HelloWorld obj = (HelloWorld) factory.getBean("helloWorld");

<bean id="helloWorld" class="com.tutorialspoint.HelloWorld">

       <property name="message" value="Hello World!"/>

   </bean>

2.9 依賴注入

控制反轉最常用的方式叫做依賴注入(Dependency Injection,簡稱DI),

從Spring容器的角度來看,Spring容器負責將被依賴對象賦值給調用者的成員變量,這相當於爲調用者注入了它依賴的實例,這就是Spring的依賴注入。

Spring 基於構造函數的依賴注入,當容器調用帶有一組參數的類構造函數時,基於構造函數的 DI 就完成了,其中每個參數代表一個對其他類的依賴。

Spring 基於設值函數的依賴注入,當容器調用一個無參的構造函數或一個無參的靜態 factory 方法來初始化你的 bean 後,通過容器在你的 bean 上調用設值函數,基於設值函數的 DI 就完成了。

3.0 AOP

AOP的全稱是Aspect-Oriented Programming,即面向切面編程(也稱面向方面編程)。它是面向對象編程(OOP)的一種補充.

AOP採取橫向抽取機制,將分散在各個方法中的重複代碼提取出來,然後在程序編譯或運行時,再將這些提取出來的代碼應用到需要執行的地方。

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