JavaWeb开发入门(一)
来源:互联网 发布:澳门网络博客公司顶级 编辑:程序博客网 时间:2024/05/29 01:56
WEB开发的相关知识
WEB,在英语中web即表示网页的意思,它用于表示Internet主机上供外界访问的资源。
Internet上供外界访问的Web资源分为:
- 静态web资源(如html 页面):指web页面中供人们浏览的数据始终是不变的。
- 动态web资源:指web页面中供人们浏览的数据是由程序产生的,不同时间点访问web页面看到的内容各不相同。
静态web资源开发技术:html;常用动态web资源开发技术:JSP/Servlet、ASP、PHP等。在Java中,动态web资源开发技术统称为Javaweb,我们学习的重点也是如何使用Java技术开发动态的web资源,即动态web页面。
WEB服务器
学习web开发,需要先安装一台web服务器,然后再在web服务器中开发相应的web资源,供用户使用浏览器访问。
疑问:学习web开发,为什么必须要先装一个WEB服务器?
答:
在本地计算机上随便创建一个web页面,大家可以访问到吗?
答案是不可以。这说明不管什么web资源,想被远程计算机访问,都必须有一个与之对应的网络通信程序,当用户来访问时,这个网络通信程序读取web资源数据,并把数据发送给来访者。
例,在C:/day04
目录下有一个静态web资源——1.html,如下:aaaaaa
想要此资源被远程计算机访问,都必须有一个与之对应的网络通信程序,在
C:/day04
目录下创建一个Server.java
应用程序:import java.net.*;import java.io.*;public class Server { public static void main(String[] args) throws Exception { ServerSocket server = new ServerSocket(9999); Socket sock = server.accept(); FileInputStream in = new FileInputStream("c:\\day04\\1.html"); OutputStream out = sock.getOutputStream(); int len = 0; byte[] buffer = new byte[1024]; while((len=in.read(buffer))>0) { out.write(buffer, 0, len); } in.close(); out.close(); sock.close(); server.close(); }}
用户通过浏览器输入URL地址
http://localhost:9999
,即可获取到1.html资源中的数据。- 启动tomcat服务器,把web页面放在tomcat服务器中,用户就可以访问了。
原因是Web服务器就是这样一个程序,它用于完成底层网络通迅。使用这些服务器,用户只需要关注web资源怎么编写,而不需要关心资源如何发送到客户端手中,从而极大的减轻了开发者的开发工作量。
常见WEB服务器
- WebLogic是BEA公司的产品,是目前应用最广泛的Web服务器,支持J2EE规范(总共有13门技术),而且不断的完善以适应新的开发要求,启动界面如图:
- 另一个常用的Web服务器是IBM公司的WebSphere,支持J2EE规范,启动界面如图:
- 在小型的应用系统或者有特殊需要的系统中,可以使用一个免费的Web服务器:Tomcat,该服务器支持全部JSP以及Servlet规范,启动界面如图:
Tomcat服务器的下载与安装
Tomcat官方站点:http://tomcat.apache.org。点击进入该网站进行下载。
选择左边Navigation中Download下的相关版本进行下载,这里我选择的的是Tomcat 8。每个版本有Binary Distributions和Source Code Distributions两种形式,Binary Distributions下载应用程序,Source Code Distributions下载Tomcat源代码。
注意:
- tar.gz文件是Linux操作系统下的安装版本。
- exe文件是Windows系统下的安装版本。
- zip文件是Windows系统下的压缩版本。
下载好Tomcat zip包后,可以解压缩到相关文件夹下,我这里解压缩到了C:apache-tomcat-8.0.36
。
Tomcat的目录层次结构
启动Tomcat服务器
双击bin目录下的startup.bat文件启动Tomcat服务器。
启动界面为:
一道面试题:请说出互联网上常用协议的工作端口。
答:
- web服务器基于http协议设计的,工作端口通常是80。但开发时通常用的是8080端口。
- 基于smtp协议(邮件发送协议)设计的服务器,工作端口通常是25。
- 基于pop3协议设计的服务器,工作端口通常是110。
- 基于ftp协议设计的服务器,工作端口通常是23。
- 基于https协议设计的服务器,工作端口通常是443。
测试Tomcat服务器
打开浏览器,输入http://localhost:8080
,能显示如下界面代表安装成功。
Tomcat启动常见问题
导致Tomcat服务器无法正常启动的原因一般来说就是如下的两个:
- JAVA_HOME环境变量设置问题。
要想双击bin目录下的startup.bat文件启动Tomcat服务器,首先要做的就是在windows中设置JAVA_HOME环境变量,因为Tomcat服务器的启动需要Java运行环境,所以需要用到这个JAVA_HOME环境变量,如果windows中不存在JAVA_HOME环境变量,则Tomcat服务器是无法启动的。
注意:JAVA_HOME环境变量设置的是JDK的主目录。 端口占用问题
因为Tomcat服务器启动时默认是使用8080端口的,如果这个8080端口被别的应用程序占用了,那么Tomcat服务器就无法正常启动,看到的现象就是”Tomcat服务器启动界面会打印出异常错误信息,然后就自动关闭了“。
由于这个(黑)窗口从启动到关闭的时间非常短,我们很难通过这个窗口看到Tomcat启动时的报错异常信息,因此我们一般只能通过Tomcat服务器记录的log(日志)信息去查看Tomcat服务器的运行情况。
在Tomcat服务器的根目录下有一个logs文件夹。logs文件夹存放Tomcat的日志文件,打开logs文件夹,可以看到里面的log文件,其中有一个以”catalina.yyyy-MM-dd.log”形式命名的log文件,例如”catalina.2016-07-05.log”日志文件就是记录Tomcat服务器2016-07-05这一天的运行情况。
打开catalina.2016-07-05.log文件,看看里面的日志记录信息:05-Jul-2016 22:07:08.323 INFO [main] org.apache.coyote.AbstractProtocol.init Initializing ProtocolHandler ["http-nio-8080"]05-Jul-2016 22:07:08.351 SEVERE [main] org.apache.coyote.AbstractProtocol.init Failed to initialize end point associated with ProtocolHandler ["http-nio-8080"] java.net.BindException: Address already in use: bind at sun.nio.ch.Net.bind0(Native Method) at sun.nio.ch.Net.bind(Net.java:433) at sun.nio.ch.Net.bind(Net.java:425) at sun.nio.ch.ServerSocketChannelImpl.bind(ServerSocketChannelImpl.java:223) at sun.nio.ch.ServerSocketAdaptor.bind(ServerSocketAdaptor.java:74) at org.apache.tomcat.util.net.NioEndpoint.bind(NioEndpoint.java:351) at org.apache.tomcat.util.net.AbstractEndpoint.init(AbstractEndpoint.java:748) at org.apache.coyote.AbstractProtocol.init(AbstractProtocol.java:459) at org.apache.coyote.http11.AbstractHttp11JsseProtocol.init(AbstractHttp11JsseProtocol.java:120) at org.apache.catalina.connector.Connector.initInternal(Connector.java:960) at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:102) at org.apache.catalina.core.StandardService.initInternal(StandardService.java:568) at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:102) at org.apache.catalina.core.StandardServer.initInternal(StandardServer.java:869) at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:102) at org.apache.catalina.startup.Catalina.load(Catalina.java:580) at org.apache.catalina.startup.Catalina.load(Catalina.java:603) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:497) at org.apache.catalina.startup.Bootstrap.load(Bootstrap.java:310) at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:484)
日志信息里面清楚的记录了Tomcat服务器的运行情况,如果因为8080端口被占用而无法正常启动,就会记录如上所示的异常信息,通过查看异常信息,我们就可知道Tomcat服务器为什么不能够正常启动了!
CATALINA_HOME环境变量的设置问题
安装好Tomcat服务器后,最好不要在系统环境变量中添加如下变量:CATALINA_HOME=C:apache-tomcat-8.0.36 (选择你自己的安装路径)
。因为双击startup.bat文件,启动的是哪台服务器,是由CATALINA_HOME环境变量决定的,该环境变量指定的是哪台服务器,启动的就是哪台服务器。
总结:当Tomcat服务器无法正常启动时,首先检查是否配置了JAVA_HOME环境变量,然后再检查Tomcat服务器启动时的端口是否被别的应用程序占用了。
Tomcat服务器端口的配置
Tomcat的所有配置都放在conf文件夹之中,里面的server.xml文件是配置的核心文件。如果想修改Tomcat服务器的启动端口,则可以在server.xml配置文件中的Connector节点进行的端口修改。
例如:将Tomcat服务器的启动端口由默认的8080改成80端口,开发时虽然用的是8080端口,但是每次在浏览器访问时,都要输入8080端口号,这样会很烦,所以将其修改为80端口号。
Tomcat服务器启动端口默认配置:
<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />
将Tomcat服务器启动端口修改成80端口:
<Connector port="80" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />
这样就把原来Tomcat默认的8080端口改成了80端口了,需要注意的是,一旦服务器中的*.xml文件改变了,则Tomcat服务器就必须重新启动,重新启动之后将重新读取新的配置信息。因为已经在server.xml文件中将Tomcat的启动端口修改成了80,所以Tomcat服务器启动时就以80端口启动了,如下图所示:
访问Tomcat服务器那么就可这样访问,不需要指定什么端口号了:http://localhost,如下图所示:
- JavaWeb开发入门(一)
- JavaWeb(一)_JavaWeb开发入门
- JavaWeb学习总结(一)——JavaWeb开发入门
- JavaWeb学习总结(一)——JavaWeb开发入门
- JavaWeb学习总结(一)——JavaWeb开发入门
- JavaWeb学习总结(一)——JavaWeb开发入门
- JavaWeb学习总结(一)——JavaWeb开发入门
- JavaWeb学习总结(一)——JavaWeb开发入门
- JavaWeb学习总结(一)——JavaWeb开发入门
- JavaWeb学习总结(一)——JavaWeb开发入门
- JavaWeb学习总结(一)——JavaWeb开发入门
- JavaWeb学习总结(一)——JavaWeb开发入门
- JavaWeb学习总结(一)——JavaWeb开发入门
- JavaWeb学习总结(一)——JavaWeb开发入门
- JavaWeb学习总结(一)——JavaWeb开发入门
- JavaWeb学习总结(一)——JavaWeb开发入门
- JavaWeb学习总结(一)——JavaWeb开发入门
- JavaWeb学习总结(一)——JavaWeb开发入门
- Cocoapods降低版本及卸载
- UML基础知识入门
- Implement Queue using Stacks
- JAVA多线程同步:volatile,synchronized,Atomic... 比较
- Linux网络编程
- JavaWeb开发入门(一)
- hadoop中exmaple运行参数分析
- UVa11582 巨大的斐波那契数列
- 栈和堆的区别
- C++中引用和指针的区别
- MyBatis 学习总结---理论化知识点(一)
- MQTT(使用mosquitto做broker)做Android推送部分总结
- exec()函数
- 获得json数据