WEB开发的相关知识

WEB,在英语中web即表示网页的意思,它用于表示Internet主机上供外界访问的资源。Internet上供外界访问的Web资源分为:

  • 静态web资源(如html页面):指web页面中供人们浏览的数据始终是不变的;
  • 动态web资源:指web页面中供人们浏览的数据是由程序产生的,不同时间点访问web页面看到的内容各不相同。


在Java中,动态web资源开发技术统称为JavaWeb,我们学习的重点也是如何使用Java技术开发动态的web资源,即动态web页面。

WEB服务器

学习web开发,需要先安装一台web服务器,然后再在web服务器中开发相应的web资源,供用户使用浏览器访问。这里有一个疑问:学习web开发,为什么必须要先装一个WEB服务器?这是因为:

  1. 在本地计算机上随便创建一个web页面,大家可以访问到吗?
    答案是不可以。这说明不管什么web资源,想被远程计算机访问,都必须有一个与之对应的网络通信程序,当用户来访问时,这个网络通信程序读取web资源数据,并把数据发送给来访者。例如,在C:\a目录下有一个静态web资源——1.html,如下:

    hello world
    

    想要此资源被远程计算机访问,都必须有一个与之对应的网络通信程序,在C:\a目录下创建一个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:\\a\\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);}out.close();in.close();sock.close();server.close();}}
    

    照理来说,运行以上应用程序,然后通过浏览器输入URL地址http://localhost:9999,即可获取到1.html资源中的数据。但不知为何我就是获取不到,如下图所示。

  2. 启动tomcat服务器,把web页面放在tomcat服务器中,用户就可以访问了。原因是Web服务器就是这样一个程序,它用于完成底层网络通迅。使用这些服务器,用户只需要关注web资源怎么编写,而不需要关心资源如何发送到客户端手中,从而极大的减轻了开发者的开发工作量。

常见WEB服务器

常见WEB服务器有如下几种:

  • WebLogic是BEA公司的产品,是目前应用最广泛的Web服务器,支持J2EE规范(总共有13门技术),而且不断的完善以适应新的开发要求,启动界面如图:
  • 另一个常用的Web服务器是IBM公司的WebSphere,支持J2EE规范,启动界面如图:
  • 在小型的应用系统或者有特殊需要的系统中,可以使用一个免费的Web服务器:Tomcat,该服务器支持全部JSP以及Servlet规范,启动界面如图:

其实以上这些服务器,我们只要学会使用Tomcat服务器就好了,所以这将是我们学习的重点。

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包后,可以解压缩到相关文件夹下,我这里解压缩到了D:\tomcat-8.5.38\apache-tomcat-8.5.38。

Tomcat的目录层次结构

启动Tomcat服务器

双击bin目录下的startup.bat文件启动Tomcat服务器。

启动界面为:

测试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.2019-02-25.log"日志文件就是记录Tomcat服务器2019-02-25这一天的运行情况。

    打开catalina.2019-02-25.log文件,查看里面的日志记录信息:

    日志信息里面清楚的记录了Tomcat服务器的运行情况,如果因为8080端口被占用而无法正常启动,就会记录如上所示的异常信息,通过查看异常信息,我们就可知道Tomcat服务器为什么不能够正常启动了!

所以,当Tomcat服务器无法正常启动时,首先检查是否配置了JAVA_HOME环境变量,然后再检查Tomcat服务器启动时的端口是否被别的应用程序占用了。

CATALINA_HOME环境变量的设置问题

安装好Tomcat服务器后,最好不要在系统环境变量中添加如下变量:CATALINA_HOME=D:\tomcat-8.5.38\apache-tomcat-8.5.38(选择你自己的安装路径)。因为双击startup.bat文件,启动的是哪台服务器,是由CATALINA_HOME环境变量决定的,该环境变量指定的是哪台服务器,启动的就是哪台服务器。

Tomcat服务器端口的配置

Tomcat的所有配置都放在conf文件夹之中,里面的server.xml文件是配置的核心文件。如果想修改Tomcat服务器的启动端口,则可以在server.xml配置文件中的Connector节点进行的端口修改。
例如:将Tomcat服务器的启动端口由默认的8080改成80端口,开发时虽然用的是8080端口,但是每次在浏览器访问时,都要输入8080端口号,这样会很烦,所以将其修改为80端口号。

  • Tomcat服务器启动端口默认配置:
  • 将Tomcat服务器启动端口修改成80端口:

这样就把原来Tomcat默认的8080端口改成了80端口了,需要注意的是,一旦服务器中的*.xml文件改变了,则Tomcat服务器就必须重新启动,重新启动之后将重新读取新的配置信息。因为已经在server.xml文件中将Tomcat的启动端口修改成了80,所以Tomcat服务器启动时就以80端口启动了,如下图所示:

访问Tomcat服务器那么就可这样访问,不需要指定什么端口号了:http://localhost,如下图所示:

