1. 程式人生 > >2018/08/06 web tomcat http協議

2018/08/06 web tomcat http協議

Web:

Web分為:靜態的網頁;(如:html,資料不會進行重新整理或改變)
和動態的網頁。(會重新整理資料,在出現ajax技術後使用我們的重新整理更加靈活,稱為區域性重新整理)(如:jsp=html+java程式碼,jquert主要是做動畫和特效)

C/S架構 :客戶端直接與伺服器進行通訊,我們的客戶端需要下載一個C/S軟體(比如:QQ客戶端)。
弊端:對客戶端要求嚴格,必須下載客戶端軟體才能通訊;不便於後期維護。
優點:沒有中間端,傳輸效率高

client/server 客戶端/伺服器

B/S系統架構 :就是多了一箇中轉站,也就是提供一個url進行訪問,通過使用者的訪問不同的url,在伺服器拿不同的資料,所有通訊的都要經過中轉站。
弊端:效率低。
優點:便於後期維護。

常用伺服器:apache、 tomcat、 jboss、 weblogic、 websphere

Tomcat sun公司推出的,本身是java編寫。 特點:免費、效能穩定、先進

Web專案 中webroot資料夾 代表web網站的根目錄。放JSP、cs、gs等一些載入檔案
所有web專案的訪問,首先都是載入的web.xml檔案。 xml記錄配置資訊,

區別:Html是做頁面展示,xml是配置檔案。

Tomcat中 bin 存放:指令碼檔案
Conf 配置檔案
Lib jar包
Webapps web檔案所在目錄,也就是外部訪問的web
Logs 日誌檔案
Temp 臨時檔案
Work 工作目錄

開啟conf資料夾,找到sever檔案,裡面有埠號。
Myeclipece中點開window 選單,最下面的那個preferences找到webcat 載入tomcat。
然後在Myeclipece介面最下面sever中啟動tomcat服務。

然後在瀏覽器中輸入localhost:8080(埠號),就可以連上本地的伺服器釋出的web專案了。

怎麼釋出web專案?
右擊web專案名,選擇run as 然後選擇第三個,就啟動完成了。
怎麼找到專案?
Tomcat 檔案目錄中webapps檔案裡都是已經發布的專案。
如何訪問專案?
http://localhost:8080/webjsp

localhost(代表本機)
8080(代表Tomcat埠號)
webjsp(web專案名字)

http://localhost:8080/webjsp
是訪問到整個專案,在web專案的webroot目錄下的web.xml裡有一個預設的訪問路徑(welcome file),訪問整個專案時,優先訪問的就是那個路徑。
如果要訪問下一級的專案:
http://localhost:8080/webjsp/專案名

Socket程式設計:

Socket通訊:即時通訊(qq,微信) 長連線 特點:不容易被斷開(只要你不斷開連線,他都會一直連線)

開發理念基於tcp(傳輸慢,不丟資料,get)和udp(傳輸快,不穩定,容易丟資料,pose)協議,都是面向連線的協議。

即時通訊:socket 協議與xmpp協議(四次握手)。

Socket通訊,需要客戶端,伺服器端,而因為需要連線多個客戶端,所以伺服器端必須有多個執行緒。所以還要編寫一個執行緒類。
比如:
clientlogin.java
clientlogin2.java
MyThread.java
severlogin.java

http協議
特點:1.簡單 快捷(能夠支援各種資料傳輸(檔案,圖片,文字))
2.無狀態連線
3.一次性連線
4.支援c/s架構,b/s架構
Post 提交,對提交的資料進行加密,拼接的引數在url上不會顯示,沒有資料限制,安全性比較高,一般都用post;

Get 提交,拼接的引數在url上顯示,安全性比較低,適合用在下載 (沒有進行加密,傳輸快)

http請求 : 能直接設定請求頭header 靈活設定編碼格式,大部分網站都會使用http請求

https請求:https = http+ssl證書,這個證書保證了請求的安全性,這個證書是需要買的。

socket 客戶端、伺服器、執行緒類程式碼如下:

客戶端:

package socket123;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.net.Socket;
import java.net.UnknownHostException;

public class kehuduansocket1 {
public static void main(String[] args) {
try {
Socket socket = new Socket(“localhost”, 9191);

        InputStream inputStream = socket.getInputStream();
        OutputStream outputStream = socket.getOutputStream();

        String str = "我是客戶端1";
        outputStream.write(str.getBytes());
        socket.shutdownOutput();





        BufferedReader bufferedReader= new BufferedReader(new InputStreamReader(inputStream));
        String line= null;
        if((line=bufferedReader.readLine())!=null){

            System.out.println(line);
        }
        outputStream.close();
        inputStream.close();
        socket.close();
    } catch (UnknownHostException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }


}

}

伺服器:
package socket123;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;

public class fuwuqisocket {

public static void main(String[] args) {
    try {
        ServerSocket severSocket= new ServerSocket(9191);
        while(true){
            MyThread myThread= new MyThread(severSocket);
        myThread.start();
        }


    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }


}

}

執行緒:
package socket123;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;

public class MyThread extends Thread{
private ServerSocket severSocket;

public MyThread(ServerSocket severSocket) {

    this.severSocket = severSocket;
}



public void run() {
    try {
        Socket socket = severSocket.accept();
        InputStream inputStream = socket.getInputStream();
        OutputStream outputStream = socket.getOutputStream();
        BufferedReader bufferedReader= new BufferedReader(new InputStreamReader(inputStream));

String str= null;
if((str=bufferedReader.readLine() )!= null){

            System.out.println(str);
        }

        String line = "伺服器收到資訊了";
        outputStream.write(line.getBytes());
        outputStream.close();
        inputStream.close();
        socket.close();
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }


}

}