【Servlet基础】Servlet项目创建

news2024/11/28 4:48:54

目录

一、认识Servlet

1.1、认识Tomcat

1.2、Servlet是什么 

1.3、Servlet主要工作 

二、实现第一个Servlet项目

2.1、创建Maven项目

2.2、引入依赖

2.3、创建目录结构 

2.4、编写servlet代码

2.5、打包 

2.6、部署

2.7、验证程序 

三、利用smart Tomcat插件一键完成部署 

3.1、安装Smart Tomcat

3.2、一键式操作 

3.3、Smart Tomcat的适用场景


一、认识Servlet

1.1、认识Tomcat

在了解Servlet前,先讲下什么是Tomcat 

        Tomcat是一个Web服务器,提供Web程序处理服务端对请求的解析和对响应的封装,也就是请求的解析和响应的封装都不需要我们自己手动写程序来完成。

比如我们将一个webapp(Web应用)部署到Tomcat中,如果自己写程序来处理请求和返回响应的内容,就需要调用Tomcat提供的API(Tomcat提供的类和接口中的属性和方法),如果此时更改Web服务器,我们自己写的请求解析和响应的内容就无法使用了。

1.2、Servlet是什么 

        Servlet是一种实现动态页面的技术,所谓动态页面就是用户不同,时间不同,输入参数不同,页面内容也不会发生变化,而静态页面是内容始终是固定不变的,HTML就是静态的资源文件。

        Servlet为不同的JavaWeb服务器规定了响应的编程规范,它屏蔽了Web服务器实现的细节(不同的服务器对请求的解析和响应可以是不同的),但是定义好了统一的编程规范(统一的类、接口、方法),也就是换一个Web服务器,还可以使用。

1.3、Servlet主要工作 

  1. 建立连接:客户端和程序的连接(当用户输入请求URL之后,程序能够感知到用户的请求)
  2. 获取用户请求参数:处理HttpRequest对象 
  3. 将服务器处理结果返回客户端:返回HttpRespond对象

二、实现第一个Servlet项目

Maven项目的引入 

  1. Maven是一个构造工具,针对代码进行依赖管理、编译、打包、验证、部署等功能。之前写的代码,在IDEA中直接点击运行即可,是因为之前写的代码不需要进行打包部署给别人用
  2. 如果是一个复杂的项目,依赖了很多第三方库,同时自身还有很多模块,模块之间也存在依赖关系,此时编译运行就没那么简单,Maven可以视为针对复杂项目进行管理的一个解决方案
  3. Maven支持很多功能,此处主要讲解管理依赖和打包
  4. 管理依赖:如果在项目中要想使用某个第三方库,就可以使用Maven把这个库下载下来并导入到项目中
  5. 打包:把我们代码编译好,将.class文件打包成压缩包(类似.jar和.war)

2.1、创建Maven项目

1、选择Maven创建项目 

2、创建好项目后的目录结构

2.2、引入依赖

2.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>

2.4、编写servlet代码

编写代码是在Java中创建类实现的

1、在网络程序中,就涉及到一对概念:请求和响应 

Tomcat在调用doGet的时候,Tomcat就会解析这次的HTTP请求,生成一个HttpServletRequest对象,这个对象的属性啥的都是和HTTP协议格式匹配的,相当于Tomcat帮我们把HTTP请求解析好了,同时Tomcat也会构造出一个空的HttpServletResponse对象(此处的空对象不是null,而是一个new好但是没有初始化属性的对象),把这个resp对象也会传递到doGet里面。

doGet要做的事情就是根据这次请求,计算出响应,doGet里的代码,就要根据req里不同的参数的细节,生成一个具体的resp对象(往空对象里设置属性),Tomcat就会根据这个响应对象,转换成符合HTTP协议的响应报文,返回给浏览器了。

doGet做的事情,就是根据请求计算响应。

  1. 读取请求并解析
  2. 根据请求计算响应
  3. 把响应写回到客户端

这里的1和3都是Tomcat帮我们实现的,我们写代码只关心2,也就是doGet要完成的工作。

这个注解就相当于把这个Servlet类和一个请求的路径关联起来了(配置路由)

意思就是Tomcat收到请求后,路径为/hello的请求才会调用HelloServlet这个类的代码

2.5、打包 

我们发现上述代码是没有main方法的,main方法是一个程序的入口方法,所以没有main方法我们是不能运行的,因此我们需要打包当前代码,然后部署到Tomcat中,再通过Tomcat来进行调用。

1、找到打包的位置 

2、进行相关准备操作:修改pom.xml

在Maven中,默认打包生成的是jar包(常用Java的打包的方式,jar里面就是一些.class文件),但是Tomcat需要的是war包(本质上和jar包差不多,但是会包含一些的前端代码以及一些Tomcat的配置)

3、判断打包完成

在目录中可以看到war包

