当前位置: 首页 > news >正文

javaweb学习(day05-TomCat)

一、介绍

1 官方文档

地址: https://tomcat.apache.org/tomcat-8.0-doc/

2 WEB 开发介绍 

2.1 WEB

  • 在英语中 web 表示网/网络资源(页面,图片,css,js)意思,它用于表示 WEB 服务器()供浏览器访问的资源

2.2 Web 资源 

WEB 服务器 ( 主机 ) 上供外界访问的 Web 资源分为:
  • 静态 web 资源(如 html 页面):指 web 页面中供人们浏览的数据始终是不变。
  • 动态 web 资源,比如 Servlet(java)PHP 等。

2.3 静态 web 资源开发技术 

  • HtmlCSS,js

2.4 常用动态 web 资源开发技术

Servlet SpringBoot SpringMVC PHP ASP.NET

JavaWeb 开发技术栈图 

BS CS 开发介绍 

4.1 BS 开发

  • B: browser(浏览器, 种类太多 ff, chrome, ie, edge,)
  • S: Server(服务端, 考虑很多)
  • 示意图

 BS 的解读:

  • (1) 兼容性 , 因为浏览器的种类很多,发现你写的程序,在某个浏览器会出现问题,其它浏览器正常
  • (2) 安全性, 通常情况下,BS 安全性不如 CS 好控制
  • (3) 易用性, BS 好于 CS, 浏览器电脑有
  • (4) 扩展性, BS 相对统一,只需要写 Server

4.2 CS 开发 

  • C: Client(客户端)
  • S: Server(服务端)
  • 示意图

 5 JavaWeb 服务软件

5.1 JavaWeb 服务器软件介绍

  • 学习 JavaWeb 开发,需要先安装 JavaWeb 服务软件【我们把安装了 JavaWeb 服务软件 主机称为 Web 服务器/JavaWeb 服务器】,然后在 web 服务器中开发相应的 web 资源。 [Javaweb 服务器,Mysql 服务器]
  • 学习 JavaWeb 开发,为什么必须要先装 WEB 服务软件?
  • 需要安装, 理解 Tomcat 本质就是一个 Java 程序, 但是这个 Java 程序可以处理来自浏 览器的 HTTP 请求, 和我们前面讲的 java 网络

5.2 手写简单 Web 服务程序

5.2.1 需求 
  • 手写 MyWebServer.java , 体验一下 JavaWeb 服务本质【先初步体会,后面 还会深入 不急,
  • 这里,我们需要使用到 Java 基础(IO/网络)
  • http://localhost:9999 表示 浏览器向 localhost(127.0.0.1)表示本机的 9999 端口发出请求

 其实就是利用网络编程进行服务器与浏览器的通信

 5.2.2 创建 hspedu_mytomcat Java 应用程序

import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;/*** @author 林然* @version 1.0* 这是我们自己写的web服务,可以返回hello.html给浏览器*/
public class MyTomcat {public static void main(String[] args) throws IOException {//1 在9999端口监听ServerSocket serverSocket=new ServerSocket(9999);//如果sewrverSocket没有关闭,就等待连接while (!serverSocket.isClosed()){System.out.println("在我的web服务正在监听9999端口");//2 . 等待浏览器/客户端连接,得到socket//在该socket用于通信Socket socket=serverSocket.accept();//3 通过socket得到输出流OutputStream outputStream=socket.getOutputStream();//4 读取hello.html文件返回即可//得到了一个文件输入流【字符输入流】BufferedReader bufferedReader = new BufferedReader(new FileReader("src/hello.html"));String buf="";while ((buf=bufferedReader.readLine())!=null){//返回给浏览器/客户端outputStream.write(buf.getBytes());}outputStream.close();socket.close();}serverSocket.close();}
}

5.3 常用 JavaWeb 服务软件

5.3.1 Tomcat

  • Apache 组织提供的一种 Web 服务器,提供对 jsp Servlet 的支持。它 是一种轻量级的 javaWeb 容器(服务器),也是当前应用最广的 JavaWeb 服务器(免费)。

5.3.2 Jboss
  • 是一个遵从 JavaEE 规范的、它支持所有的 JavaEE 规范(免费)

5.3.3 GlassFish 
  • Oracle 公司开发的一款 JavaWeb 服务器,是一款商业服务器,达到产品级质量(应用很少)。

