【JavaWeb学习笔记】6 - Tomcat

项目代码

零、在线文档 

Apache Tomcat 8 (8.0.53) - Documentation Index

WEB开发

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

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

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

        动态web资源,比如Servlet、PHP等。

3.静态web资源开发技术

        Html、CSS等

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

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

B/S C/S开发

1. B: browser(浏览器)

2. S: Server(服务端)

1.C:Client(客户端)

2.S:Server(服务端)

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

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

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

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

一、JavaWeb服务软件

1.介绍

1.学习JavaWeb开发,需要先安装JavaWeb服务软件(我们把安装了JavaWeb服务软件主机称为Web服务器/JavaWeb服务器) 在web服务器中开发相应的web资源。

2.学习JavaWeb开发,Tomcat本质就是一个Java程序, 但是这个Java程序可以处理来自浏览器的HTTP请求

2.模拟简单的Web服务程序

这里,我们需要使用到Java基础(IO/网络)

import java.io.*;
import java.net.ServerSocket;
import java.net.Socket;

/**
 * @author 银小海
 * @version 1.0
 * @email yinhai14@qq.com
 * 这是我们自己写的web服务 可以返回hello.html给浏览器
 */
public class MyTomcat {
    public static void main(String[] args) throws IOException {
        //1.在9999端口监听
        ServerSocket serverSocket = new ServerSocket(9999 );
        int i = 0;
        //如果serverSocket没有关闭就循环监听反复
        while (!serverSocket.isClosed()) {

            //2.等待客户端连接得到socket
            //http://localhost:9999表示浏览器向localhost(127.0.0.1)表示本机的9999端口发出请求
            System.out.println("程序在这句话" + ++i);
            Socket socket = serverSocket.accept();

            //3.得到输出流
            OutputStream outputStream = socket.getOutputStream();
            // outputStream.write("hello,i am mytomcat".getBytes());

            //4.读取hello.html文件返回即可
            BufferedReader bufferedReader = new BufferedReader(new FileReader("tomcat/src/hello.html"));
            String buf = "";
            while((buf = bufferedReader.readLine() )!= null){
                outputStream.write(buf.getBytes());
            }
            outputStream.close();
            socket.close();
        }
        serverSocket.close();
        //如果不使用while循环 查询当把信息返回去之后就马上关闭了 所以不能这么干
    }
}

使用上述传输时,出现以下问题

当前无法使用此页面

localhost 发送了无效的响应。qq浏览器 谷歌浏览器 edge都出现该问题,均能链接到程序但是无法显示

localhost:8080 localhost:9999均尝试了都不太行 确实能连接到 但是就是无法访问,应该是某个安全校验问题吧,使用firefox即可解决该问题

3.常用的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的基本介绍

1.Tomcat下载安装

1.双击bin目录下的startup.bat文件

2.输入http:/ /localhost:8080/,显示如下界面代表安装成功

3.注意,不要关闭黑窗口,关闭了,tomcat服务就停止了.

4.也可以在bin目录下使用catalinna run启动

5.关闭最好是使用shutdown. bat

2.启动故障排除

1.双击startup.bat文件,出现-一个小黑窗口然后就没了,原因是因为没有配置好JAVA HOME 环境变量

2. JAVA_ HOME 必须全大写

3. JAVA_ HOME 中间必须是下划线

4. JAVA_ HOME配置的路径只需要配置到jdk的安装目录即可。不需要带上bin目录

5.端口8080被占用[查看端口netstat -anb]

6.如果其它服务程序占用了8080端口,可以关闭该服务,或者修改Tomcat服务的默认端口8080 

7.配置JAVA_ HOME环境变量

3.目录结构

4.Tomcat服务中部署WEB应用

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

 

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

6.修改Tomcat端口

三、IDEA开发JavaWeb工程

1.开发javaweb工程 & 配置TomCat启动项目

1.需要:使用IDEA开发开发JavaWeb工程fishWeb,并将网页部署到fishWeb工程,看老师演示

配置完成后如何配置本地tomcat

选择Tomcat的解压位置 

热加载

记得改名