2.6、部署

打开Tomcat服务器

将war包拷贝到Tomcat的webapps目录下

2.7、验证程序 

直接输入对应的网址向服务器发送请求,检查服务器能否响应并返回浏览器界面。

三、利用smart Tomcat插件一键完成部署 

对于上述的七大步骤,每次修改代码,都需要重新打包,意味着就需要重复做打包、部署、验证操作,很麻烦,所以我们尝试通过IDEA上的插件,直接把Tomcat给集成起来,从而做到一键式打包部署。

3.1、安装Smart Tomcat

1、安装 

2、配置

3.2、一键式操作 

看到以下内容说明打包部署成功

在浏览器中输入网址给服务器发送请求,检查服务器能否响应并返回浏览器页面

3.3、Smart Tomcat的适用场景

1、Smart Tomcat的运行方式和之前拷贝到webapps中是存在本质区别的

2、Smart Tomcat其实是使用了Tomcat另外一种方式运行,在运行Tomcat的时候,通过特定的参数来指定Tomcat加载某个特定目录中的webapp

因此,上述过程既不会打包,也不会拷贝

这种方式只适用开发和调试阶段~如果是部署到生产环境,还是得打war包,然后拷贝

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

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

相关文章

【Frida】【Android】08_爬虫之网络通信库okhttp3

&#x1f6eb; 系列文章导航 【Frida】【Android】01_手把手教你环境搭建 https://blog.csdn.net/kinghzking/article/details/136986950【Frida】【Android】02_JAVA层HOOK https://blog.csdn.net/kinghzking/article/details/137008446【Frida】【Android】03_RPC https://bl…

【数据结构】AVL 树

文章目录 1. AVL 树的概念2. AVL 树节点的定义3. AVL 树的插入4. AVL 树的旋转5. AVL 树的验证6. AVL 树的删除7. AVL 树的性能 前面对 map / multimap / set / multiset 进行了简单的介绍【C】map & set&#xff0c;在其文档介绍中发现&#xff0c;这几个容器有个共同点是…

152 Linux C++ 通讯架构实战7 ,makefile编写改成for cpp,读配置文件,内存泄漏查找,设置标题实战

读写配置文件代码实战。nginx.conf 一个项目要启动&#xff0c;需要配置很多信息&#xff0c;第一项就是学习如何配置一个项目 nginx.conf的内容 #是注释行&#xff0c; #每个有效配置项用 等号 处理&#xff0c;等号前不超过40个字符&#xff0c;等号后不超过400个字符&#…

时序分解 | Matlab实现GSWOA-VMD改进鲸鱼优化算法优化变分模态分解时间序列信号分解

时序分解 | Matlab实现GWO-CEEMDAN基于灰狼算法优化CEEMDAN时间序列信号分解 目录 时序分解 | Matlab实现GWO-CEEMDAN基于灰狼算法优化CEEMDAN时间序列信号分解效果一览基本介绍程序设计参考资料 效果一览 基本介绍 Matlab实现GSWOA-VMD改进鲸鱼优化算法优化变分模态分解时间序…

《编程菜鸟学 Python 数据分析》让工作自动化起来!

随着我国企业数字化和信息化的深入&#xff0c;企业对办公自动化的效率和灵活性要求越来越高。Python作为一种开源的软件应用开发方式&#xff0c;通过提供强大丰富的库文件包&#xff0c;极大地简化了应用开发过程&#xff0c;降低了技术门槛。Python开发有哪些优势、挑战以及…

NB-IOT——浅谈NB-IOT及模块测试

浅谈NB-IOT及模块基本使用测试 介绍什么是NB-IOT&#xff1f;NB-IOT的特点 使用准备基本使用 总结 介绍 什么是NB-IOT&#xff1f; NB-IoT&#xff0c;即窄带物联网&#xff08;Narrowband Internet of Things&#xff09;&#xff0c;是一种低功耗广域物联网&#xff08;LPW…

Python学习从0到1 day20 第二阶段 面向对象 ② 封装

缘分 朝生暮死犹如露水 —— 24.4.1 学习目标&#xff1a; 1.理解封装的概念 2.掌握私有成员的使用 一、面向对象三大特性&#xff1a; 面向对象编程&#xff0c;是许多编程语言都支持的一种编程思想 简单理解是&#xff1a;基于模板&#xff08;类&#xff09;去创建实体&…

Lua 和 Love 2d 教程 二十一点朴克牌 (上篇lua源码)

GitCode - 开发者的代码家园 Lua版完整原码 规则 庄家和玩家各发两张牌。庄家的第一张牌对玩家是隐藏的。 玩家可以拿牌&#xff08;即拿另一张牌&#xff09;或 停牌&#xff08;即停止拿牌&#xff09;。 如果玩家手牌的总价值超过 21&#xff0c;那么他们就爆掉了。 面牌…

