Tomcatd的详细介绍以及--手写 MyWebServer.java

news2024/10/7 4:28:20

Tomcat

官方文档

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

WEB 开发介绍

1. WEB,在英语中 web 表示网/网络资源(页面,图片,css,js)意思,

                它用于表示 WEB 服务器(主机)供浏览器访问的资源

2. WEB 服务器(主机)上供外界访问的 Web 资源分为:

                - 静态 web 资源(如 html 页面):指 web 页面中供人们浏览的数据始终是不变。

                - 动态 web 资源,比如 Servlet(java)、PHP 等。

3. 静态 web 资源开发技术

                - Html、CSS,js 等

4. 常用动态 web 资源开发技术:

                Servlet、SpringBoot、SpringMVC、PHP、ASP.NET 等

JavaWeb 开发技术栈图

BS 与 CS 开发

BS 开发

1. B: browser(浏览器, 种类太多 ff, chrome, ie, edge,)

2. S: Server(服务端, 考虑很多)

3. 示意图

BS 的解读

(1) 兼容性 , 因为浏览器的种类很多,,发现你写的程序,在某个浏览器会出现问题,其它浏览器正常

(2) 安全性, 通常情况下,BS 安全性不如 CS 好控制

(3) 易用性, BS 好于 CS, 浏览器电脑有

(4) 扩展性, BS 相对统一,只需要写 Serve

 手写 MyWebServer.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;

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

常用 JavaWeb 服务软件

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

2.  Jboss:是一个遵从 JavaEE 规范的、它支持所有的 JavaEE 规范(免费)。

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

4. Resin:是 CAUCHO 公司的产品,是一个非常流行的服务器,对 servlet 和 JSP 提供了

良好的支持, 性能也比较优良(收费)

5. WebLogic【很猛】:是 Oracle 公司的产品,支持 JavaEE 规范, 而且不断的完善以适 应新的开发要求,适合大型项目(收费,用的不多,适合大公司)。

Tomcat 目录结构

启动 Tomca

执行命令: catalina run

1. 停止 Tomcat 1. 点击 tomcat 服务器窗口,直接点击的关

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

修改 Tomcat 服务端

最好在10000以上

Tomcat 服务中部署 WEB 应用

什么是Web应用

WEB应用是多个web资源的集合。简单的说,可以把web应用理解为硬盘上的一个目录,这个目录用于管理多个web资源。

Web应用通常也称之为web应用程序,或web工程,通俗的说 就是网站。

 WEb应用组成

一个 WEB 应用由多个 WEB 资源或其它文件组成,包括 html 文件、css 文件、js 文件、动

态web页面、java 程序、支持 jar 包、配置文件等。开发人员在开发 web 应用时,

按照规定目录结构存放这些文件。否则,在把 web 应用交给 web 服务器管理时,不仅可能会使web 应用无法访问,还会导致 web 服务器启动报错

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

部署方式1:

将 web 工程的目录拷贝到 Tomcat 的 webapps 目录下

1. news Web工程(目前都是静态资源 html, 图片)

2. 将该news目录/文件夹 拷贝到 Tomcat 的webapps目录下

3. 浏览器输入: http://ip[域名]:port/news/子目录../文件

部署方式2:

通过配置文件来部署(只做介绍)

1.在Tomcat 下的 conf 目录\Catalina\localhost\ 下,配置文件,比如hsp.xml(提醒:知道Tomcat通过配置,可以把一个web应用,映射到指定的目录,可以解决磁盘空间分配的问题.)

2.访问web工程: http://ip[域名]:port/hsp/index.html 就表示访问 D:\album 目录下的 index.html · ROOT 的工程的访问

2.1  在浏览器地址栏中输入访问地址如下:http://ip[域名]:port,没有Web工程/应用名时, 默认访问的是 ROOT工程

2.2  在浏览器地址栏中输入的访问地址如下: http://ip[域名]:port/工程名/ ,没有资源名, 默认访问 index.jsp 页面

浏览器访问 Web 服务过程

回顾前面的 JavaWeb 开发技术

浏览器访问 web 服务器文件 UML 时序图

