【JavaEE】如何开始最基础的Servlet编程(借助Tomcat实现)

news2024/11/15 17:40:46

什么是Servlet

我们知道服务器工作的三部曲:接收请求 -> 处理请求并计算响应 -> 发送响应

Servlet是个接口,实现这个接口的类就是用来进行中间的一个步骤“处理请求并计算响应的”,应用于HTTP传输的中间层。

借助Tomcat服务器进行Servlet编程的七个步骤

  1. 创建Maven项目

  1. 引入Servlet依赖(从Maven中央仓库下载

  • 中央仓库地址:Maven Repository: Search/Browse/Explore (mvnrepository.com)

  • 搜索servlet找到Java Servlet API

  • 点击需要的版本

  • 复制后在pom.xml中引用依赖

  1. 创建目录结构(main目录下webapp>WEB-INF>web.xml

  • 然后在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>

Tomcat需要借助这个文件来正确处理webapp中的动态资源

  1. 编写代码

  • 在java目录下创建java文件

  • 类继承HttpServlet,重写doGet方法(需要什么请求就重写哪个do方法)

public class HelloServlet  extends HttpServlet {
    @Override
    protected  void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    super.doGet(req, resp);
    }
}
  • doGet这些方法的使用逻辑:

  1. 当Tomcat收到GET请求的时候,就会触发这个doGet方法。

  1. Tomcat解析HTTP报文,生成一个HttpServletRequest对象作为第一个参数。

  1. 第二个参数HttpServletResponse是一个空壳,doGet的内容就是根据业务逻辑计算响应,内容填充到HttpServletResonse对象中。

  1. 最后就是Tomcat根据HttpServletResponse对象构造一个HTTP报文发送给客户端。

这里写一个简单的打印显示

public class oServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req,
                         HttpServletResponse resp) throws ServletException, IOException {
        System.out.println("hello servlet");
        resp.getWriter().write("hello client");
    }
}
  • 一定把super.doGet(req, resp);删了

  • 在类上加上@WebServlet("")注解

这个注解可以约定特定的访问path,只有这个path才能触发本方法。(因为GET的请求很多,但可能有多种处理方案,比如上述只有path为/hello时候才会触发这个doGet)

p.s.这个根据请求的路径找到对应的类,再调用对应的doXXX方法的过程,叫做“路由”

  1. 打包程序

  • 在IDEA右边栏的Maven中找到Servlet生命周期中找到package,然后双击就能自动打包程序(验证依赖、编译代码等..)

  • 在左边栏项目中可以看到jar包

  • 假如要将程序部署到Tomcat中,还需要打包成war包(Tomcat要求的格式)。在pom.xml中加入<packaging>war</packaging>

packaging用于设置打包格式,build finalName用于设置包生成的格式

  • 左边栏项目中可以看到war包

  1. 部署程序

  • 将war包拷贝到Tomcat的webapps目录中

  • startup.bat启动Tomcat,Tomcat会自动对war包进行解压缩

  1. 验证程序

  • 保持Tomcat的打开状态,然后基于localhost:8080再输入相对路径访问,就可以看到效果

如何使用Smart Tomcat插件简化上述流程

  1. 下载安装Smart Tomcat插件

  • IDEA中搜索Smart Tomcat并安装

  1. 添加Smart Tomcat配置

  • IDEA右上角选择"编辑配置"

  • 点"+"选择Smart Tomcat配置文件

  • 配置Tomcat所在目录(仅第一次使用时需要)

  • Context Path就是请求的路径

比如此时就是基于localhost:8080/newCat进行访问

  1. 开始运行

  • 点击运行之后, 部署操作就自动实现了

p.s. Tomcat实现的方式有很多种,不一定需要打包然后copy到webapps目录下才能实现部署, Smart Tomcat实现的方式就跳过了打包的步骤.

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

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

相关文章

【论文速递】WACV2022 - 从边界框标注学习小样本分割