 5.3.4 Resin

  • CAUCHO 公司的产品,是一个非常流行的服务器,对 servlet JSP 提供了 良好的支持, 性能也比较优良(收费)。

 5.3.5 WebLogic【很猛】

  • Oracle 公司的产品,支持 JavaEE 规范, 而且不断的完善以适应新的开发要求,适合大型项目(收费,用的不多,适合大公司)

 6  Tomcat

6.1 Tomcat 下载和安装

  • Tomcat 官方站点:http://tomcat.apache.org/
  • 获取 Tomcat 安装程序包

  • 使用 zip 包安装 Tomcat 
可以看到 Tomcat 仍然是支持 jsp 和 el,Tomcat 最好的小伙伴是 JSP+EL

 

 6.2 Tomcat 启动

6.3 Tomcat 启动故障排除 

  •  双击 startup.bat 文件,出现一个小黑窗口然后就没了,原因是因为没有配置好 JAVA_HOME 环境变量Tomcat 本质是一个 Java 程序,所以要 jdk, 会去根据 JAVA_HOME 使用指定 jdk
  • JAVA_HOME 必须全大写
  • JAVA_HOME 中间必须是下划线
  • JAVA_HOME 配置的路径只需要配置到 jdk 的安装目录即可。不需要带上 bin 目录
  • 端口 8080 被占用 [查看端口 netstat -anb, 使用的非常多]
  • 如果其它服务程序占用了 8080 端口,可以关闭该服务,或者修改 Tomcat 服务的默认
  • 端口 8080 [后面讲]

6.4 Tomcat 目录结构 

  • server.xml 用于配置 tomcat 的基本设置(启动端口,关闭端口, 主机名)
  • wex.xml 用于指定 tomcat 运行时配置(比如 servlet ..)
  • webapps 目录是存放 web 应用,就是网站

6.5 catalina 启动 Tomcat 

6.6 停止 Tomcat 

  • 点击 tomcat 服务器窗口,直接点击的关闭按钮

进入 Tomcat bin 目录下的 shutdown.bat 双击,就可以停止 Tomcat 服务器(推荐) 

6.7 修改 Tomcat 服务端口 

  • Tomcat 目录下的 conf 目录,修改 server.xml 配置文件

http://localhost , 默 认 是 访 问 80 端 口 , http://localhost 等 价 http://localhost:80

6.8 Tomcat 服务中部署 WEB 应用                                         

6.8.1 基本概念
  • 什么是Web应用

  • WEb应用组成 
        一个 WEB 应用由多个 WEB 资源或其它文件组成,包括 html 文件、 css 文件、 js 文件、动
web 页面、 java 程序、支持 jar 包、配置文件等。开发人员在开发 web 应用时,按照
定目录结构 存放这些文件。否则,在把 web 应用交给 web 服务器管理时,不仅可能会使
web 应用无法访问,还会导致 web 服务器启动报错 

  • JavaWeb程序/应用/工程目录结构 

6.8.2 部署方式 
  • 部署方式1:将 web 工程的目录拷贝到 Tomcat webapps 目录下

