Servlet的使用与部署

news2024/10/6 18:33:34

目录

Servlet概念

创建一个Servlet程序

1、创建项目

2、导入依赖 

        3、创建目录  

4、编写代码

5、打包程序

6、部署程序

7、验证程序


Servlet概念

        Servlet 是一种实现动态页面的技术 . 是一组 Tomcat 提供给程序猿的 API, 帮助程序猿简单高效的开发一个 web app.
Servlet 主要做的工作:
  • 允许程序猿注册一个类, Tomcat 收到某个特定的 HTTP 请求的时候, 执行这个类中的一些代码.
  • 帮助程序猿解析 HTTP 请求, HTTP 请求从一个字符串解析成一个 HttpRequest 对象
  • 帮助程序猿构造 HTTP 响应 . 程序猿只要给指定的 HttpResponse 对象填写一些属性字段 , Servlet就会自动的安装 HTTP 协议的方式构造出一个 HTTP 响应字符串 , 并通过 Socket 写回给客户端 .

创建一个Servlet程序

1、创建项目

使用 IDEA 创建一个 Maven 项目 .
        1. 菜单 -> 文件 -> 新建项目 -> Maven

2、导入依赖 

        Maven 项目创建完毕后 , 会自动生成一个 pom.xml 文件, 我们需要在 pom.xml 中引入 Servlet API 依赖的 jar .

        在Maven中央仓库https://mvnrepository.com/ 搜索Servlet进行下载

选择下载的servlet api包的版本

Servlet 的版本要和 Tomcat 匹配 .
可以在 http://tomcat.apache.org/whichversion.html 查询版本对应关系

把中央仓库中提供的 xml 复制到项目的 pom.xml

 

3、创建目录  

1)在 main 目录下 , java 目录并列 , 创建一个 webapp 目录
2)在刚创建的webapp文件夹下创建文件夹WEB-INF,然后在该文件夹下创建web.xml
3)在web.xml文件里面编写如下代码
<!DOCTYPE web-app PUBLIC
        "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
        "http://java.sun.com/dtd/web-app_2_3.dtd" >
 
<web-app>
    <display-name>Archetype Created Web Application</display-name>
</web-app>

4、编写代码

在main目录下创建一个HelloServlet类:

@WebServlet("/hello")  
public class HelloServlet extends HttpServlet {
    @Override 
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        System.out.println("hello Servlet");
        resp.getWriter().write("hello Servlet");
    }
}

  • HttpServletRequest 表示 HTTP 请求。  Tomcat 按照 HTTP 请求的格式把 字符串 格式的请求转成了一个 HttpServletRequest 对象
  • HttpServletResponse 表示 HTTP 响应。 代码中把响应对象构造好 ( 构造响应的状态码 , header, body 等 )
  • resp.getWriter() 会获取到字符流对象 , 通过字符流对象就可以写入一些数据 , 写入的数据会被构造成一个 HTTP 响应的 body 部分 , Tomcat 会把整个响应转成字符串 , 通过 socket 写回给浏览器.

 注意点:

1、我们的代码不是通过 main 方法作为入口了. main 方法已经被包含在 Tomcat 里, 我们写的代码会被 Tomcat 在合适的时机调用起来. 此时我们写的代码并不是一个完整的程序, 而是 Tomcat 这个程序的一小部分逻辑.
2、我们随便写个类都能被 Tomcat 调用嘛? 满足啥样条件才能被调用呢?
主要满足三个条件:
a) 创建的类需要继承自 HttpServlet
b) 这个类需要使用 @WebServlet 注解关联上一个 HTTP 的路径
c) 这个类需要实现 doXXX 方法.
当这三个条件都满足之后, Tomcat 就可以找到这个类, 并且在合适的时机进行调用.

5、打包程序

点击maven->package,就可以打包程序了 

出现以下信息则打包成功 

注意点:如果想要修改打包的压缩包名字,可以在pom.xml文件里面增加如下代码:

<!-- war为tomcat打包压缩包的后缀-->
<packaging>war</packaging>
<!--    hello_servlet为自己想要修改打包压缩包的名字-->
    <build>
        <finalName>hello_servlet</finalName>
    </build>

6、部署程序

