一:java web開發的相關概念html
1:web分爲靜態web和動態webjava
2:模擬web服務器web
web頁面若是想讓外部網絡訪問,必須經過網絡程序讀取資源,流程:apache
a:用戶經過瀏覽器訪問網絡程序瀏覽器
b:網絡程序讀取資源,而後響應給用戶tomcat
代碼:服務器
1 /** 2 * 3 */ 4 package com.hlcui.testweb; 5 6 import java.io.FileInputStream; 7 import java.io.IOException; 8 import java.io.OutputStream; 9 import java.net.ServerSocket; 10 import java.net.Socket; 11 12 /** 13 * @author Administrator 模擬設計一個web服務器,向外界提供服務 14 */ 15 public class WebServer { 16 17 /** 18 * @param args 19 * @throws IOException 20 */ 21 public static void main(String[] args) throws IOException { 22 ServerSocket serverSocket = new ServerSocket(8888); 23 System.out.println("服務器已經啓動..."); 24 Socket socket = serverSocket.accept(); 25 OutputStream out = socket.getOutputStream(); 26 FileInputStream fis = new FileInputStream("E:\\1.html"); 27 int len = 0; 28 byte[] buf = new byte[1024]; 29 while ((len = fis.read(buf)) > 0) { 30 out.write(buf, 0, len); 31 } 32 fis.close(); 33 out.close(); 34 } 35 36 }
路徑E:/1.html竟然不行,使用E:\\1.html能夠。網絡
固然,有不少公司已經寫好了網絡程序,就是web服務器。socket
二:常見的web服務器post
1:weblogic服務器
2:websphere服務器
3:tomcat服務器
tomcat服務器時開源免費的,是學習工做必備
4:下載tomcat服務器
三:安裝而且啓動web服務器
1:安裝tomcat並啓動
將下載好的文件解壓,而後進入到bin目錄,雙擊startup.bat命令便可
驗證是否啓動成功:只須要打開瀏覽器,而後輸入url地址,本機就輸入localhost:8080
若是沒有修改端口,默認就是8080,出現如下界面說明訪問成功!!!!
2:修改tomcat服務器端口
http協議默認端口是80,若是須要修改tomcat服務器端口,只須要進入conf目錄,而後打開
server.xml文件,找到
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" URIEncoding="utf-8" /> 鏈接器這個元素,只須要把8080修改爲80便可。
修改以後,啓動服務器,再次訪問:瀏覽器地址欄輸入:localhost
3:tomcat服務器使用常見問題
a:java_home環境變量
使用tomcat服務器須要配置java_home環境變量,由於tomcat是使用java寫的,這個通常在學習jdk的
使用都配置過,若是沒有配置,啓動tomcat服務器會一閃而過。
參考:
這一篇文章配置java_home。
b:端口占用問題
若是出現以下異常:
嚴重: Error initializing endpoint
java.net.BindException: Address already in use: JVM_Bind <null>:80
at org.apache.tomcat.util.net.JIoEndpoint.init(JIoEndpoint.java:549)
at org.apache.coyote.http11.Http11Protocol.init(Http11Protocol.java:176)
at org.apache.catalina.connector.Connector.initialize(Connector.java:1049)
at org.apache.catalina.core.StandardService.initialize(StandardService.java:703)
at org.apache.catalina.core.StandardServer.initialize(StandardServer.java:838)
at org.apache.catalina.startup.Catalina.load(Catalina.java:538)
at org.apache.catalina.startup.Catalina.load(Catalina.java:562)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.apache.catalina.startup.Bootstrap.load(Bootstrap.java:261)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:413)
Caused by: java.net.BindException: Address already in use: JVM_Bind
at java.net.PlainSocketImpl.socketBind(Native Method)
at java.net.PlainSocketImpl.bind(PlainSocketImpl.java:383)
at java.net.ServerSocket.bind(ServerSocket.java:328)
at java.net.ServerSocket.<init>(ServerSocket.java:194)
at java.net.ServerSocket.<init>(ServerSocket.java:150)
at org.apache.tomcat.util.net.DefaultServerSocketFactory.createSocket(DefaultServerSocketFactory.java:50)
at org.apache.tomcat.util.net.JIoEndpoint.init(JIoEndpoint.java:538)
... 12 more
說明端口被佔用。
殺死佔用端口的程序
netstat -ano|findstr 8080 查看佔用8080端口程序的pid進程號
tasklist|findstr pid號 查看是哪一個程序佔用了端口
可使用命令 taskkill /pid pid號 或者直接在任務管理器進程欄殺死進程
c:catalina_home 環境變量建議不要配置
若是配置了,那麼它就會去找固定的服務器啓動,若是配置Catalina_home的服務器安裝在d盤,即便你啓動的是c盤的服務器,
它依而後去找d盤的服務器啓動。