一: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盘的服务器启动。