Java Web基础入门第八讲 Java Web开发入门——初始WEB服务器相关推荐

  1. Java Web基础入门第八十二讲 Listener(监听器)——监听器在开发中的应用(一)

    监听器在JavaWeb开发中用得比较多,下面说一下监听器(Listener)在开发中的常见应用. 统计当前在线人数 在JavaWeb应用开发中,有时候我们需要统计当前在线的用户数,此时就可以使用监听器 ...

  2. 零基础语法入门第八讲 实意动词的否定/提问/回答

    使用助动词进行否定 在助动词do,does,did 后面加not. 一般现在时使用do does 作助动词,一般过去时的使用did.在助动词后面加上 not 构成实义动词的否定形式. do not / ...

  3. r语言各形状编号_R语言入门第八讲:编码分类变量(factor)

    今天第八篇~~~~~~ 在第一讲中我给大家介绍了read.table函数的使用.最近我在处理一个一百万左右的数据,发现read.table函数出了问题.我不知道是在excel转成txt时出的问题还是因 ...

  4. Android零基础入门第64节:揭开RecyclerView庐山真面目

    大家还记得之前在第38期~第50期都在学习列表控件吗,其中用了8期讲ListView的使用,相信都已经掌握好了吧.那么本期一起来学习Android 5.X新增的一个列表组件,那就是RecyclerVi ...

  5. Android零基础入门第44节:ListView数据动态更新

    2019独角兽企业重金招聘Python工程师标准>>> 经过前面几期的学习,关于ListView的一些基本用法大概学的差不多了,但是你可能发现了,所有ListView里面要填充的数据 ...

  6. Android零基础入门第38节:初识Adapter

    2019独角兽企业重金招聘Python工程师标准>>> 在上一节一起了解了ListView的简单使用,那么本节继续来学习与ListView有着千丝万缕的Adapter. 一.了解MV ...

  7. Android零基础入门第40节:自定义ArrayAdapter

    原文:Android零基础入门第40节:自定义ArrayAdapter ListView用起来还是比较简单的,也是Android应用程序中最重要的一个组件,但其他ListView可以随你所愿,能够完成 ...

  8. Android零基础入门第20节:CheckBox和RadioButton使用大全

    原文:Android零基础入门第20节:CheckBox和RadioButton使用大全 本期先来学习Button的两个子控件,无论是单选还是复选,在实际开发中都是使用的较多的控件,相信通过本期的学习 ...

  9. Android零基础入门第24节:自定义View简单使用

    Android零基础入门第24节:自定义View简单使用 原文:Android零基础入门第24节:自定义View简单使用 当我们开发中遇到Android原生的组件无法满足需求时,这时候就应该自定义Vi ...

最新文章

  1. python中的优化器有哪些_Python中有哪些性能优化方法
  2. Elasticsearch技术解析与实战(六)Elasticsearch并发
  3. JSONObject 和 GSON 解析 JSON 数据详解(转)
  4. Logistic 回归(sigmoid函数,手机的评价,梯度上升,批处理梯度,随机梯度,从疝气病症预测病马的死亡率...
  5. loadrunner11录制不成功解决方法(收集)
  6. html打印标签多了一页,webpack打包多页应用,如何处理不同html页面(通过a标签)之间的跳转?...
  7. 20200706:不同路径 II(leetcode63)
  8. VM Workstation 虚拟机安装Ghost XP教程
  9. springboot 集成redis实现session共享
  10. VC++下使用ADO编写数据库程序(关键文章)
  11. ubuntu中Ruby开发集成环境
  12. 单例模式和内部类的初步认识
  13. UNIX操作系统发展史简介
  14. 图解Transformer(完整版)
  15. C语言化简根号(非sqrt)
  16. 【软考】PV操作同步互斥
  17. java微信小程序内容安全 - 检测文本是否含有违法违规内容
  18. 推荐系统相关顶会整理
  19. Android openGl开发详解(二)——通过SurfaceView,TextureView,GlSurfaceView显示相机预览(附Demo)
  20. Java岗面试12家大厂成功跳槽,含泪整理面经

热门文章

  1. 【电子学会】2021年12月图形化三级 -- 跳高比赛
  2. Bootstrap系列之轮播图(Carousel)
  3. win8.1启用ahci后蓝屏
  4. 如何在AidLearning中快速开发人脸识别APP
  5. phpcms v9笔记之模板制作案例
  6. boot返回码规范 spring_SpringBoot自定义异常体系和错误码规范定义(个人经验总结)...
  7. python母亲节代码_python实践分享提高代码质量:使用with自动关闭资源
  8. 石墨烯 量子计算机,打假!2021年,请放过“量子”和“石墨烯”
  9. PCIE总线与IO卡的发展与应用
  10. 中国电信3G格式 CDMA2000 1x和CDMA2000 EVDO 有什么区别?