【论文速递】WACV2022 - 从边界框标注学习小样本分割 【论文原文】&#xff1a;Learning Few-shot Segmentation from Bounding Box Annotations 获取地址&#xff1a;https://openaccess.thecvf.com/content/WACV2023/papers/Han_Learning_Few-Shot_Segmentation_From_Bound…

Word文档和PDF文件如何互相转换?

工作中&#xff0c;有时候我们需要把Word转换成PDF格式&#xff0c;转换后不但更美观、专业&#xff0c;也可以防止文档被修改。 那Word文档如何转换成PDF文件呢&#xff1f;其实在Word里面就可以直接转换。 文档编辑好后&#xff0c;在菜单中点击【文件】选项&#xff0c;然…

搭建 Go 语言的开发环境(文末附视频讲解)

从本小节开始&#xff0c;我们就要正式动手实践了。 类比现实生活&#xff0c;我们若要钉钉子&#xff0c;就需要准备锤子&#xff1b;想要烧菜&#xff0c;就需要准备灶具和食材…… 类似地&#xff0c;若要在电脑上编写 Go 语言程序&#xff0c;便要先配置开发环境。 下载和…

干货 | 互联网广告数据的匿名化方案研究

以下内容整理自清华大学《数智安全与标准化》课程大作业期末报告同学的汇报内容。第一部分&#xff1a;背景介绍一、匿名化必要性互联网广告具有非常重要的商业价值&#xff0c;同时也是涉及数据处理十分密集的行业&#xff0c;出现了操作规范化、个人信息保护和商业数据安全等…

[GXYCTF2019]禁止套娃(无参数RCE)

目录 信息收集 知识讲解 涉及函数 PHP的正则表达式 无参rce 用到的函数 思路分析 方法一 方法二 信息收集 拿到这道题&#xff0c;抓包看了看&#xff0c;啥也没有&#xff0c;用dirsearch爆破目录发现.git目录&#xff0c;猜测存在.git源码泄露&#xff0c;用githac…

Web Spider XHR断点 堆栈跟值 逆向案例(四)

声明 此次案例只为学习交流使用&#xff0c;抓包内容、敏感网址、数据接口均已做脱敏处理&#xff0c;切勿用于其他非法用途&#xff1b; 文章目录声明前言一、任务说明二、网站分析三、XHR断点调试&#xff0c;扣JS加密代码四、代码实现1、JS加密代码&#xff1a;encode.js2、…

安卓逆向:基础入门(一)

前言随着app的广泛应用&#xff0c;使用过程中&#xff0c;难免会遇到些很不友好的功能&#xff0c;比如&#xff1a;游戏充值、间断性弹窗广告、续费解锁下一回等等。而随之会产生如何将这些功能取消掉&#xff0c;而Android逆向就可以做到&#xff0c;纵向丝滑。当然这只是安…

Kinect与TOF、双目、结构光相机比较相机国产、非国产统计参数对比分析

Kinect与TOF、双目、结构光相机比较相机国产、非国产统计参数对比分析 Kinect v1和Kinect v2之间的参数比较 从图中可以看出&#xff0c;Kinect v2的表现比Kinect v1要好得多&#xff1a;首先最令人印象深刻的是分辨率的提高&#xff0c;v2达到了1080p&#xff0c;甚至视野也大…

JavaWeb | JDBC概述及IDEA连接MySQL

本专栏主要是记录学习完JavaSE后学习JavaWeb部分的一些知识点总结以及遇到的一些问题等&#xff0c;如果刚开始学习Java的小伙伴可以点击下方连接查看专栏 本专栏地址&#xff1a;&#x1f525;JavaWeb Java入门篇&#xff1a; &#x1f525;Java基础学习篇 文章目录一、前言二…

java基础学习 day36(字符串相关类的底层原理)

字符串存储的内存原理 直接赋值会复用字符串常量池中已有的new出来的不会复用&#xff0c;而是开辟一个新的空间来创建 “”号比较的到底是什么 基本数据类型比较数据值引用数据类型比较地址值 PS. 所以以后对引用数据类型&#xff0c;不要用“”&#xff0c;改用.equals()…

RS485接线方式小科普