注意事项和细节

  1. 热加载选项说明

解读

  1. on update action : 表示当我们更新操作是, Tomcat 会自动更新类和资源 (当jsp/html文 件修改时,可以生效, 但是如果你修改的 java 文件, 需要 Redepoly 才会生效)
  2. on frame deactivation : 表示 IDEA 失去焦点(比如最小化), 也会导致 jsp/html 发生更 新 , 但是 java 修改了,还是需要 redeploy

 2. 端口修改

这里修改的端口, 只会影响到当前的项目,而不是去修改 server.xml

3. out 目录是什么

        当 tomcat 启动时,会生成 out 目录,该目录就是 原项目资源的映射,我们浏览器访问的资源是 out 目录

        当我们从外部拷贝资源到项目(图片, 文件, js , css 等), 如果出现 404 不能访问错误, 解决方式 rebulid project -> 重启 Tom

JavaWeb 工程的目录

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/442013.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

java类图与代码实例

在 Java编程中,类图是一个非常重要的概念。类图的作用是用来展示类的结构以及类之间的关系。通过类图,可以很方便地展示出对象之间的关系。下面我将使用实例来演示一下我在学习 Java时的类图。 首先我们来看一下我们使用过的类图。 现在,我会…

【Linux】网络配置ifonfig解读

1、配置文件位置 在Linux系统中,IP地址的配置信息通常存储在网络接口配置文件中。不同的发行版可能会将这些文件存放在不同的位置。 以较为流行的Ubuntu和CentOS为例: Ubuntu系统:网络接口配置文件位于/etc/network/interfacesCentOS/RHEL…

Linux之进程知识点

一、什么是进程 进程是一个运行起来的程序。 问题思考: ❓ 思考:程序是文件吗? 是!都读到这一章了,这种问题都无需思考!文件在磁盘哈。 本章一开始讲的冯诺依曼,磁盘就是外设,和内…

春秋云境:CVE-2022-28060(SQL注入)

目录 一、题目 二、bp抓包跑sqlmap 一、题目 介绍: Victor CMS v1.0 /includes/login.php 存在sql注入 进入靶场: 官方给出的应该是登录界面 admin登录看看 是空白页面 不过看包头应该是POST方式: 二、bp抓包跑sqlmap burp抓包&#xff…

程序员如何把ChatGPT用到开发中

问:ChatGPT是程序员的好帮手?还是要干掉程序员? ChatGPT现在如何了? ChatGPT最近火到不行,在短短几个月时间里,OpenAI打造的ChatGPT就从一个弱小无助的AI聊天程序发展成几乎无所不知、无所不能的强大AI大…

Servlet 详细介绍的代码实列,以及Servlet 流程图和Servlet 流程分析和 @WebServlet源码分析

目录 动态 WEB 开发核心-Servlet 官方文档 对Java Web 技术体系的流程图改造说明(细化).[整体的概念] 什么是 Servlet Servlet(java 服务器小程序),它的特点: Servlet 在 JavaWeb 项目位置 Servlet 基本使用 编写类HelloServlet去实现 Servlet 接口 在web.…

C#基于ASP.NET实现的共享笔记服务系统

共享笔记服务系统需要实现的功能包括用户的管理,以及笔记信息的管理和使用等。 用户用户需要注册激活,添加自己的个人信息,用户姓名,年龄,性别,民族,身份证号,用户证编号&#xff0c…

QGroungControl在QT中源码编译(包括配置环境)

一、环境配置 VS2019 Qt 5.15.2 1、安装 我原先的Qt版本是5.12的,在编译源码的时候会出错,提示最少需要5.15版本的,于是卸载原来的Qt重新安装5.15.2版本的! 网上说5.15以及以上版本的只能在线安装了,所以我参考QT5.…

【hello Linux】详解各种缓冲区

目录 两种缓冲区的说明 用户级缓冲区: 数据如何从用户级缓冲区——>文件内核缓冲区? 刷新策略:对于各种文件的 了解了各种知识之后,使用代码来进行更深理解的认识: Linux🌷 两种缓冲区的说明 先用一张…

ROS学习笔记(八):ROS2

