Servlet篇 —— 我的第一个Servlet程序

news2024/12/23 6:10:43

☕导航小助手☕

🍚写在前面

      🍜一、Maven的介绍

      🍱​二、第一个Servlet的创建

                   🍔🍔2.1 创建项目

                   🥩🥩​2.2 引入依赖

                   🦪🦪​2.3 创建目录

                   🍣🍣2.4 编写代码

                   🍛🍛​2.5 打包程序

                   🍤🍤​2.6 部署程序

                   🍰🍰​2.7 验证程序

      🥡三、安装 Smart Tomcat


写在前面

在上一篇博客中,主要介绍了 Tomcat 的下载和安装,当然 也介绍了 Tomcat 的使用(当然,介绍的仅仅是 部署静态页面 的部分) ~

而 这一篇博客 主要介绍的是 关于 Tomcat 的动态页面,这就涉及到了一些关于 Tomcat 所提供的 API —— Servlet ~

于是,就可以基于 Servlet 编写代码,部署到 Tomcat 上,实现 动态页面 的效果 ~

一、Maven的介绍

Maven 是一个 "构建工具",具有可以 针对代码进行依赖管理、编译、打包、验证、部署 等功能 ~

之前所写的代码,都是在 Idea 中,直接点击 "运行",就直接 "运行" 了,而没有经过上面的各种步骤 ~

这是因为 之前所写的代码都很简单(大部分代码都是 单个 .java文件,并且也不需要打包部署给其他人)~


如果是一个很复杂的项目,依赖了很多的第三方库,并且自身还有很多模块,模块也有依赖关系......

此时,程序的编译运行就不是直接一点就可以的 ~ 

Maven 就可以视为是 针对复杂项目进行管理的一个解决方案 ~


当然,Java 世界中的构建工具有很多(Ant、Gradle 等等),但是 Maven 是当下最主流使用的构建工具之一 ~

其中,Maven 自身的功能有很多的,不过现阶段只需要关心使用 它的两个功能:

  • 管理依赖:想使用某个第三方库,就是用 Maven 把这个库下载下来并导入到项目中
  • 打包:把代码编译好,把 .calss文件 打成压缩包(.jar 或者 .war)

maven项目 的目录结构:

二、第一个Servlet的创建

2.1 创建项目

需要注意的是,此处不在创建一个普通的 Java项目,而是要创建一个 Maven项目 ~

2.2 引入依赖

此处所涉及的依赖,是写 Servlet 程序 所需要的依赖(需要导入 Servlet 的 jar包),需要把这个 jar包 下载导入到项目中 ~

此处,可以使用 maven 来自动的下载、导入 jar包 ~

下载网址:Maven中央仓库

 

到了这一步,就可以来下载 jar包 了,但是 现在不想使用 手动下载的套路(具体可以去看一看 MySQL 那部分的下载方式),我们可以使用 Maven 自动帮忙下载 ~

复制内容之后,粘贴到 pom.xml文件 中:

当然,也不是随便就粘贴的~

需要注意一下标签的结构:最外层是 project 标签,是 pom.xml 自带的 ;需要在里面手动创建一个 dependencies 标签,然后再把复制的内容 粘贴到这个标签内部 ~ 

 

2.3 创建目录

虽然说,创建项目之后 会自动的创建一些目录,但是 还需要手动的创建出一些其他的必要的目录(这个是固定的操作,没有为什么 )~

创建的目录的名字是 webapp(注意,不是 webapps)

此时,创建的目录名字是 WEB-INF

此时,创建出的文件取名为 web.xml


此时,项目的目录结构是这样的:

至于为什么是这样创建的,这属于 Tomcat 做出的要求,要想使得程序被 Tomcat 识别,那么就只能去遵守 ~ 


创建好了的 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>

至于 web.xml文件 中的内容是啥意思,我们也不需要去关心,后续也不会去修改这个文件 ~

我们只需要知道,Tomcat 加载一个自己写的程序,就会先读取 web.xml文件 里面的内容 ~

2.4 编写代码

创建 HelloServlet.java文件 ~

  • 创建类,继承 HttpServlet类
  • 重写 doGet方法
  • 编写代码执行逻辑
  • 加上 WebServlet注解
