一、 WEB 服务器

1. 什么是 WEB 服务器?

就是一台电脑,安装了一个服务器软件

2. 为什么需要安装 WEB 服务器

思考问题: 从一台计算机的 IE 浏览器如何去访问另一台计算机中的文件

2.1  两台计算机是如何实现通讯的?

IP地址(计算机的唯一标识)

IPV4 4个字节的整数,每个字节以 点号 隔开 127.1.12.222  每个字节的取值 0~255

IPV6 16字节

回路ip地址  127.0.0.1

在计算机中程序会绑定在某一个端口  0~65535  尽量用 1024 以上的

连接一台计算机就需要输入 ip 地址和端口号

作为接收方, 应该绑定ip,监听指定的端口

2.2   在本地写程序添加一个服务,供别人来访问, 假设监听 8888 端口

2.3   编码实现了一个本地服务器程序

作用: 管理本地的资源,只要将html页面放到指定的目录下,外界就可以访问了

2.4   安装服务器的目的: 开发好的web资源可以发布到服务器上,这样外界就可以通过浏览器访问了

源程序: MyServer.java

// ServerSocket 对象可以监听端口

ServerSocket serversocket = new ServerSocket(6666);

while(true) {

Socket socket = serversocket.accept(); // 等待客户端的连接请求,一旦有请求过来,就结束阻塞,返回客户端对象

// 一旦有客户来访问, 就另开一个新线程去提供服务, main线程继续等待下一个客户的连接

new Thread(new MyService(socket)).start();

}

MyService.java

// 提供服务

InputStream in = socket.getInputStream();

Thread.sleep(200);

int len = in.available(); // 估计此流不受阻塞能读取的字节数

byte[] buffer = new byte[len];

in.read(buffer);

String request = new String(buffer);

// 截取第一行

String firstLine = request.substring(0, request.indexOf("\n"));

String uriName = firstLine.split(" ")[1];

OutputStream out = socket.getOutputStream();

// 根据需要访问的资源创建 File 对象

File file = new File("src" + uriName);

if(!file.exists()) {

out.write("对不起!您访问的资源不存在!别瞎搞!!".getBytes());

out.close();

return ;

}

// 从文件读, 往浏览器写

FileInputStream fis = new FileInputStream(file);

buffer = new byte[1024];

while ((len = fis.read(buffer)) > 0) {

out.write(buffer, 0, len);

}

socket.close();

二、Tomcat 服务器的安装和配置

1. 使用 tomcat6.0.20.rar 文件解压即完成安装

2. tomcat 就是一个java程序,一定会用到 jre

所以需要配置环境变量 java_home 配置成jdk的安装目录 c:\jdk1.6

tomcat的启动是通过 startup.bat 文件, 实际上 startup.bat 中是去调用

catalina.bat 文件, 而且是通过 %catalina_home%\bin\catalina.bat 去找

所以为了保证服务器启动正常, 需要配置 catalina_home 环境变量为 tomcat的安装目录

3. tomcat 的目录结构

bin : 存放一些执行文件

conf : 存放服务器的配置文件

lib : 存放tomcat 所依赖的 jar 文件

logs: 存放日志文件

temp:  存放临时文件

webapps: web applications 存放所有的web应用程序(web资源)

work: tomcat 的工作目录, jsp翻译成的Servlet就在这个目录下

4. web应用

多个web资源存放在一个目录下即为一个web应用(web应用程序、web工程)

web 应用的目录结构

静态web资源直接放在目录下

java 类放在classes目录下

web.xml 文件负责管理web应用下所有的web资源

所有jar包放在lib目录下

三、 WEB 应用的映射

1. 虚拟目录

一个web应用(服务器上一个目录) 需要供外界访问的路径,需要映射虚拟目录

在 tomcat6 中,放在webapps下的web应用,服务器会自动做映射(将文件夹名称作为虚拟路径)

对于 webapps 目录外的web应用需要手动映射虚拟路径

1.1. 在 server.xml 文件可以配置

<host>

<Context path=”/itcast” docBase=”f:\itcast” />

</host>

1.2. 在 %tomcat目录%\conf\catalina\localhost 下写一个 xml文件

