1. 程式人生 > >JavaWeb複習(一)

JavaWeb複習(一)

文章目錄

一:概述

1.1 web應用

​ 一個JavaWeb應用:java+servlet+jsp

1.2 流程

​ web伺服器用於接受客戶需求,然後向客戶返回一些結果

​ 瀏覽器就是一個軟體,它可以與伺服器通訊,能夠解釋html程式碼,並將web頁面呈現給使用者

​ 流程如下:

在這裡插入圖片描述

​ web上瀏覽器和伺服器的大多數通訊都是使用http協議完成,http協議支援簡單的請求和響應會話,瀏覽器(客戶)傳送一個http請求,伺服器會用一個http響應做應答。

​ 總結就是:1.html告訴瀏覽器如何向用戶顯示內容

​ 2.http是web上客戶和伺服器進行通訊用的協議

​ 3.伺服器使用http向客戶(瀏覽器)傳送html

1.3 HTTP協議

​ http協議是TCP/IP的上層協議(TCP用於保證從一個網路節點向另一個網路節點發送的檔案能完整到達,IP是一個底層協議,負責把資料塊沿路移動/路由到目的地),需要依賴TCP/IP從一處向另一處完整地傳送請求和響應

​ http會話的結構是一個簡單的請求/響應序列:瀏覽器發出請求,伺服器做出響應

1.4 請求流/響應流要素

1.4.1請求流關鍵要素:

​ 1.http方法

​ 2.要訪問的頁面(URL)

​ 3.表單引數(如方法參)

1.4.2響應流關鍵要素:

​ 1.狀態碼(表明請求是否成功)

​ 2.內容型別(包括文字、圖片、html等)

​ 3.內容(具體的html、圖片等)

1.5 http請求

​ http協議有很多請求方法,常用的有get方法和post方法

1.5.1 get請求

​ get是最簡單的http方法,用於要求伺服器獲取一個資源並把資源發過來

特點:

​ 1.get傳送資料是有限的(取決於伺服器)

​ 2.get傳送的資料會追加到url後,所以傳送的資料完全暴露(通過?符隔開,兩部分加在一起,整個串組成完整的請求url)

1.5.1.1get請求解析

//GET代表http方法, /books/test.jsp 為web伺服器上資源的路徑	
//sex=man&name=Professional為引數
//HTTP/1.1 為協議的版本
GET /books/test.jsp?sex=man&name=Professional HTTP/1.1	//請求行
//以下是請求首部
Host: www.wrox.com
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7.6)
Gecko/20050225 Firefox/1.0.1
Connection: Keep-Alive
Accept: text/xml,application/xml,text/html;q=0.9,text/plain

1.5.2 post請求

​ post方法可以請求某個東西,與此同時可以向伺服器傳送一些表單資料

1.5.2.1post請求解析

//POST代表http方法, /advisor/test.do 為web伺服器上資源的路徑	
//HTTP/1.1 為協議的版本
POST /advisor/test.do HTTP/1.1	//請求行
//以下到空行為請求首部
Host: www.wrox.com
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7.6)
Gecko/20050225 Firefox/1.0.1
Content-Type: application/x-www-form-urlencoded
Content-Length: 40
Connection: Keep-Alive
Accept: text/xml,application/xml,text/html;q=0.9,text/plain
(----此處空一行----)
//以下為訊息體
color=dark&taste=malty

1.5.3其他方法

​ 比如head、trace、put、delete、options、connect等方法

1.6 http響應

​ http響應可以包含html,http還會在響應內容前增加首部資訊,而瀏覽器使用首部資訊來幫助處理html頁面

1.6.1響應解析

//以下為http響應首部
//HTTP/1.1為http協議版本 200為http狀態碼 OK為狀態碼的相應文字
HTTP/1.1 200 OK
Cache-Control: no-store, no-cache, must-revalidate
Date: Tue, 26 Jul 2016 09:32:11 GMT
Expires: Tue, 26 Jul 2016 09:32:12 GMT
Vary: Accept-Encoding
Content-Encoding: gzip
Content-Length: 3892
//Content-Type響應首部的值稱為MIME型別,用於告訴瀏覽器要接收的資料是什麼型別,它的值域請求首部的Accept值相關
Content-Type: text/html; charset=utf-8
Last-Modified: Tue, 26 Jul 2016 09:32:12 GMT