import javax.jws.WebService;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

@WebServlet("/hello")
//重写 doGet方法 后,还需要需要加上这个注解,约定 HTTP请求的 URL 是啥样的 path,才会调用这个Servlet类
//不是所有的 GET请求,都会触发 doGet方法(只有满足特定的路径的请求,才会触发)
//不能乱写:前面一定要加上 / ,后面一定不要加 /
public class HelloServlet extends HttpServlet {
    //HttpServlet 父类里面本身有一个 doGet方法,此处通过重写的形式,让 doGet 执行到自己写的代码
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //把自动生成的调用父类的方法,一定给删掉,否则会出现问题
        //super.doGet(req, resp);

        //当前只需要写一个 Hello Servlet 的逻辑
        //这个是打印在响应报文中,显示到页面上
        resp.getWriter().write("Hello Servlet");

    }
}

需要注意的是:

  • 上述的代码没有 main方法,不能单独执行,main方法 在 Tomcat 里面 ,上述代码需要部署到 Tomcat中,由 Tomcat 进行调用 ~

2.5 打包程序

打包操作,其实非常简单,借助 maven,可以一键式完成 ~

此时,在项目目录下 就生成了所需要的结果:

可是,默认生成的压缩包是 jar包(Java世界 中的通用的压缩包),而 Tomcat 识别的确是 war包 ~

所以,此处需要修改 pox.xml,让生成工作生成 war包 ~

<packaging>war</packaging>

 当然,也可以顺便修改一下 生成的包的名字(可选项,但是如果不改 后续会比较麻烦)

    <build>
        <finalName>hello_servlet</finalName>
    </build>


此时,重新 打包:

2.6 部署程序

此时,就可以把刚才得到的 war包,拷贝到 Tomcat 的 webapps目录 中 ~

 

接下来,当然要 启动 Tomcat:

在启动 Tomcat 的时候,就能在 Tomcat 的日志中,看到一个提示,意思就是 Tomcat 发现了这个 war包,同时就会对这个 war包 进行解压缩和加载 ~

2.7 验证程序

 当前 已经把程序部署到 Tomcat 上,还需要让浏览器去构造一个 HTTP 的 GET请求:

127.0.0.1:8080/war包名字/代码中所写的注解

 

 

三、安装 Smart Tomcat

一看上面的过程就非常的繁琐,现在就可以介绍一种稍微简单一点的办法(只是稍微简单一点)~

前面的 第一、二、三步骤 创建一个项目的时候,就操作一次就好了;第四、五、六、七步骤 是每次修改代码,都需要进行的;所以说 可以修改 第四、五、六、七步骤 来进行优化,而 编写代码 和 验证 部分 没有办法优化,所以可以优化其他的两点 ~

可以借助 Idea 里面的插件 来进行简化 打包 和 部署 —— Smart Tomcat ~

就是下面的这个:

Smart Tomcat 的功能,就是能够在 Idea 中调用 Tomcat(启动 Tomcat,就不需要手动的找到 启动 Tomcat 的脚本来运行:就是 startup.bat那个),可以直接在 Idea 上面点一下就可以运行 Tomcat 了~

之后点击 OK,就会出现下面的界面:

然后再点击小三角形,编译打包部署程序,并运行 Tomcat ~

Tomcat 已经跑起来了,同时 乱码也是消失不见的 ~

 此时,就可以在浏览器输入 127.0.0.1:8080/hello_servlet/hello 


后续,如果想重新修改代码,直接重新运行小三角形即可,Smart Tomcat 会自动进行上述操作 ~

好了,关于  的内容就介绍到这里了 ~

希望大家看完之后会收获满满 ~

如果感觉这一篇博客对你有帮助的话,可以一键三连走一波,非常非常感谢啦 ~

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

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

相关文章

没想到GoFrame的gcache天然支持缓存淘汰策略

gcache提供统一的缓存管理模块&#xff0c;提供了开发者可自定义灵活接入的缓存适配接口&#xff0c;并默认提供了高速内存缓存适配实现。 先说结论 这篇文章通过结合商业项目的使用场景&#xff0c;为大家介绍了gcache的基本使用、缓存控制以及淘汰策略。 使用gcache做缓存处…