  •  部署方式2:通过配置文件来部署(只做介绍)
Tomcat 下的 conf 目录 \Catalina\localhost\ , 配置文件,比如 hsp.xml( 提醒:知道
Tomcat 通过配置,可以把一个 web 应用,映射到指定的目录,可以解决磁盘空间分配

  • 访问web工程: http://ip[域名]:port/hsp/index.html 就表示访问 D:\album 目录下index.html
 6.8.3 ROOT 的工程的访问
  •  在浏览器地址栏中输入访问地址如下:http://ip[域名]:port,没有Web工程/应用名时,
  • 默认访问的是 ROOT 工程
  • 在浏览器地址栏中输入的访问地址如下: http://ip[域名]:port/工程名/ ,没有资源名,
  • 默认访问 index.jsp 页面 

6.9 浏览器访问 Web 服务过程详解 

6.9.1 回顾前面的 JavaWeb 开发技术栈图
 6.9.2 浏览器访问 web 服务器文件 UML 时序图

下面,我们对浏览器访问 web 服务器资源(html,css,图片,js)做详解,通过一个时序图加强 对这个重要过程的理解, 重要,核心.

关于具体的Tomcat应用到web项目,可见资料的tomcat里面的参考文档

相关文章:

javaweb学习(day05-TomCat)

一、介绍 1 官方文档 地址: https://tomcat.apache.org/tomcat-8.0-doc/ 2 WEB 开发介绍 2.1 WEB 在英语中 web 表示网/网络资源(页面,图片,css,js)意思,它用于表示 WEB 服务器(主机)供浏览器访问的资源 2.2 Web 资源 WEB 服务器 ( 主机 ) 上供外界访问的 …...

【Unity】构建简单实用的年份选择器(简单原理示范)

在许多应用程序和游戏中,年份选择是一个常见的需求。无论是在日历应用程序中查看事件,还是在历史类游戏中选择时间段,年份选择器都是用户体验的重要组成部分,下面实现一个简易的年份选择器。 一、效果预览: 目录 一、…...

LeetCode 2120.执行所有后缀指令

现有一个 n x n 大小的网格,左上角单元格坐标 (0, 0) ,右下角单元格坐标 (n - 1, n - 1) 。给你整数 n 和一个整数数组 startPos ,其中 startPos [startrow, startcol] 表示机器人最开始在坐标为 (startrow, startcol) 的单元格上。 另给你…...

租赁小程序|租赁系统|租赁软件开发带来高效运营

随着社会的不断发展和科技的不断进步,越来越多的企业开始关注设备租赁业务。设备租赁作为一种短期使用设备的方式,为企业提供了灵活和成本节约的优势。针对设备租赁业务的管理和提升企业竞争力的需求,很多企业选择定制开发设备租赁系统。本文…...

大数据集群管理软件 CDH、Ambari、DataSophon 对比

文章目录 引言工具介绍CDHAmbariDataSophon 对比分析 引言 大数据集群管理方式分为手工方式和工具方式,手工方式一般指的是手动维护平台各个组件,工具方式是靠大数据集群管理软件对集群进行管理维护。本文针对于常见的方法和工具进行比较,帮助…...

插值、逼近、拟合、光顺

插值 插值(Interpolation)是数学和计算科学中的一个重要概念,它指的是通过已知的一系列数据点,构造一个函数或曲线,并据此估计未知数据点的值。这个过程通常发生在已知数据点之间,用于预测或估算在这些已知…...

Java单元测试 - mock静态方法

文章目录 1. mock 静态方法2. 升级 maven 依赖3. 示例 1. mock 静态方法 mockito 在 3.4.0 版本之后&#xff0c;开始支持 mock static method。 2. 升级 maven 依赖 <dependency><groupId>org.mockito</groupId><artifactId>mockito-core</artif…...

Unity使用PlayableAPI 动态播放动画

1.初始化animator&#xff0c;创建Playable图&#xff0c;创建动画Playable private void InitAnimator(GameObject headGo) {if (headGo){_headAnimator headGo.GetComponent<Animator>();if (_headAnimator){_headAnimator.cullingMode AnimatorCullingMode.AlwaysA…...

unity使用Registry类将指定内容写入注册表

遇到一个新需求&#xff0c;在exe执行初期把指定内容写入注册表&#xff0c;Playerprefs固然可以写入&#xff0c;但是小白不知道怎么利用Playerprefs写入DWORD类型的数据&#xff0c;因此使用了Registry类 一. 对注册表中键的访问 注册表中共可分为五类 一般在操作时&#…...

Python进阶学习:Pandas--将一种的数据类型转换为另一种类型(astype())

Python进阶学习&#xff1a;Pandas–将一种的数据类型转换为另一种类型(astype()) &#x1f308; 个人主页&#xff1a;高斯小哥 &#x1f525; 高质量专栏&#xff1a;Matplotlib之旅&#xff1a;零基础精通数据可视化、Python基础【高质量合集】、PyTorch零基础入门教程&…...

OpenCV开发笔记(七十五):相机标定矫正中使用remap重映射进行畸变矫正

若该文为原创文章&#xff0c;转载请注明原文出处 本文章博客地址&#xff1a;https://blog.csdn.net/qq21497936/article/details/136293833 各位读者&#xff0c;知识无穷而人力有穷&#xff0c;要么改需求&#xff0c;要么找专业人士&#xff0c;要么自己研究 红胖子(红模仿…...

光伏预测 | Matlab基于CNN-SE-Attention-ITCN的多特征变量光伏预测

光伏预测 | Matlab基于CNN-SE-Attention-ITCN的多特征变量光伏预测 目录 光伏预测 | Matlab基于CNN-SE-Attention-ITCN的多特征变量光伏预测预测效果基本描述模型简介程序设计参考资料 预测效果 基本描述 Matlab基于CNN-SE-Attention-ITCN的多特征变量光伏预测 运行环境: Matla…...

k8s学习笔记-基础概念

&#xff08;作者&#xff1a;陈玓玏&#xff09; deployment特别的地方在于replica和selector&#xff0c;docker根据镜像起容器&#xff0c;pod控制容器&#xff0c;job、cronjob、deployment控制pod&#xff0c;job做离线任务&#xff0c;pod大多一次性的&#xff0c;cronj…...

C语言 变量

变量其实只不过是程序可操作的存储区的名称。C 中每个变量都有特定的类型&#xff0c;类型决定了变量存储的大小和布局&#xff0c;该范围内的值都可以存储在内存中&#xff0c;运算符可应用于变量上。 变量的名称可以由字母、数字和下划线字符组成。它必须以字母或下划线开头…...

2024年2月16日优雅草蜻蜓API大数据服务中心v1.1.1大更新-UI全新大改版采用最新设计ui·增加心率计算器·退休储蓄计算·贷款还款计算器等数接口

2024年2月16日优雅草蜻蜓API大数据服务中心v1.1.1大更新-UI全新大改版采用最新设计ui增加心率计算器退休储蓄计算贷款还款计算器等数接口 更新日志 前言&#xff1a;本次更新中途跨越了很多个版本&#xff0c;其次本次ui大改版-同步实时发布教程《带9.7k预算的实战项目layuiph…...

WEB漏洞 逻辑越权之支付数据篡改安全

水平越权 概述&#xff1a;攻击者尝试访问与他拥有相同权限的用户的资源 测试方法&#xff1a;能否通过A用户操作影响到B用户 案例&#xff1a;pikachu-本地水平垂直越权演示-漏洞成因 1&#xff09;可以看到kobe很多的敏感信息 2&#xff09;burp抓包&#xff0c;更改user…...

45、WEB攻防——通用漏洞PHP反序列化POP链构造魔术方法原生类

文章目录 序列化&#xff1a;将java、php等代码中的对象转化为数组或字符串等格式。代表函数serialize()&#xff0c;将一个对象转换成一个字符&#xff1b;反序列化&#xff1a;将数组或字符串等格式还成对象。代表函数unserialize()&#xff0c;将字符串还原成一个对象。 P…...

雾锁王国服务器怎么建?雾锁王国服务器搭建方法

雾锁王国Enshrouded服务器搭建怎么搭建&#xff1f;非常简单&#xff0c;阿里云计算巢雾锁王国程序&#xff0c;可以一键搭建雾锁王国多人联机服务器&#xff0c;腾讯云是基于雾锁王国镜像系统&#xff0c;阿里云服务网aliyunfuwuqi.com汇总雾锁王国服务器搭建&#xff0c;超简…...

设计模式篇---观察者模式

文章目录 概念结构实例总结 概念 观察者模式&#xff1a;定义对象之间的一种一对多的依赖关系&#xff0c;使得每当一个对象状态发生改变时&#xff0c;其他相关依赖对象都得到通知并被自动更新。 观察者模式是使用频率较高的一个模式&#xff0c;它建立了对象与对象之间的依赖…...

Docker常用命令Top20

Docker常用命令Top20 Docker是一种容器化平台&#xff0c;通过使用Docker&#xff0c;开发人员可以轻松地打包、交付和运行应用程序。以下是Docker中最常用的20个命令&#xff1a; docker run&#xff1a; 运行一个容器。 docker run <image_name>docker ps&#xff1a;…...

【CH376实战】STM32模拟SPI驱动U盘文件系统,告别复杂FAT底层

1. 为什么选择CH376STM32方案 在嵌入式开发中实现U盘文件操作&#xff0c;传统方案通常需要开发者深入理解FAT32/exFAT等文件系统协议栈。我曾在一个智能仪表项目中被FAT底层代码折磨得够呛——光是处理长文件名和簇链遍历就消耗了整整两周时间。直到发现沁恒的CH376这颗神器芯…...

开机卡在‘reboot and select proper boot device’?别慌,这3个BIOS设置检查点帮你5分钟搞定

开机卡在‘reboot and select proper boot device’&#xff1f;三步排查法助你快速恢复系统 遇到电脑开机时突然显示"reboot and select proper boot device"的提示&#xff0c;确实会让人心头一紧。这个报错意味着系统在启动时找不到可引导的设备&#xff0c;但别担…...

远程办公场景Allegro许可证安全使用方案

远程办公场景下的Allegro许可证安全使用方案 讲真&#xff0c;这帮年我在几家制造企业当过顾问&#xff0c;见过太多人就因为软件许可出了大事。有的项目卡在软件申麻烦上&#xff0c;急得直跺脚&#xff1b;有的IT部门天天在干“抢许可”的活儿&#xff0c;忙得焦头烂额。最离…...

谷歌调整“水手计划”团队,浏览器智能体遇冷,新模型效率提升 50 倍!

谷歌调整“水手计划”团队据《连线》杂志报道&#xff0c;谷歌正在对其 AI 智能体项目“水手计划”&#xff08;Project Mariner&#xff09;背后的团队进行调整。“水手计划”所打造的 AI 智能体能够在 Chrome 浏览器中操作&#xff0c;并代用户完成任务。知情人士透露&#x…...

如何3步永久备份你的QQ空间记忆:GetQzonehistory完全指南

如何3步永久备份你的QQ空间记忆&#xff1a;GetQzonehistory完全指南 【免费下载链接】GetQzonehistory 获取QQ空间发布的历史说说 项目地址: https://gitcode.com/GitHub_Trending/ge/GetQzonehistory 你是否曾担心QQ空间里那些记录青春点滴的说说会随着时间流逝而消失…...

用Python和MATLAB搞定CCA:从数据预处理到结果可视化的完整实战指南

Python与MATLAB双平台实战&#xff1a;典型相关分析(CCA)全流程解析 在金融风控、基因表达分析和工业过程监控等领域&#xff0c;我们常常需要研究两组高维变量之间的关联关系。典型相关分析(CCA)作为多元统计的经典方法&#xff0c;能够揭示变量组间的深层关联模式。本文将带您…...

别再让root用户坑你了!Linux服务器上UE4.22编译报错‘Makefile:212’的保姆级修复指南

别再让root用户坑你了&#xff01;Linux服务器上UE4.22编译报错‘Makefile:212’的保姆级修复指南 最近在Linux服务器上部署Unreal Engine 4.22的开发环境时&#xff0c;不少开发者都遇到了一个看似简单却令人头疼的问题&#xff1a;使用root用户编译时&#xff0c;系统抛出Ma…...

告别报表拼接!用Oracle的LISTAGG和PIVOT,5分钟搞定多行数据合并展示

5分钟极速报表革命&#xff1a;Oracle高级聚合技巧实战手册 每次月底赶报表时&#xff0c;最让你抓狂的是什么&#xff1f;是反复复制粘贴的Excel操作&#xff0c;还是不断调整的单元格格式&#xff1f;我曾见过一位财务同事为了合并20个审批人的名单&#xff0c;花了半小时手动…...

OriginPro 2021b 气泡图实战:用四维数据讲好你的科研故事(附数据模板)

OriginPro 气泡图科研可视化&#xff1a;用四维数据讲述你的研究故事 科研数据的可视化从来都不只是简单的图表绘制&#xff0c;而是一种严谨的学术叙事方式。当我们需要同时展示化合物性质、基因表达差异或环境参数等多维数据时&#xff0c;传统二维图表往往力不从心。这正是气…...

智慧城市之红外墙面裂缝图像识别 外墙立面裂缝缺陷识别 建筑物渗水空洞图像识别 建筑物裂缝图像识别 建筑、基建领域缺陷检测 墙面温度图像识别

计算机视觉数据集 README数据集核心信息表维度详情类别目标检测任务专用&#xff0c;包含 3 个核心类别&#xff1a;裂缝、空洞、渗漏数量总计 362 张有效标注图像&#xff0c;覆盖不同场景下的目标特征&#xff0c;标注信息完整数据集格式种类图像文件&#xff08;支持主流图像…...