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();
}
}
}