Tulsimer® CH-99硼选择吸附树脂在超纯水除硼领域的卓越应用与优势

超纯水&#xff08;UPW&#xff09;是一种高度纯净的水体形态&#xff0c;通过一系列精密的净化步骤&#xff0c;几乎去除了所有非氢氧成分&#xff0c;包括但不限于微生物、有机污染物及矿物质微量元素。其制备流程涵盖了预处理、反渗透、离子交换、蒸馏、紫外线或超滤等多种高…

成都三环旁的数字影像文创产业园,建设热度高,创新活力足

在成都市金牛区的“九里九园”簇群建设中心区域&#xff0c;一座充满活力的国际数字影像产业园正在崛起。这个成都数字产业园不仅建设热度高涨&#xff0c;更以其创新活力吸引了无数目光。作为数字产业的重要一环&#xff0c;它正在为成都乃至全球的数字文创产业描绘出一幅充满…

plasmo内容UI组件层级过高导致页面展示错乱

我使用plasmo写了一个行内样式的UI组件&#xff0c;但是放到页面上之后&#xff0c;会和下拉组件出现层级错乱&#xff0c;看了一下样式&#xff0c;吓我一跳&#xff1a;层级竟然设置的如此之高 所以就需要将层级设置低一点&#xff1a; #plasmo-shadow-container {z-index: …

vue+element ui实现表单组件的封装

效果图&#xff1a; 主要是使用vue elmentUi 的from的基础上进行封装 使用改组件&#xff0c;是需要自定义从父组件传入一下字段表单字段 export const topicTypeMainTaskEdit: any new Map([// 主任务可编辑状态[feasibleInstructions, // 督办件[{value: documentNum…

基于单片机智能数字温度采集报警器系统设计

**单片机设计介绍&#xff0c;基于单片机智能数字温度采集报警器系统设计 文章目录 一 概要二、功能设计设计思路 三、 软件设计原理图 五、 程序六、 文章目录 一 概要 基于单片机智能数字温度采集报警器系统设计的核心目标是通过单片机实现温度的实时采集、显示以及超温报警…

Nexpose v6.6.244 for Linux Windows - 漏洞扫描

Nexpose v6.6.244 for Linux & Windows - 漏洞扫描 Rapid7 Vulnerability Management, Release Mar 27, 2024 请访问原文链接&#xff1a;https://sysin.org/blog/nexpose-6/&#xff0c;查看最新版。原创作品&#xff0c;转载请保留出处。 作者主页&#xff1a;sysin.o…

Windows启动动画的小秘密

>网管小贾 / sysadm.cc 员工求领导办事&#xff0c;司空见惯&#xff0c;没啥稀奇。 领导求员工办事&#xff0c;想都别想&#xff0c;怎么可能。 然而这世上之事万里总有个一&#xff0c;这不&#xff0c;就在上个礼拜&#xff0c;开天辟地头一遭&#xff0c;让我给碰上…

Redis开源协议调整,我们怎么办?

2024年3月20日, Redis官方宣布&#xff0c;从 Redis 7.4版本开始&#xff0c;Redis将获得源可用许可证 ( RSALv2 ) 和服务器端公共许可证 ( SSPLv1 ) 的双重许可&#xff0c;时间点恰逢刚刚完成最新一轮融资&#xff0c;宣布的时机耐人寻味。 Redis协议调整&#xff0c;对云计算…

需要本地后端的真机调试-微信

打开和修改IP改为电脑与手机同一局域网的 不知道这个要不要

交通标志识别项目 | 基于Tensorflow+SSD实现道路交通标志识别

项目应用场景 面向智能驾驶或自动驾驶场景道路道路交通标志的识别&#xff0c;在交通标志识别的基础上为下一步的智能决策提供前提 项目效果&#xff1a; 项目细节 > 具体参见项目 README.md (1) 安装依赖 Python3.5、TensorFlow v0.12.0、Pickle、OpenCV-Python、Matplotl…

宁波ISO45001:2018职业健康与安全管理体系认证

&#x1f913;ISO45001&#xff1a;2018职业健康与安全管理体系认证 ISO45001&#xff08;OHSAS18001&#xff09;全称&#x1f349;是职业安全卫生&#x1f350;管理标准&#xff0c;是国际上&#x1f955;继ISO9000质量管理体系&#x1f334;标准和ISO14000环境管理&#x1f…

主站设备通过Modbus转Profinet网关与湿度传感器通讯配置

Modbus转Profinet网关&#xff08;XD-MDPN100&#xff09;可以实现不同协议设备通讯&#xff0c;有些现场需要实时监测环境参数&#xff0c;但大由于当时环境仪表设备不能达到直连效果&#xff0c;通过Modbus转Profinet网关&#xff0c;湿度传感器的数据可以被准确、可靠地传输…