文件名就是 虚拟目录

<Context docBase=”f:\itcast” />

多级目录配置  aaa#bbb.xml 对应 /aaa/bbb

如果文件名 是 ROOT.xml 那就是配置了缺省的web应用, 访问时不需要输入 虚拟目录

2. web.xml

管理 web 应用下所有的web资源

包括咱们后面学的Servlet jsp 都需要在这个文件中做映射

实验: 配置web应用的 首页

在 web 应用下新建目录 WEB-INF ,在此目录下 新建 web.xml 文件

<?xml version="1.0" encoding="ISO-8859-1"?>

<web-app xmlns="http://java.sun.com/xml/ns/javaee"

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"

version="2.5">

<welcome-file-list>

<welcome-file>itcast.html</welcome-file>

</welcome-file-list>

</web-app>

3. 域名解析

一个完整 url

http:\\www.sina.com:80\index.jsp

协议名   主机名         端口号  资源名

IE 访问服务器的原理,

在IE中输入的地址中包含域名,域名就需要被翻译成服务器的IP,才能访问到服务器

IE 浏览器

www.sina.com

sina 服务器

看windows 是否注册了该

主机名

DNS服务器 (网络服务商)

解析域名,获得一个 IP

C:\WINDOWS\system32\drivers\etc\hosts

4. web应用映射的练习:

新建一个 web 应用

配置成缺省的web应用

配置首页

配置tomcat监听端口为80

在 windows 中注册主机名

C:\WINDOWS\system32\drivers\etc\hosts

在c盘下建一个文件夹 baidu 写一个页面 index.html

在 ie 输入  http://www.baidu.com  可以访问该页面

5. 虚拟主机

服务器允许在一个IP上配置多个主机,即虚拟主机

http://www.sina.com:80/index.html

中的 www.sina.com 起了两个作用:

找DNS服务器,作为域名被解析为IP

通过Host头告诉服务器访问的主机名

配置方式: 在 server.xml 文件中配置Host元素, 需要指定主机名、appBase(默认web应用存放目录)

appBase目录下所有的web应用,tomcat会自动映射虚拟路径

<Host name="www.sohu.com"  appBase="F:\sohu\webapps" />

做实验: 给新配置的虚拟主机配置缺省的web应用

<Host name="www.sohu.com"  appBase="F:\sohu\webapps" >

<Context path="" docBase="F:\sohu\webapps\abc" />

</Host>

http://www.sohu.com/abc/a.html

访问一个 a.html 静态web资源, IE 做了什么事

1) 将 www.sohu.com 作为域名发送给DNS , 解析成 IP 地址, 访问一台服务器

2) 发送 Host 头(www.sohu.com),告诉服务器我要访问的虚拟主机 ,服务器拿着Host头找匹配的Host元素

3) 将abc作为虚拟目录,告诉服务器我要访问的web应用 ,服务器拿着 abc 找匹配的web应用

4) 将 a.html 作为资源名, 告诉服务器我要访问的 web 资源, 服务器拿着 a.html 去web.xml文件中找映射

虚拟目录对应是一个web应用的目录,所以虚拟目录也被我们称作web应用路径(web应用的上下文contextpath)

