在CentOS 7中手工打造和运行xml文件配置的Servlet,然后使用curl、浏览器、telnet等三种工具各自测试

news2024/9/27 9:29:49

下载Openjdk并配置环境变量

https://jdk.java.net/java-se-ri/11-MR2是官网下载Openjdk 11的地方。
在这里插入图片描述

sudo wget https://download.java.net/openjdk/jdk11.0.0.1/ri/openjdk-11.0.0.1_linux-x64_bin.tar.gz下载openjdk 11。
在这里插入图片描述

sudo mkdir -p /usr/openjdk11创建目录,sudo tar zx openjdk-11.0.0.1_linux-x64_bin.tar.gz -C /usr/openjdk11/把文件解压到/usr/openjdk11/目录里。
在这里插入图片描述

sudo vim /etc/profile把下边两行内容:

export JAVA_HOME=/usr/openjdk11/jdk-11.0.0.1/
PATH=$PATH:$JAVA_HOME/bin

写进去。
tail -n 2 /etc/profile看到/etc/profile最后两行的内容。
在这里插入图片描述

source /etc/profile使配置文件生效。
在这里插入图片描述

java -version显示如下就是配置好了:

openjdk version "11.0.0.1" 2023-05-09
OpenJDK Runtime Environment 18.9 (build 11.0.0.1+3-5)
OpenJDK 64-Bit Server VM 18.9 (build 11.0.0.1+3-5, mixed mode)

在这里插入图片描述

下载Tomcat并解压

https://archive.apache.org/dist/tomcat/是下载Tomcat的官网地址。
在这里插入图片描述

sudo wget -c https://archive.apache.org/dist/tomcat/tomcat-9/v9.0.80/bin/apache-tomcat-9.0.80.tar.gz下载tomcat 9.0.80。
在这里插入图片描述

sudo tar zxf apache-tomcat-9.0.80.tar.gz进行解压。
在这里插入图片描述

创建Servlet,编译并运行

sudo vim TestServlet.java把下边的内容写进去:

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;


public class TestServlet extends HttpServlet {

    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {

        System.out.println("TestServlet 在处理get()请求...");
        PrintWriter out = response.getWriter();
        response.setContentType("text/html;charset=utf-8");
        out.println("<strong>Servlet doGet</strong><br>");
    }

    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {

        System.out.println("TestServlet 在处理post()请求...");
        PrintWriter out = response.getWriter();
        response.setContentType("text/html;charset=utf-8");
        out.println("<strong>Servlet doPost</strong><br>");
    }

}

在这里插入图片描述

sudo javac -cp apache-tomcat-9.0.80/lib/servlet-api.jar TestServlet.java进行编译。
在这里插入图片描述

sudo mkdir -p apache-tomcat-9.0.80/webapps/MyWebApp/WEB-INF/
sudo mkdir -p apache-tomcat-9.0.80/webapps/MyWebApp/WEB-INF/classes
在tomcat中webapps目录下创建特定的目录。
在这里插入图片描述

sudo vim apache-tomcat-9.0.80/webapps/MyWebApp/WEB-INF/web.xml把下边的内容写进去:

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
  http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
  version="4.0"
  metadata-complete="true">

    <description> Servlet Example. </description>
    <display-name> MyServlet Example </display-name>
    <request-character-encoding>UTF-8</request-character-encoding>

    <servlet>
      <servlet-name>myServlet</servlet-name>
      <servlet-class>TestServlet</servlet-class>
    </servlet>

    <servlet-mapping>
      <servlet-name>myServlet</servlet-name>
      <url-pattern>/myservlet</url-pattern>
    </servlet-mapping>

</web-app>

在这里插入图片描述

sudo cp TestServlet.class apache-tomcat-9.0.80/webapps/MyWebApp/WEB-INF/classes/把上边sudo javac -cp apache-tomcat-9.0.80/lib/servlet-api.jar TestServlet.java生成的TestServlet.class复制到apache-tomcat-9.0.80/webapps/MyWebApp/WEB-INF/classes/里边。
在这里插入图片描述

sudo chmod u+x apache-tomcat-9.0.80/bin/startup.sh为当前用户给启动脚本加上可执行权限。
在这里插入图片描述

sudo apache-tomcat-9.0.80/bin/startup.sh启动。
在这里插入图片描述

sudo chmod u+x apache-tomcat-9.0.80/bin/shutdown.shshutdown.sh脚本给当前用户赋予可执行权限,sudo apache-tomcat-9.0.80/bin/shutdown.sh关闭tomcat。
在这里插入图片描述

测试

curl测试

curl http://localhost:8080/MyWebApp/myservlet访问一下。
在这里插入图片描述