ROS学习笔记(八):ROS2 ROS1存在的问题ROS2ROS2的设计目标ROS2的系统架构ROS2的关键中间件——DDS ROS2的通信模型 ROS1存在的问题 ROS(一般ROS均指ROS1)经过多年的发展,已成为机器人领域的重要的工具与平台…

【社区图书馆】《uni-app跨平台开发与应用》读书随想录

目录 导言 读书感悟 《uni-app跨平台开发与应用》(从入门到实践)图书目录 作者简介 导言 最近我读了一本关于uni-app跨平台开发与应用的书籍,名为《uni-app跨平台开发与应用从入门到实践》。这本书让我对uni-app跨平台开发与应用有了更深入的了解,作…

HttpServletResponse注意事项和细节和原理示意图

目录 HttpServletResponse HttpServletResponse 介绍 HttpServletResponse 类图 向客户端返回数据方法 处理中文乱码问题-方案 处理中文乱码问题-方案 2 请求重定向 请求重定向原理示意图 应用实例 DownServlet Java类 DownServletNew.java xml配置 请求重定向注意…

Ubuntu中用VSCode交叉编译程序放到从机上运行

文章目录 前言:1. 前期准备:1.1 树莓派系统烧录与虚拟机创建1.2 VSCode拓展下载 2. 树莓派交叉编译链查询与下载2.1 交叉编译链如何判断下哪一个2.2 交叉编译链各种版本含义 3. 开始操作3.1 创建helloworld程序3.2 配置交差编译链3.3 json文件说明与配置…

变压器感量计算

1、L:感量计算LBmax*Ae*Np*R/V0.3*17.1*123*1.8/1.01.15mH 第一步:根据经验确定一个大概的感量值。 第二步:实际Sense电压波形测试,判断有没磁饱和,频率是否正确。 W功率 L感量 变压器 …

学系统集成项目管理工程师(中项)系列08a_合同管理(上)

1. 合同(Contract) 1.1. 契约 1.2. 广义概念 1.2.1. 以确定各种权利与义务为内容的协议,即只要是当事人之间达成的确定权利义务的协议均为合同,不管它涉及哪个法律部门及何种法律关系 1.2.2. 合同除应包括民法中的合同外&…

HTTP请求UML时序图--(POST)图和(GET)图源码分析及代码分析和MIME 介绍--常用的状态码说明

目录 WEB 开发通信协议-HTTP 什么是 HTTP 协议 介绍 http 请求 hi.html 的 UML时序图 HTTP 请求包分析 1. HTTP 请求包分析(GET)图, 说明 可以通过浏览器抓包分析 代码说明 HTML部分 JAVA部分 web.xml部分 3) 完成测试,并抓包分析 HTTP 请求包分析(POST…

汽车车身钣金—车身连接方式

摘要: 当汽车车身构件遭受严重损伤失去维修意义时,汽车维修厂商一般采用更换部件或总成的方法进行修复。 车身连接方式 当汽车车身构件遭受严重损伤失去维修意义时,汽车维修厂商一般采用更换部件或总成的方法进行修复。 车身外部覆盖件大多由相对独立的板件相互…

场效应管(MOS)基础知识

MOSFET管是常用的半导体器件,又称为开关管、场效应管、英文名称(MOSFET),简称MOS管 按元件封装工艺可分为两大类:插件类、贴片类。大部分MOSFET管的外观极其类似,常见的封装种类有T0-252,T0-251,T0-220,T0—…

清华发布工具学习框架,让ChatGPT操控地图、股票查询,贾维斯已来?

文|小戏 首先来考大家一道初中历史题:人区别于动物的根本标志是什么›?书上的标准答案是人会制造与使用工具。那么再来一道思考题,如果 AI 会使用甚至会制造工具了以后,会发生什么呢?是像贾维斯一样的 AI 私…

【Java基础】day16

day16 一、switch-case 和 if-else 谁更快? switch-case 在 switch-case 中,case 的值是连续的话,会生成一个 TableSwitch 来进行优化,这样的情况下,只需要在表中进行判断即可。 这里使用 0-4 的连续值来进行测试 如…