点击绿色的运行执行

在浏览器输入该URL即可访问到Tomcat下的该文件

2.注意事项

(1) on update action :表示当我们更新操作是, Tomcat会自动更新类和资源(当jsp/html文件修改时可以生效)

(2) on frame deactivation :表示IDEA失去焦点(比如最小化),也会导致jsp/html发生更新, 但是java修改了,还是需要redeploy

2.端口修改

server.xml

3. out目录是什么

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

四、课后作业

 

注意指定编码格式 

注意是放在web包下 src是用来放java文件的

多看该图 

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

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

相关文章

动手学习深度学习-跟李沐学AI-自学笔记(3)

一、深度学习硬件-CPU和GPU 芯片:Intel or AMD 内存:DDR4 显卡:nVidia 芯片可以和GPU与内存通信 GPU不能和内存通信 1. CPU 能算出每一秒能运算的浮点运算数(大概0.15左右) 1.1 提升CPU利用率 1.1.1 提升缓存…

Vite4、Vue3、Axios 针对请求模块化封装搭配自动化导入(简单易用)

针对请求模块化封装搭配自动化导入(简单易用) 目标目录目标代码前提步入正题src / utils / index.jssrc /api / index.jssrc /api / request.jssrc /api / service.jssrc /api / utils.jssrc /api / modules / demo.js 自动化配置vite.config.jseslint 校…

2023中医药国际传承传播大会暨中医药图片和非遗艺术展隆重揭幕

由世界针灸学会联合会、中新社国际传播集团、中国新闻图片网、中国民族医药学会、中国针灸学会联合主办的“2023中医药国际传承传播大会”3日在广东省深圳市举办,“中医药国际传承传播图片展”与“非遗艺术展”在大会举办期间开展迎客。会议聚焦非遗健康、非遗传承等…

案例049:基于微信小程序的校园外卖平台设计与实现

文末获取源码 开发语言:Java 框架:SSM JDK版本:JDK1.8 数据库:mysql 5.7 开发软件:eclipse/myeclipse/idea Maven包:Maven3.5.4 小程序框架:uniapp 小程序开发软件:HBuilder X 小程序…

【vue】点击导航菜单切换局部页面,打开展示默认栏目,页面刷新等问题

非专业前端,局限性较高,有些问题看起来很小,但是初次接触很棘手,需要查找很多博客,内容也很杂。以下只是过程中总结下来的,要解决的就是标题中的三个问题。 这是我需要达成的效果。 1.第一个是进入导航菜单…

LeetCode:2646. 最小化旅行的价格总和(dfs + 树形dp C++、Java)

目录 2646. 最小化旅行的价格总和 题目描述: 实现代码与解析: DFS DP 原理思路: 2646. 最小化旅行的价格总和 题目描述: 现有一棵无向、无根的树,树中有 n 个节点,按从 0 到 n - 1 编号。给你一个整数…

团队git操作流程

项目的开发要求:(1)项目组厉员代码提交不少于20次 (2)项目组厉员每天提交不少于20次 (3)企业项目开发代码的每天的提交一般提交3-5次 (4)代码仓库的管理 git的基础操作流…

案例042:基于微信小程序的居住证申报系统

文末获取源码 开发语言:Java 框架:SSM JDK版本:JDK1.8 数据库:mysql 5.7 开发软件:eclipse/myeclipse/idea Maven包:Maven3.5.4 小程序框架:uniapp 小程序开发软件:HBuilder X 小程序…

OpenCV-python numpy和基本作图

文章目录 一、实验目的二、实验内容三、实验过程Numpy1.NumPy 操作2.NumPy Ndarray 对象3.NumPy 基本类型4.NumPy 数组属性ndarray.ndimndarray.shapendarray.itemsizendarray.flags 5.NumPy 创建数组numpy.emptynumpy.zerosnumpy.ones 6.NumPy 从已有的数组创建数组numpy.asar…

【Python】Python读Excel文件生成xml文件