1.7 埠

​ 埠是一個16位的數(範圍0~2^16 - 1),用於標識伺服器硬體上一個特定的軟體程式

。它並不是一個可以插入物理裝置的位置,只表示伺服器應用的“邏輯“數。從0~1023的埠號已經保留,由一些眾所周知的服務使用

1.7.1 常用埠

​ 21:FTP

​ 23:Telnet

​ 25:SMTP

​ 37:Time

​ 80:HTTP

​ 443:HTTPS

​ 110:POP3

1.8 Web伺服器

​ 兩個常用的Web伺服器,一個是Apache,另一個是Tomcat

1.9 靜態/動態Web頁面

​ 靜態頁面只是原封不動的在目錄中,伺服器找到靜態頁面,並把它原樣傳給客戶

​ 對於動態頁面而言,Web伺服器上有一個輔助應用可以生成非靜態的即時頁面且能與web伺服器通訊。每當請求到來時,輔助應用具體寫出html,web伺服器再把這個html響應到瀏覽器。輔助應用是一個CGI程式(CGI代表公共閘道器介面)

1.9.1 動態頁面生成流程

​ 舉個動態頁面顯示當前日期的例子:

在這裡插入圖片描述

1.10 Servlet

​ Servlet是Java Servlet的簡稱,稱為小服務程式或服務聯結器,用於互動式地瀏覽和修改資料,生成動態Web內容

1.10.1 Servlet編寫、部署、執行

​ 1.專案目錄樹和tomcat目錄樹如下:

在這裡插入圖片描述

​ 2.在src目錄下編寫testServlet.java

//以下是一個標準的Servlet宣告
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;

public class testservlet extends HttpServlet {
    public void doGet(HttpServletRequest reque, HttpServletResponse response) throws IOException {
        PrintWriter out = response.getWriter();
        java.util.Date today = new java.util.Date();
        out.println("<html> <body> <h1> time is </h1> <br> today </body> </html>" );	//Java巢狀html
    }
}

​ 3.在etc建立一個部署描述檔案web.xml(每個web應用都有一個部署描述檔案)

<?xml version="1.0" encoding="utf-8" ?>
<web-app xmlns="http://java.sun.com/xml/ns/j2ee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         version="2.4">
    <!--一個部署描述檔案可以宣告多個servlet-->
    <!--servlet-name把servlet和servlet-mapping元素繫結在一起-->
    <servlet>
    	<servlet-name>test Servlet</servlet-name>
        <!--servlet-class是java類-->
        <servlet-class>testServlet</servlet-class>	
    </servlet>
    
    <servlet-mapping>
    	<servlet-name>test Servlet</servlet-name>
        <!--url-pattern是客戶所用的請求名-->
        <url-pattern>/Serv1</url-pattern>
    </servlet-mapping>

</web-app>

​ 4.在project目錄下編譯servlet,生成的testServelet.class檔案將會在classes目錄下

java -classpath /yourpath/tomcat/common/lib/Servlet-api.jar -d classes src/testServlet.java

​ 5.將testServelet.class複製到WEB-INF/classes目錄下,再把web.xml複製到WEB-INF目錄下

​ 6.從tomcat目錄下啟動tomcat

bin/startup.sh

​ 7.開啟瀏覽器,輸入

http://localhost:8080/test/Serv1	//test為專案名,Servl為servlet名

1.11 JSP

​ 在html中引入Java,就是jsp。

1.11.1 示例

舉個當前日期的例子:

<html>
    <body>
        The time is
        <%= new java.util.Date() %>
    </body>
</html>

1.11.2 好處

​ 1.使得Java開發人員處理Java,html開發人員開一專心處理Web(僅僅需要學如何呼叫具體Java方法)

​ 2.避免html以某種格式放入一個String中導致錯誤

轉載請註明出處!!!

如果有寫的不對或者不全面的地方 可通過主頁的聯絡方式進行指正,謝謝