tomcat虚拟目录和虚拟主机等相关配置

2023-11-16

一、 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 对象可以监听端口

ServerSocketserversocket = new ServerSocket(6666);

while(true){

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

   

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

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

 

}

MyService.java

// 提供服务

InputStreamin = socket.getInputStream();

Thread.sleep(200);

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

byte[]buffer = new byte[len];

in.read(buffer);

Stringrequest = new String(buffer);

// 截取第一行

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

StringuriName = firstLine.split(" ")[1];

OutputStreamout = socket.getOutputStream();

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

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

if(!file.exists()){

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

    out.close();

    return ;

}

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

FileInputStreamfis = 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>

       <Contextpath=”/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 文件

<?xmlversion="1.0" encoding="ISO-8859-1"?>

 

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

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

    xsi:schemaLocation="http://java.sun.com/xml/ns/javaeehttp://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,才能访问到服务器

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" >

    <Contextpath="" 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)

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

tomcat虚拟目录和虚拟主机等相关配置 的相关文章

随机推荐

  • vue-quill-editor富文本编辑器的汉化版 及 使用心得

    现在网上上有很多的富文本编辑器 但我个人还是非常喜欢Vue家族的vue quill deitor 虽然说它只支持IE10 好 废话不多说直接上代码 现在是见证奇迹的时刻 在vue中使用quill呢 我们需要npm进行安装 安装命令如下 第一
  • spring security 实现免登陆功能

    spring security 实现免登陆功能大体也是基于COOKIE来实现的 主要配置信息
  • Spring Boot系列之修改内置Tomcat版本

    背景 在 spring boot 出来之前 或者没有使用 spring boot 时 Java EE 开发时如果选择 tomcat servlet 需要自己指定 tomcat 版本 此处没有考虑那种直接把打包的 war 直接扔到本地安装的任
  • oracle云避坑小记

    前言 最近白嫖oracle云 用于评估arm64 架构的服务器 发现 oracle 云系统和国内的主要云服务厂商 如 阿里云或者腾讯云 默认的一些策略有所不同 以下是一些避坑指南 一 避坑小记 基于 oracle linux 8 关闭 fi
  • 《代码大全2》第3章 三思而后行,前期准备

    目录 前言 本章主题 3 1 前期准备的重要性 3 1 1 处于不同阶段强调质量 3 1 2 前期准备对 构建活动 的影响 3 1 3 准备不周全的诱因 3 1 4 我理解的准备周全 纯属个人理解 3 2 辨明你所从事的软件的类型 3 2
  • vue.config.js

    vue config js相关的知识信息 一 vue config js是vue打包管理的配置文件 旨在给开发者们自定义自己的配置 1 该文件的根式统一 为导出配置项选项 例如 在对象里面书写我们自己的配置项目 二 具体的配置内容 项目中常
  • 0x00007FFD33144F99处(位于xx.exe中)引发的异常:Microsoft C++异常 查处方法

    一般这样的异常都是try catch语句有异常抛出 比如新建一个工程 int main try throw 1 catch int excep if excep 1 printf throw 1 n return 0 运行就会在输出的调试信
  • CAD球体密堆积3D插件 随机紧密堆积 球体堆积结构

    插件简介 CAD球体密堆积3D插件可用于生成随机紧密堆积的球体模型 插件可指定投放区域 球体集料的粒径范围 球体数量等信息 插件采用模拟重力作用下球体的碰撞堆积行为 实现球体集料的随机紧密堆积模型 插件通过AutoCAD软件进行绘图 生成的
  • CloudCompare——点云标注

    目录 1 概述 2 软件实现 3 合并点云 1 概述 对给定的点云添加分类标签 2 软件实现 1 裁剪点云 裁剪出需要标注的部分 并选中 2 进行标注 工具栏操作 Edit gt Scalar fields gt Add constant
  • [Python入门系列之十]Python 中的类和对象

    Python 中的类和对象 类和对象是面向对象编程 Object Oriented Programming 的基础 类是一种用户定义的数据类型 它封装了属性和方法 用于描述某一类对象的行为和特征 而对象则是类的实例化 是具体的 实际存在的实
  • Vue+ElementUI电商项目(六)

    订单列表 创建订单列表路由组件并添加路由规则 在view中新建orderManagement文件夹 新建Order vue组件 组件中添加代码如下
  • Pandas基本操作——增加、修改和删除

    数据的增加 按列增加数据 按行增加数据 增加多行数据 修改数据 修改列标题 使用DataFrame对象的columns属性直接赋值 使用DataFrame对象的rename方法修改列标题 修改行标题 使用DataFrame对象的index属
  • vue3:el-table多选框设置默认选中,翻页保留选中状态

    问题 el table多选框设置默认选中 进行翻页 之前选中的数据没有保留选中状态
  • 设计模式-模板方法模式

    一 模板方法模式 定义 定义一个操作中的算法骨架 而将一些步骤延迟到子类 模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤 类型 行为型模式 特点 通过把不变的行为搬移到超类 去除子类中的重复代码来体现它的优势 提供了
  • 【4】数据结构与算法--- 数据结构 进阶

    第 3 章 数据结构 进阶 3 1 线性表 线性表 按照某种线性关系存储下来的表 分类 线性表 说明 顺序表 将数据放在一个连续的存储空间 链表 把数据分散存储 按照某种关系连成串分类 单向链表 双向链表 单向循环链表 3 2 顺序表 3
  • python怎么一次输入两个数_python如何一次性输入多个数

    python一次性输入多个数的方法 1 输入两个数字 m n map int input split 2 输入三个及三个以上数字 a b c d map int input split python一次性输入多个数的方法 1 输入一个数字直
  • 在NLP上,CNN、RNN、MLP三者相比各有何优劣

    本文为知乎温颖就如下问题的回答 已授权CSDN转载 若想要实现某个具体的任务 如做关系抽取 实体识别 情感分类等 在不考虑实现的难度的情况下 如何从理论 经验 直觉上去选择最有希望的模型 前段时间做过用不同的神经网络模型做文本分类 情感分析
  • Linux(vi基本用法)

    在Linux下 可以键入vimtutor命令 有一个包含实操的vim教程 1 VI的三种命令模式 1 Command 命令 模式 用于输入命令 2 Insert 插入 模式 用于插入文本 3 Visual 可视 模式 用于视化的的高亮并选定
  • 报错:flask: TypeError: ‘function‘ object is not iterable

    错误 TypeError function object is not iterable Type错误 表示 函数 对象不是可迭代的 这是我在学习flask时在html模板中 进行for循环遍历闪现消息时缺少 导致遍历对象为一个函数 报错代
  • tomcat虚拟目录和虚拟主机等相关配置

    一 WEB 服务器 1 什么是WEB 服务器 就是一台电脑 安装了一个服务器软件 2 为什么需要安装 WEB 服务器 思考问题 从一台计算机的 IE 浏览器如何去访问另一台计算机中的文件 2 1 两台计算机是如何实现通讯的 IP地址 计算机