3分钟,快速上手Postman接口测试

Postman是一个用于调试HTTP请求的工具&#xff0c;它提供了友好的界面帮助分析、构造HTTP请求&#xff0c;并分析响应数据。实际工作中&#xff0c;开发和测试基本上都有使用Postman来进行接口调试工作。有一些其他流程的工具&#xff0c;也是模仿的Postman的风格进行接口测试工…

推荐 4 个开源工具

Hi&#xff0c;艾瑞巴蒂&#xff0c;晚上好&#xff01;今天推荐 4 个登上 GitHub 热搜的开源项目&#xff0c;它们分别是&#xff1a;1. 炫酷的 UI 工具&#xff1a;glslViewer2. Textual3. ToolJet&#xff1a;开源的低代码开发框架4. Linux 命令大全搜索工具01炫酷的 UI 工…

程序人生:去了字节跳动,才知道年薪40W的测试有这么多?

今年大环境不好&#xff0c;内卷的厉害&#xff0c;薪资待遇好的工作机会更是难得。最近脉脉职言区有一条讨论火了&#xff1a; 哪家互联网公司薪资最‘厉害’&#xff1f; 下面的评论多为字节跳动&#xff0c;还炸出了很多年薪40W的测试工程师 我只想问一句&#xff0c;现在的…

vue3项目的创建,vite+vue3+ts(3)- router

vue3 有三种写法&#xff1a; 1.compostion API &#xff1a; 还是按照vue2.0写法 2.组合式API: 3. 组合式API 语法糖&#xff08;setup), 语法简洁&#xff08;推荐使用这个&#xff09; 写法&#xff1a; 4. 在.eslintrc.cjs 或者 .eslintrc.js中配置代码&#xff0c;是这个…

聊聊计算机中的寄存器

文章目录前言数据寄存器(DR)地址寄存器(AR)程序状态寄存器(PSW)累加寄存器(AC)乘商寄存器(MQ)程序计数器(PC)指令寄存器(IR)MAR、MDR小结作者&#xff1a;小牛呼噜噜 | https://xiaoniuhululu.com 计算机内功、JAVA底层、面试相关资料等更多精彩文章在公众号「小牛呼噜噜 」 前…

国内第一篇讲解减少卡顿的代码级详细文章

原文链接&#xff1a;原文链接 系统网站应用出现过卡顿&#xff0c;但却不知道如何优化。国内第一篇讲如何减少卡顿的代码级别详细文章&#xff0c;也是性能优化系列文章中的一篇&#xff0c;欢迎点赞、关注&#xff0c;也欢迎对其中的内容进行评论。 经常听人说&#xff0c;“…

配置CentOS为ssh免密码互相通信

文章目录配置CentOS为ssh免密码互相通信配置4台CentOS的集群配置4台CentOS为ssh免密码互相通信配置CentOS为ssh免密码互相通信 配置4台CentOS的集群 修改 /etc/sysconfig/network-scripts/ifcfg-ens33 文件&#xff0c;配置虚拟机 IP&#xff0c;以其中一个虚拟机为例&#x…

html实现贪吃蛇游戏(源码)

文章目录1.实现贪吃蛇1.1 界面设计1.2 界面动态效果1.3 界面主代码2.资源目录源码下载作者&#xff1a;xcLeigh 文章说明 html实现贪吃蛇源码&#xff0c;酷炫的界面效果&#xff0c;点击开始游戏后&#xff0c;通过键盘的上下左右按键&#xff0c;操作移动方向&#xff0c;代码…

@DateTimeFormat和@JsonFormat介绍

文章目录1.DateTimeFormat注解1.1DateTimeFormat注解简介1.2DateTimeFormat注解的功能1.3DateTimeFormat注解的注意点1.4DateTimeFormat功能演示1.4.1类型转换异常情况测试1.4.2接收url路径传参格式测试1.4.3接收Form-Data数据格式测试1.4.4接收JSON数据格式测试2.JsonFormat注…

python实现基于RPC协议的接口自动化测试