浏览器测试

在浏览器里边输入http://localhost:8080/MyWebApp/myservlet

在这里插入图片描述

telnet测试

还可以使用telnet手工拼接报文。
1.在命令行里边输入telnet
2.在telnet>提示符下输入open 127.0.0.1 8080
3.然后按下Ctrl+],请注意Ctrl在屏幕上显示为^
4.在telnet>提示符下按下Enter
5.然后输入GET /MyWebApp/myservlet HTTP/1.1,按下回车,再输入Host: localhost。即如下所示:

GET /MyWebApp/myservlet HTTP/1.1
Host: localhost

6.按下Ctrl+c退出。

在这里插入图片描述

此文章为10月Day 25学习笔记,内容来源于极客时间《深入拆解 Tomcat & Jetty》。

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

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

相关文章

【电路笔记】-交流电路中的功率

交流电路中的功率 文章目录 交流电路中的功率1、概述2、正弦波形的功率3、功率因数4、功率三角5、总结 1、概述 作为一般概念&#xff0c;功率描述了系统释放/传输一定量能量的速度。 这种能量可以有不同的形式&#xff1a;动能、磁能、电能……等。 因此&#xff0c;在任何域…

2023年视频号视频下载提取使用教程

视频号视频下载提取教程 第一步&#xff1a; 点击公众号下方菜单「视频下载」&#xff0c;点击“视频号视频下载教程”长按识别二维码添加小助手为好友。 没有关注公众号的&#xff0c;可以先关注。 第二步&#xff1a; 点击视频号的转发图标&#xff0c;将视频号视频转发给…

混合精度训练原理之float16和float32数据之间的互相转换

混合精度训练原理之float16和float32数据之间的互相转换 本篇文章参考&#xff1a;全网最全-混合精度训练原理 上述文章已经讲解的比较详细&#xff0c;本文只是从数值角度分析&#xff1a; 1. float32转入float16的精度误差 2. 在深度学习的混精度训练当中&#xff0c;当参数…

打破总分行数据协作壁垒,DataOps在头部股份制银行的实践|案例研究

从银行开始建设数据仓库至今已近20年&#xff0c;当前各银行机构在数据能力建设中面临诸多困扰&#xff1a;如何保证数据使用时的准确性&#xff1f;如何让数据敏捷响应业务变化&#xff1f;如何让更多的业务人员使用数据&#xff1f; 这些问题极大影响了经营指标的达成与业务…

【Python 算法】信号处理通过陷波滤波器准确去除工频干扰

对于一个信号来说通常汇入工频噪声往往是因为交流电产生的电泳&#xff0c;影响了我们信号采集导致信号上存在工频干扰。 那么matlab去除工频干扰可以通过陷波滤波器实现。 通常使用scipy.signal实现信号的处理。 Scipy的信号处理模块&#xff08;scipy.signal&#xff09;来创…

算法通过村第十六关-滑动窗口|黄金笔记|结合堆的应用

文章目录 前言堆与滑动窗口结合的问题总结 前言 提示&#xff1a;不论记忆多么痛苦&#xff0c;它属于过去&#xff0c;已经逝去了&#xff0c;我们为什么还执着于它并让它代表我们&#xff1f;我们就这样&#xff0c;所以&#xff0c;我们受苦。 --丹津葩默 这个还是一个比较重…

堆(二叉树,带图详解)

一.堆 1.堆的概念 2.堆的存储方式 逻辑结构 物理结构 2.堆的插入问题 3.堆的基本实现&#xff08;代码&#xff09;&#xff08;以小堆为例&#xff09; 1.堆的初始化 2. 向上调整 3.插入结点 4. 交换函数、堆的打印 5.向下调整 6.删除根节点并调整成小根堆 7.获取堆…

Transformer详解学习

1. Transformer 原理 1.1 Transformer整体结构 Transformer的结构图&#xff0c;拆解开来&#xff0c;主要分为图上4个部分&#xff0c;其中最重要的就是2和3Encoder-Decoder部分&#xff0c;对咯&#xff0c;Transformer是一个基于Encoder-Decoder框架的模型。 接下来我将按照…

通过使用Cpolar内网穿透工具实现BUG管理系统的远程访问

文章目录 前言1. 本地安装配置BUG管理系统2. 内网穿透2.1 安装cpolar内网穿透2.2 创建隧道映射本地服务 3. 测试公网远程访问4. 配置固定二级子域名4.1 保留一个二级子域名 5. 配置二级子域名6. 使用固定二级子域名远程7. 结语 前言 BUG管理软件,作为软件测试工程师的必备工具…