目录 ​前言 正文 1.Python基础学习 2.Python读取Excel表格 2.1安装xlrd模块 2.2使用介绍 2.2.1常用单元格中的数据类型 2.2.2 导入模块 2.2.3打开Excel文件读取数据 2.2.4常用函数 2.2.5代码测试 2.2.6 Python操作Excel官方网址 3.Python创建xml文件 3.1 xml语法…

HCL Domino 12系统管理员考试

大家好,才是真的好。 12月份的某一天,趁着风和日丽,天朗气清, 下了舍弃100多美金的狠心,在Pearson Vue官网上报了HCL Domino 12系统管理员考试的名 。时隔十五年后,骑着电动车风风火火地前往某一当地考试中…

AI Pika 生成进击的巨人动漫分镜案例

背景介绍 Pika 是一个使用 AI 生成和编辑视频的平台。它致力于通过 AI 技术使视频制作变得简单和无障碍。 Pika 1.0 是 Pika 的一个重大产品升级,包含了一个新的 AI 模型,可以在各种风格下生成和编辑视频,如 3D 动画,动漫,卡通和电影风格。…

pytorch中的transpose用法

注意:维数从0开始,0维 1维2维…,负数代表从右往左数,-1代表第一维,以此类推 import torch import numpy as np# 创建一个二维数组 arr torch.tensor([[[1, 2],[3, 4]],[[5, 6],[7, 8]]]) print("原始数组:"…

深入理解 Java 虚拟机(JVM)从入门到精通

目录 一、JVM内存结构1、堆(Heap)(1)特点(2)堆内存分配(3)晋升到老年代的方式(4)堆内存检验方式2、虚拟机栈(VM Stack)(1&…

Vis.js教程(二):基础关系图实现

首先引用所需要的css和js文件 <link href"https://cdn.bootcdn.net/ajax/libs/vis-network/9.1.6/dist/dist/vis-network.min.css" rel"stylesheet"> <script src"https://cdn.bootcdn.net/ajax/libs/vis-network/9.1.6/standalone/umd/vis-…

python+requests+excel 接口测试

1、EXCEL文件接口保存方式&#xff0c;如图。 2、然后就是读取EXCEL文件中的数据方法&#xff0c;如下&#xff1a; 1 import xlrd2 3 4 class readExcel(object):5 def __init__(self, path):6 self.path path7 8 property9 def getSheet(self): 10 …

前端编码中快速填充内容--乱数假文

写前端页面的时候&#xff0c;如果要快速插入图片&#xff0c;可以使用 https://picsum.photos/ 详见笔者这篇博文&#xff1a; 工具网站&#xff1a;随机生成图片的网站-CSDN博客 可是&#xff0c;如果要快速填充文字内容该怎么做呢&#xff1f; 以前&#xff0c;我们都是…

【GAMES101】二维变换和齐次坐标

这几天都在抽空学OpenGL、敲leetcode和看games&#xff0c;这里留点笔记给以后复习 games101第一节课在吹水&#xff0c;第二节课讲了线性代数的入门知识&#xff0c;比较简单&#xff0c;这里稍微回顾一下重点&#xff0c;然后开始讲第三节课的二维变换和齐次坐标 目录 向量…

ACM32F42X系列芯片有何性能?为什么可以应用在工业控制 中等产品上

ACM32F42X 芯片的内核基于 ARMv8-M 架构&#xff0c;支持 Cortex-M33 和 Cortex-M4F 指令集。内核支持一 整套 DSP 指令用于数字信号处理&#xff0c;支持单精度 FPU 处理浮点数据&#xff0c;同时还支持 Memory Protection Unit &#xff08;MPU&#xff09;用于提升应用的安全…

C++[面向对象的程序设计]_基础入门(上)(万字总结)(建议收藏!!!)

目录 1. C基础入门 1.1 变量 1.2 常量 1.3 关键字 1.4 标识符命名规则 1.5 数据类型 1.5.1 整型 1.5.2 sizeof 关键字 1.5.3 实型&#xff08;浮点型&#xff09; 1.5.4 字符型 1.5.5 转义字符 1.5.6 字符串类型 1.5.7 布尔类型 1.5.8 数据的输入 1.6 运算符 …