Tomcat方面的知识点相关推荐

  1. 来电通java版_终于有人把Java程序员必学知识点整理出来了,令人有如醍醐灌顶...

    JVM 无论什么级别的Java从业者,JVM都是进阶时必须迈过的坎.不管是工作还是面试中,JVM都是必考题.如果不懂JVM的话,薪酬会非常吃亏(近70%的面试者挂在JVM上了) 详细介绍了JVM有关于 ...

  2. java tomcat源码_详解Tomcat系列(一)-从源码分析Tomcat的启动

    在整个Tomcat系列文章讲解之前, 我想说的是虽然整个Tomcat体系比较复杂, 但是Tomcat中的代码并不难读, 只要认真花点功夫, 一定能啃下来. 由于篇幅的原因, 很难把Tomcat所有的知 ...

  3. Tomcat的部署学习

    Tomcat的安装配置 一.下载 我知道有两个地方可以下载,一个是Apache的官方网站,一个是清华大学开源软件镜像站.两个都挺好用的.(以下载Tomcat8为例) Apache Tomcat® - ...

  4. 终于有人把Java程序员必学知识点整理出来了,令人有如醍醐灌顶

    JVM 无论什么级别的Java从业者,JVM都是进阶时必须迈过的坎.不管是工作还是面试中,JVM都是必考题.如果不懂JVM的话,薪酬会非常吃亏(近70%的面试者挂在JVM上了) 详细介绍了JVM有关于 ...

  5. 线程八大核心+java并发核心知识体系精讲_Java从业者如果不懂这些,面试80%都会挂在这些核心知识上面...

    JVM 无论什么级别的Java从业者,JVM都是进阶时必须迈过的坎.不管是工作还是面试中,JVM都是必考题.如果不懂JVM的话,薪酬会非常吃亏(近70%的面试者挂在JVM上了) 详细介绍了JVM有关于 ...

  6. 2020Java后端开发面试题总结(春招+秋招+社招)

    前言 今天给大家分享一些Java面试中频繁被问到的一些面试题吧,在写之前先给大家说一声:冬至快樂,大家一定记得吃饺子喔~ 文章目录 Java基础--基础知识 Java基础--集合框架/泛型/容器 Ja ...

  7. Java学习之路 -- Java怎么学?

    文章目录 java基础怎么学? 学完基础学什么? 几个常用框架学完学什么? MQ JVM的知识跑不掉 微服务等等 其他 数据结构和算法 java基础怎么学? 当时,作为懵懂的小白,大一学习了c和c++ ...

  8. 都说SSM框架是面试的基础,这76道SSM面试题,坑也太多了!

    Spring面试题 一般问题 1.不同版本的Spring Framework有哪些主要功能? 2.什么是Spring Framework? Spring是一个开源应用框架,旨在降低应用程序开发的复杂度 ...

  9. 2021年金三银四Java面试宝典,横扫社招+春招+秋招!

    前言 回顾多灾多难的2020年,新冠疫情持续肆虐全球,疫情确诊曲线起伏跌宕,由此引发一系列事件–经济萎缩. 财政刺激.疫苗研发.经济复苏等等-无不牵动着市场的神经."后疫情时代"将 ...

最新文章

  1. 字符串相关的类String
  2. 从数据库到迁移调优,鲲鹏高校行太原站正式启动
  3. 转:58到家数据库30条军规解读
  4. Makefile之大型工程项目子目录Makefile的一种通用写法
  5. git push 如何同时推送至两个git仓库
  6. Scrapy实战篇(一)之爬取链家网成交房源数据(上)
  7. POJ3696-The Luckiest number【数论,欧拉定理】
  8. Centos6配置samba服务器并批量添加用户和文件夹
  9. 《剑指offer》第一题(重载赋值运算符)
  10. Android 编码规范:(七)避免使用终结方法
  11. 阿里Java开发规约笔记
  12. pve 虚拟环境 vi/vim不能右键粘贴设置方法
  13. 黄聪:让WordPress主题支持语言本地化(使用poedit软件实现中文翻译功能)
  14. sequelize-auto自动生成model...
  15. 微信小程序设置底部tab选项卡
  16. 『论文复现系列』3.Glove
  17. webrtc streamer前端页面js播放摄像头rtsp流
  18. 疫情信息填表-----auto.js 2.0版
  19. 围棋学习18k到7k
  20. SAP ERP-应用系统运维支持

热门文章

  1. PyInstaller库的安装、使用
  2. JavaScript实现动态规划方法计算特定位置的斐波那契数fibonacciNth算法(附完整源码)
  3. OpenCASCADE:Foundation Classes库组织
  4. wxWidgets:wxList< T >类模板的用法
  5. wxWidgets:wxCommandEvent类用法
  6. boost::safe_numerics模块实现检测到错误表达式评估的测试程序
  7. boost::metaparse::v1::impl::empty_string相关用法的测试程序
  8. boost::math::quadrature::tanh_sinh用法的测试程序
  9. GDCM:gdcm::UUIDGenerator的测试程序
  10. Boost:符号symbols找到null的测试程序