Kettle循环结果集中的数据并传入SQL组件【或转换】里面

简介&#xff1a;在尝试使用了结果集的Demo循环后&#xff0c;进入到生产还是有一点问题的&#xff0c;以下是各个组件的分解解释、遇到的问题&#xff0c;以及解决问题的思路&#xff0c;最后文章的最后会把完整的Ktr文件放出来。记得收藏点赞喔&#xff01; 先来看张图~来自…

【疯狂Java】数组

1、一维数组 (1)初始化 ①静态初始化&#xff1a;只指定元素&#xff0c;不指定长度 new 类型[] {元素1,元素2,...} int[] intArr; intArr new int[] {5,6,7,8}; ②动态初始化&#xff1a;只指定长度&#xff0c;不指定元素 new 类型[数组长度] int[] princes new in…

【德哥说库系列】-PostgreSQL跨版本升级

&#x1f4e2;&#x1f4e2;&#x1f4e2;&#x1f4e3;&#x1f4e3;&#x1f4e3; 哈喽&#xff01;大家好&#xff0c;我是【IT邦德】&#xff0c;江湖人称jeames007&#xff0c;10余年DBA及大数据工作经验 一位上进心十足的【大数据领域博主】&#xff01;&#x1f61c;&am…

【算法训练-动态规划 五】【二维DP问题】最大正方形

废话不多说&#xff0c;喊一句号子鼓励自己&#xff1a;程序员永不失业&#xff0c;程序员走向架构&#xff01;本篇Blog的主题是【动态规划】&#xff0c;使用【数组】这个基本的数据结构来实现&#xff0c;这个高频题的站点是&#xff1a;CodeTop&#xff0c;筛选条件为&…

Kafka - 深入了解Kafka基础架构:Kafka的基本概念

文章目录 Kafka的基本概念 Kafka的基本概念 我们首先了解一些Kafka的基本概念。 1&#xff09;Producer &#xff1a;消息生产者&#xff0c;就是向kafka broker发消息的客户端2&#xff09;Consumer &#xff1a;消息消费者&#xff0c;向kafka broker获取消息的客户端3&…

如何避免Web3诈骗,重点关注这5个安全标识提醒

从预付费电子邮件到网络钓鱼攻击&#xff0c;互联网充斥着各种骗局。尽管区块链内置了加密功能&#xff0c;但它们也遭受了相当多的恶意攻击并被获取了对帐户的访问权限。幸运的是&#xff0c;大多数诈骗攻击都有特定的安全标识提醒&#xff0c;精明的用户可以留意&#xff0c;…

淘宝商品详情API接口,解决滑块问题

淘宝商品详情API接口是一种用于获取淘宝商品详细信息的接口&#xff0c;它可以帮助开发者在自己的网站或应用程序中快速获取淘宝商品的详细信息&#xff0c;包括价格、图片、商品描述等。 该接口的主要作用包括&#xff1a; 商品信息展示&#xff1a;通过淘宝商品详情API接口…

网络协议--IGMP:Internet组管理协议

13.1 引言 12.4节概述了IP多播给出&#xff0c;并介绍了D类IP地址到以太网地址的映射方式。也简要说明了在单个物理网络中的多播过程&#xff0c;但当涉及多个网络并且多播数据必须通过路由器转发时&#xff0c;情况会复杂得多。 本章将介绍用于支持主机和路由器进行多播的In…

wkhtmltoimage/wkhtmltopdf 使用实践

1. 介绍 wkhtmltopdf/wkhtmltoimage 用于将简单的html页面转换为pdf或图片&#xff1b; 2.安装 downloads 2.1. mac os 下载64-bit 版本然后按照指示安装, 遇到 untrust developers 时&#xff0c;需要在 Settings -> Privacy 处信任下该安装包。 2.2. debian # 可用…

[AutoSar NVM] 存储架构

依AutoSAR及公开知识辛苦整理&#xff0c;禁止转载。 专栏 《深入浅出AutoSAR》&#xff0c; 全文 2900 字. 图片来源&#xff1a; 知乎 汽车的ECU内存中有很多不同类型的变量&#xff0c;这些变量包括了车辆各个系统和功能所需的数据。大部分变量在ECU掉电后就会丢失&#x…

AnkiPDF Guru软件评测:打开全新学习方式的大门

在当今信息爆炸的时代&#xff0c;如何高效学习和记忆成为了每个人关注的焦点。AnkiPDF Guru软件作为结合了Anki和PDF的学习利器&#xff0c;向我们展示了一种全新的学习方式。本文将以软件的实用性和使用场景为切入点&#xff0c;从专业的角度客观分析和评测该软件&#xff0c…