欢迎来到东用知识小课堂&#xff01;RS-485采用平衡发送和差分接收方式实现通信&#xff1a;发送端将串行口的ttl电平信号转换成差分信号a&#xff0c;b两路输出&#xff0c;经过线缆传输之后在接收端将差分信号还原成ttl电平信号。RS-485总线网络拓扑一般采用终端匹配的总线型…

【Linux】基于 Pintos 实现新的用户级程序的系统调用 | 冯诺依曼架构

&#x1f4ad; 写在前面&#xff1a;本章我们首先会明确冯诺依曼体系结构的概念&#xff0c;旨在帮助大家理解体系结构在硬件角度去理解数据流走向的问题。理解完之后我们再去谈操作系统&#xff0c;这个在之前的章节已经有所铺垫&#xff0c;当时我们只讲解了操作系统是什么&a…

车载以太网 - 车辆信息和车辆声明 - 09

到今天这一篇,对于ISO 13400 - 2的DoIP协议介绍就完事了,对DoIP协议的规范介绍基本已经全部包括了,无论是我们作为软件开发人员还是测试人员,了解这部分内容基本就能够满足这块基础的开发要求,大家如果在研究或者学习这块内容的时候有什么问题欢迎私聊;并且在本篇文章结束…

Nginx使用(四)动静分离实例

一、简介Nginx动静分离简单来说就是把动态跟静态请求分开&#xff0c;不能理解成只是单纯的把动态页面和静态页面物理分离。严格意义上说应该是动态请求和静态请求分开&#xff0c;可以理解成使用Nginx处理静态页面&#xff0c;Tomcat处理动态页面&#xff0c;动静分离从目前实…

Linux系统安装Redis

我这里以CentOS7为例 VMware安装完centOS7之后 1.首先开启网络&#xff1a; 查看ip的命令不是传统的ifconfig或者ipconfig而是ip address 刚安装完使用ip address查看的时候会发现没有ip地址&#xff0c;这里需要修改设置启动网卡 vi /etc/sysconfig/network-scripts/ifcf…

英语学习打卡day1

2023.1.19 重点单词 1.speculation n.推测&#xff0c;投机 speculate v. speculative adj. spectate v.看 spectator inspect 检查&#xff08;往里看&#xff09; aspect 外观&#xff08;看一眼&#xff09; 2.literally adv.(强调事实可能令人惊讶)真正地&#xff0c;…

5.JAVA基础入门必备

文章目录前言一、数据类型二、标识符三、键盘录入四、IDEA中的第一个代码五、IDEA中的设置六、IDEA的项目和模块操作总结前言 一、数据类型 重点记忆byte的取值范围!! 不同类型数据的打印: public class VariableDemo3{//主入口public static void main(String[] args){//byt…

FrameBuffer 应用

1.Frame 是帧的意思&#xff0c; buffer 是缓冲的意思&#xff0c;所以 Framebuffer 就是帧缓冲。Framebuffer 就是一块内存&#xff0c;里面保存着一帧图像。帧缓冲&#xff08;framebuffer&#xff09;是 Linux 系统中的一种显示驱动接口&#xff0c;它将显示设备&#xff08…

技术写作指南。 坚持不下去,怎么办?(文末附视频)

“坚持不下去&#xff0c;怎么办&#xff1f;”这是很多人会遇到的问题&#xff0c;不仅仅是技术写作&#xff0c;任何需要耗费额外精气神的事情都无法长期坚持&#xff0c;例如运动健身、专业学习等。 这里分享一点自己的经验与看法&#xff0c;希望可以对大家的学习有所帮助…

Y9000P Ubuntu/Windows 双系统安装

一&#xff1a;配置介绍 Y9000P默认系统Win11&#xff0c;系统盘500G&#xff0c;从盘2T&#xff0c;内存32G&#xff0c;显卡3060 二&#xff1a;Windows系统分盘 系统盘&#xff08;磁盘1&#xff09;建议通过压缩卷分出300M作为Ubuntu的引导分区。 从盘&#xff08;磁盘2…