什么是RPC RPC&#xff08;Remote Procedure Call&#xff09;远程过程调用协议是一个用于建立适当框架的协议。从本质上讲&#xff0c;它使一台机器上的程序能够调用另一台机器上的子程序&#xff0c;而不会意识到它是远程的。 RPC 是一种软件通信协议&#xff0c;一个程序可…

Day1:垂直水平居中方式(至少6种,必须包含弹性盒子)

目录 垂直水平居中方式 方式1&#xff1a;弹f性盒子(1) &#xff08;推荐&#xff09; 方式2&#xff1a;弹性盒子(2) &#xff08;推荐&#xff09; 方式3&#xff1a;弹性盒子(3) 方式4&#xff1a;grid布局&#xff08;1&#xff09; &#xff08;推荐&#xff09; 方…

vs2019 编译调试 QT Creator 源码

vs2019 编译调试 QT Creator 源码 开始使用Qt Creator 5.15.2 调试编译 Qt Creator 6.0.2源码&#xff0c;对源码进行了 裁剪&#xff0c;将一些暂时用不到的文件删除&#xff0c;比如plugins里面的绝大部分文件。然后使用vs2019打开工程&#xff0c;进行编译调试。下面对这个…

IDEA2022插件:EasyCode一键生成增删改查代码

IDEA2022插件&#xff1a;EasyCode一键生成增删改查代码 文章目录IDEA2022插件&#xff1a;EasyCode一键生成增删改查代码建表下载插件IDEA连接数据源引入必要依赖配置SpringBoot数据库连接使用EasyCode生成代码生成效果启动测试小错误接口测试自行配置更好用尾述结语建表 新建…

【案例源码公开】国产AD+全志T3开发案例,为能源电力行业排忧解难!8/16通道

前 言 本文主要介绍基于全志科技T3(ARM Cortex-A7)国产处理器的8/16通道AD采集开发案例,使用核芯互联CL1606/CL1616国产AD芯片,亦适用于ADI AD7606/AD7616。CL1606/CL1616与AD7606/AD7616软硬件兼容。 备注: (1)创龙科技TL7606I模块使用AD芯片为核芯互联CL1606或ADI AD…

【C语言】初始C语言系列 代码详解 _ 编程入门 _【内附代码和图片】_ [初阶篇 _ 总结复习]

【前言】 本篇文章为初始C语言部分&#xff0c;C语言是编程的入门语言&#xff0c;所以也说是编程入门&#xff1b; 学好C语言的入门内容&#xff0c;才能真正的入门编程&#xff0c;而C语言的学习对于刚入门的同学还是有一些难度的&#xff0c;需要踏踏实实的自己去理解。 在此…

REDIS篇(4)——命令执行过程(readQueryFromClient)

前面讲过&#xff0c;ae循环在收到客户端请求时&#xff0c;会调用请求处理器——acceptTcpHandler &#xff0c;而请求处理器会创建新的套接字并监听和绑定命令处理器——readQueryFromClient。本篇着重分析命令的执行过程。 大概可分为&#xff1a; 1、读取并分析套接口中协…

QT学习_06_UI设计

1 创建项目 前5篇的学习笔记都没有用到ui&#xff0c;从现在开始&#xff0c;就要用这个ui了 创建项目的时候&#xff0c;把这个Generate form√上 项目文件中&#xff0c;就多了mainwindow.ui 2 ui设计界面的介绍 双击这个.ui文件&#xff0c;就可以进入设计界面 下面简单的…

字节跳动内推软件测试【自动化测试】岗,最低年薪50W+

目录 字节跳动内推 测试开发工程师技能成长路径 字节跳动内推 今年大环境不好&#xff0c;内卷的厉害&#xff0c;薪资待遇好的工作机会更是难得。最近脉脉职言区有一条讨论火了&#xff1a; 哪家互联网公司薪资最‘厉害’&#xff1f; 下面的评论多为字节跳动&#xff0c;还炸…

JAVA计算机毕业设计网约车管理系统(附源码、数据库)

JAVA计算机毕业设计网约车管理系统&#xff08;附源码、数据库&#xff09; 目运行 环境项配置&#xff1a; Jdk1.8 Tomcat8.5 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目…