war 包拷贝到 Tomcat webapps 目录下, 启动 Tomcat , Tomcat 就会自动把 war 包解压缩

 

 

7、验证程序

运行Tomcat文件 :startup.bat ,在浏览器输入运行文件路径,观察结果

 

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

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

相关文章

喜讯!热烈祝贺安科瑞DJSF1352-RN/D直流电能表取得UL证书

安科瑞虞佳豪 UL认证是由美国安全实验室&#xff08;Underwriters Laboratories&#xff09;提供的安全性认证服务。UL认证虽然不是强制的&#xff0c;但它是北美市场的保证&#xff0c;有UL标志的产品具有很高的市场认可度。 2安科瑞导轨式直流电能表 安科瑞导轨式直流电能…

visualgo学习与使用

前言&#xff1a;在反反复复学习数据结构和算法的过程中“邂逅”了visualgo----这款超级棒的学习网站。喜悦之情不亚于我以前玩前端时发现codepen时的快乐。 地址&#xff1a;https://visualgo.net/en visualgo是新加坡国立大学计算机学院一位很棒的博士老师Dr. Steven Halim …

基于M1芯片的Mac的k8s搭建

基础环境 centos8 macbook pro M1 vm vm安装centos8参考:MacBook M1芯片 安装Centos8 教程&#xff08;无界面安装&#xff09;_m1安装centos 8.4_Mr_温少的博客-CSDN博客 步骤 参考: MacOS M1芯片CentOS8部署搭建k8s集群_Liu_Shihao的博客-CSDN博客 所有机器前置配置 …

SSH登录和SSH免密登录

在了解ssh的时候产生了概念混淆&#xff0c;发现ssh登录和ssh免密登录是两码事。 可以从目的和过程对比这两个概念&#xff1a; 1.目的 1.1 SSH登录 简单来说就是&#xff1a;建立客户端和服务器之间安全的远程连接&#xff0c;登录远程服务器&#xff0c;以访问文件系统 。…

C语言——经典面试题

哈喽&#xff0c;大家好&#xff0c;今天我们来学习一道面试过程中可能会出现的一道笔试题 有这样一段代码&#xff0c;分析在VS编译器的运行结果 #include<stdio.h> int main() {int i 0;int arr[10] { 1,2,3,4,5,6,7,8,9,10 };for (i 0; i < 12; i){arr[i] 0;pr…

线性回归预测

目录 1、线性回归 2、R-Squared 1、线性回归 在机器学习和统计建模中&#xff0c;这种关系用于预测未来事件的结果 线性回归使用数据点之间的关系在所有数据点之间画一条直线 这条线可以用来预测未来的值 在机器学习中&#xff0c;预测未来非常重要。比如房价、股票等预测 …

Docker核心组件

Docker核心组件 -镜像 Docker Registry 镜像仓库 (Docker Registry) 负责存储、管理和分发镜像&#xff0c;并且提供了登录认证能力&#xff0c;建立了仓库的索引。 镜像仓库管理多个 Repository&#xff0c; Repository 通过命名来区分。每个 Repository 包含一个或多个镜像…

UI自动化测试用例管理平台搭建

用到的工具&#xff1a;python3 django2 mysql RabbitMQ celery selenium python3和selenium这个网上很多教程&#xff0c;我不在这一一说明&#xff1b; 平台功能介绍&#xff1a; 项目管理&#xff1a;用于管理项目。每个项目可以设置多个环境&#xff0c;例如开发环境…

winpcap 发包工具

本工具主要用来进行网络协议的调试&#xff0c;主要方法是&#xff0c;对现场数据抓包&#xff0c;然后将数据包带回交给开发人员&#xff0c;开发人员将该数据包重新发送和处理&#xff0c;模拟现场环境以便于调试和分析。 &#xff08;一&#xff09;使用方法 命令行下输入s…

linux0.12-10-chr_drv

[466页] 第10章 字符设备驱动程序 466–10-1-总体功能 466–10-1-1-终端驱动程序基本原理 467–10-1-2-Linux支持的终端设备类型 468–10-1-3-终端基本数据结构 472–10-1-4-规范模式和非规范模式 473–10-1-5-控制台终端和串行终端设备 476–10-1-6-终端驱动程序接口 476–…

【微信小程序】如何获取用户手机号授权登录

