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里面的参考文档

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

CAPL编程学习笔记--关于on 事件的详细解释

CAPL编程是比较有特色的一种面向通讯的编程语言。 1:on XXX类型(即事件类型) 维克多的官方文档对CAPL的描述是一门类C语言,说白了它也是用C写出来的。我们看on(注意都是小写)事件的代码结构 on * { }&…

Docker技术概论(2):Docker环境的搭建

Docker技术概论(2) Docker环境的搭建 - 文章信息 - Author: 李俊才 (jcLee95) Visit me at: https://jclee95.blog.csdn.netMy WebSite:http://thispage.tech/Email: 291148484163.com. Shenzhen ChinaAddress of this article:https://blo…

【Javascript编程实操03】1、根据数字显示对应的星期2、输入月份,显示当月的天数

前言 1、根据数字显示对应的星期 代码: 实现效果: 2、输入月份,显示当月的天数 原理: 代码: 实现效果: 总结 前言 本次主要是针对Javascript阶段的switch的实操练习,共有2个实操。 1、…

BioTech - 大分子药物设计 概述

欢迎关注我的CSDN:https://spike.blog.csdn.net/ 本文地址:https://spike.blog.csdn.net/article/details/136302202 大分子药物设计领域主要包括3个方面,即大环类药物设计、蛋白质与多肽类药物设计、核酸药物设计等,具体如下&…

磁盘分区配置开机自动挂载

客户提供的服务器 有1TB的磁盘需要手动挂载 首先查看一下磁盘设备 lsblk 可以看到vdb是新添加的磁盘 然后使用fdisk /dev/vdb 进行磁盘分区 新添加的磁盘只需要分一个区默认全部回车即可 然后使用lsblk查看一下磁盘设备 做好磁盘分区后需要做文件系统格式化 mkfs.ext4 /dev/vd…

SINAMICS V90 PN 指导手册 第5章 调试说明、调试 Jog、EPOS、速度调试

前几章介绍了V90 PN 系统的产品功能、技术数据、安装以及连接,从本章开始,重点介绍V90 PN的应用指导,本章介绍的主要内容是调试,包括调试说明、Jog模式下调试、基本定位器模式下(EPOS)调试以及速度模式(S)下调试。 调试说明 悬挂…

Window部署Jaeger

参考:windows安装使用jaeger链路追踪_windows安装jaeger-CSDN博客 下载:Releases jaegertracing/jaeger GitHub Jaeger – Download Jaeger 目录 1、安装nssm 2、安装运行 elasticsearch 3、安装运行 3.1部署JaegerAgent 3.2部署JaegerCollec…

Opencv实战(5)平滑处理与常见函数

平滑处理 Opencv实战: Opencv(1)读取与图像操作 Opencv(2)绘图与图像操作 Opencv(3)详解霍夫变换 Opencv(4)详解轮廓 文章目录 平滑处理1.均值滤波2.方框滤波3.高斯滤波4.中值滤波5.双边滤波 常见函数(1).createTrackbar()(2).SetMouseCallback() 图像的平滑处理是…

备战蓝桥杯---线段树基础1

引入:RMQ问题: 什么是RMQ? 显然,我们无法用前缀维护,因此,我们需要用到线段树的知识: 什么是线段树? 线段树是用一种树状结构存储一个连续区间信息的数据结构 下面我们用图解释用…

ARM简介

ARM:ARM是Advanced RISC Machine的缩写,意为高级精简指令集计算机。 英国ARM公司,2016年被软银创始人孙正义斥资320亿美元收购了。现在是软银旗下的芯片设计公司,总部位于英国剑桥,专注于设计芯片,卖芯片生…

两台电脑异地怎么共享文件?

在现代社会中,无论是个人用户还是企事业单位,都经常面临着跨地域的文件共享需求。由于各种限制和条件的限制,如网络环境、设备限制等,可能导致文件共享变得非常困难。本文将介绍一款名为【天联】的组网产品,通过它可以…

非阻塞实现高效键盘扫描功能(STM32F4XX)

目录 概述 1 原理分析 1.1 技术背景 1.2 系统硬件 1.3 STM32 IO(输入模式)寄存器分析 1.3.1 输入IO的功能描述 1.3.2 输入配置 1.3.3 GPIO 寄存器(输入模式相关) 1.3.3.1 GPIO 端口模式寄存器 1.3.3.2 GPIO 端口上拉/下拉…

数字后端——DEF文件格式

文章目录 MACRO的不同orientationDEF中在macro orientation定义前需要留空格 MACRO的不同orientation DEF中在macro orientation定义前需要留空格 像下图中这种方向和分号之间没有空格的情况,就是有问题的格式。

构建一个基于Node.js的文件存储服务

随着现代web应用程序变得越来越复杂和功能强大,文件存储服务成为了许多应用的重要组成部分。在本篇博客中,我们将探讨如何构建一个基于Node.js的文件存储服务,让您可以轻松地上传、下载和管理文件。我们将利用Node.js的强大功能和模块来构建这…

苍穹外卖知识点总结(一)

简介 技术选型 展示项目中使用到的技术框架和中间件。 用户层:node.js Vue.js ElementUI 微信小程序 apache echarts 网关层:nginx 应用层:Spring Boot Spring MVC Spring Task httpclie…

2.26 Qt day4+5 纯净窗口移动+绘画事件+Qt实现TCP连接服务+Qt实现连接数据库

思维导图 Qt实现TCP连接 服务器端&#xff1a; widget.h #ifndef WIDGET_H #define WIDGET_H#include <QWidget> #include<QTcpServer>//服务器端类 #include<QTcpSocket>//客户端类 #include<QMessageBox>//消息对话框类 #include<QList>//链…

fordeal测评养号环境搭建:解决硬件、IP、浏览器等关键问题

Fordeal电商平台销售网点覆盖中东、欧美等多个国家和地区&#xff0c;其中中东市场是最重要的市场。 Fordeal主要为用户提供男女装、箱包及配饰、护肤彩妆、电子数码、运动用品等品类。 fordeal 支持多种语言、货币和支付方式。 1.点击Sign in进入登录界面。 2. 选择Register注…

第七篇:微信小程序的跳转页面

前提&#xff1a;建议还没学HTML、CSS、JavaScript、JSON、vue、Ajax的兄弟姐妹们&#xff0c;先去把这些基础补好过一遍&#xff0c;不然不好理解微信小程序 前面这一篇已经讲过一次<navigator>跳转页面的用法了&#xff0c;今天详细讲解一下 回顾&#xff1a; 小程序…

<网络安全>《60 概念讲解<第七课 网络模型OSI对应协议>》

1 OSI模型 OSI模型&#xff08;Open Systems Interconnection Model&#xff09;是一个由国际标准化组织&#xff08;ISO&#xff09;提出的概念模型&#xff0c;用于描述和标准化电信或计算系统的通信功能&#xff0c;以实现不同通信系统之间的互操作性。该模型将通信系统划分…

【笔记】:更方便的将一个List中的数据传入另一个List中,避免多重循环

这里是 simpleInfoList 集合&#xff0c;记为集合A&#xff08;传值对象&#xff09; List<CourseSimpleInfoDTO> simpleInfoList courseClient.getSimpleInfoList(courseIds);if(simpleInfoListnull){throw new BizIllegalException("当前课程不存在!");}这…