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服务器
答:

  1. 在本地计算机上随便创建一个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资源中的数据。

  2. 启动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服务器无法正常启动的原因一般来说就是如下的两个:

  1. JAVA_HOME环境变量设置问题。
    要想双击bin目录下的startup.bat文件启动Tomcat服务器,首先要做的就是在windows中设置JAVA_HOME环境变量,因为Tomcat服务器的启动需要Java运行环境,所以需要用到这个JAVA_HOME环境变量,如果windows中不存在JAVA_HOME环境变量,则Tomcat服务器是无法启动的。
    注意:JAVA_HOME环境变量设置的是JDK的主目录
  2. 端口占用问题
    因为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,如下图所示:
这里写图片描述

1 0