一. 前置条件 目前该接口针对非个人开发者&#xff0c;且完成了认证的小程序开放&#xff08;不包含海外主体&#xff09;&#xff0c;也就是说只针对企业认证小程序开放。若用户举报较多或被发现在不必要场景下使用&#xff0c;微信有权永久回收该小程序的该接口权限。在使用…

到底什么是CIDR(无类域间路由)?做网络的一定得懂这个术语!

CIDR&#xff08;无类域间路由&#xff09;是一种用于对互联网IP地址进行聚合和分配的技术。它通过改变IP地址的分配方式&#xff0c;有效地解决了IPv4地址空间不足的问题。 本文将详细介绍CIDR的原理、使用方法以及它对互联网的影响&#xff0c;还会针对CIDR出三道例题&#x…

使用SolVES 模型与多技术融合快速实现生态系统服务功能社会价值评估

生态系统服务是人类从自然界中获得的直接或间接惠益&#xff0c;可分为供给服务、文化服务、调节服务和支持服务4类&#xff0c;对提升人类福祉具有重大意义&#xff0c;且被视为连接社会与生态系统的桥梁。自从启动千年生态系统评估项目&#xff08;Millennium Ecosystem Asse…

金融学学习笔记第3章

第3章 管理财务健康状况和业绩 一、财务报表的功能 财务报表有三个重要的经济功能: (1)向公司的所有者和债权人提供关于公司目前状况及过去财务表现的信息。 (2)为所有者及债权人设定经营目标,对管理层施加限制提供了便捷的方式。 (3)为财务计划提供了方便的模式。 二、…

【马蹄集】第十二周作业

第十二周作业 目录 MT2056 二阶前缀和MT2057 门票MT2058 最大的平均值MT2068 高数考试MT2069 等差 MT2056 二阶前缀和 难度&#xff1a;黄金    时间限制&#xff1a;1秒    占用内存&#xff1a;128M 题目描述 在一个直角坐标系上&#xff0c;有 n n n 个坐标上有元素值&…

发表计算机SCI期刊,有哪些建议? - 易智编译EaseEditing

要发SCI论文&#xff0c;首先得写一篇论文&#xff0c;然后再向SCI期刊投稿&#xff1a; 计算机SCI论文是一种重要的学术论文&#xff0c;需要遵循一定的写作规范和要求。以下是一些写作建议&#xff1a; 选择合适的标题和摘要。 标题应该简明扼要&#xff0c;能够准确反映论…

UE Http Server 插件说明

1. Create Http Server 创建Http服务器。 Port : 监听端口&#xff0c;范围 1 - 65535&#xff0c;要保证系统唯一&#xff0c;不然会监听失败。 2. Bind 绑定网页路由回调。 Target &#xff1a;HttpServer 对象 Http Path: 绑定路径&#xff0c;如 ”/index“ Http Verbs…

基于IMX8 实时ethercat的手机机器人方案设计

结构&#xff1a; 1、下述结构为操控手柄&#xff0c;用于采集人手运动信号&#xff0c;传递至上位机&#xff0c;对其他设备进行遥操控 2、手柄内含4个电机旋转副的手柄机械臂&#xff0c;内置16位分辨率旋转编码器记录角位移&#xff1b; 3、上位机连接手柄电机、器械电机…

【Java递归】一篇文章带你了解,什么是递归 ,递归的特点,递归应用场景,递归练习题

博主&#xff1a;東方幻想郷 专栏分类&#xff1a;Java | 从入门到入坟 Java递归 ⭐ 递归的定义⭐ 递归的特点⭐ 递归应用场景⭐ 简单例子⭐ 递归练习题&#x1f30c; 练习题模板&#x1f3f4;‍☠️ 练习题答案&#xff1a; ⭐ 递归的定义 &#x1f31f;递归是一种在方法通过调…

使用echocollect e将西门子PLC数据转发至SQL Server数据库

一 背景 随着工业4.0和工业大数据的发展&#xff0c;越来越多的制造型企业开始应用大型数据库来收集和分析数据&#xff0c;以辅助生产运营的决策。在制造工厂中实时收集和分析设备数据能够优化生产流程、减少停机时间并提高效率。然而&#xff0c;这些必要的设备数据通常被“…