【Servlet基础】Servlet项目创建

目录

一、认识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.mzph.cn/news/786859.shtml

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

相关文章

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

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

练习 13 Web [极客大挑战 2019]Secret File

php伪协议请求&#xff0c;php代码审计 参考&#xff1a;BUUCTF__[极客大挑战 2019]Secret File_题解 没有任何上传和登录页面 查看前端源码 发现 <a id"master" href"./Archive_room.php" style"background-color:#000000;height:70px;width:20…

云计算与大数据笔记之Spark【重点:流水线机制】

图片和部分笔记来自于厦门大学-林子雨-大数据技术原理与应用&#xff08;第3版&#xff09; 配套PPT 三大分布式计算系统开源项目Hadoop、Spark、Storm Storm、Hadoop和Spark都是处理大数据的框架&#xff0c;但它们各自在设计上有着不同的侧重点&#xff0c;这导致了它们在实…

【工具-MATLAB】

MATLAB ■ MATLAB-简介■ MATLAB-应用领域■ MATLAB■ MATLAB■ MATLAB■ MATLAB ■ MATLAB-简介 MATLAB是matrix&laboratory两个词的组合&#xff0c;意为矩阵工厂&#xff08;矩阵实验室&#xff09; 美国MathWorks公司出品的商业数学软件, MATLAB和Mathematica、Maple并…

突破编程_前端_JS编程实例(分割窗体组件)

1 开发目标 分隔窗体组件旨在提供灵活的窗体分隔功能&#xff0c;支持横向分割与纵向分隔两种类型&#xff0c;并具备拖拽调整窗体比例的功能&#xff0c;同时提供最小比例设置&#xff0c;以防止窗体被过度缩小&#xff1a; 2 详细需求 2.1 分隔窗体类型 &#xff08;1&…

经纬恒润AUTOSAR产品成功适配芯来RISC-V车规内核

近日&#xff0c;经纬恒润AUTOSAR基础软件产品INTEWORK-EAS&#xff08;ECU AUTOSAR Software&#xff0c;以下简称EAS&#xff09;在芯来提供的HP060开发板上成功适配芯来科技的RISC-V处理器NA内核&#xff0c;双方携手打造了具备灵活、可靠、高性能、强安全性的解决方案。这极…

护眼台灯哪个牌子好?护眼台灯品牌排行前十名推荐

台灯可以说家家必备的一盏灯具&#xff0c;如果家长有正在上学的孩子的更需要一款好的台灯&#xff0c;因为不管是看书、写字、阅读都离不开台灯的帮助&#xff0c;而且一款好的台灯不仅仅能够提供明亮充足的照明环境&#xff0c;而且还能起到保护视力健康&#xff0c;预防近视…

【解决方案】荣耀系统Android8.0 system目录Read-only file system

本来以为直接把Charles证书改成系统证书格式&#xff0c;然后通过mt管理器root之后移动到系统证书目录就行了&#xff0c;结果访问baidu仍然显示网络错误&#xff0c;折腾一晚上。安装为用户证书&#xff0c;又与系统证书冲突。 手机型号&#xff1a;荣耀v10 EMUI&#xff1a…

【Apple Vision Pro 应用】一款专为Vision Pro设计的三维空间无尽跑酷游戏

跑酷类游戏基本上是手机时代的大爆款&#xff08;充分利用手机的交互优势&#xff09;&#xff0c;代表神庙逃亡、地铁跑酷等&#xff0c;在VP眼镜端&#xff0c;还能玩出什么花样来&#xff0c;我知道我身边有一个创业者在做&#xff0c;目前还没上线&#xff0c;分享一家国外…

vite + vue项目报错:Uncaught ReferenceError: globalThis is not defined

vite vue项目报错&#xff1a;Uncaught ReferenceError: globalThis is not defined。 原因是&#xff0c;谷歌浏览器版本太低&#xff0c;引用的第三方库不支持导致。 解决方法&#xff1a;在index.html中添加 <script>this.globalThis || (this.globalThis this) &…

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

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

Spring Boot项目启动速度优化

1、配置自动配置排除列表&#xff0c;减少启动自动配置扫描&#xff0c;配置项spring.autoconfigure.exclude 2、启动类添加索引注解Indexed&#xff0c;去除启动过程中 Components 的扫描步骤&#xff0c;直接从索引文件读取。 import org.springframework.stereotype.lndexe…

AIGC浪潮下,鹅厂新一代前端人的真实工作感受

AIGC 这一时代潮流已然不可阻挡&#xff0c;我们要做的不是慌乱&#xff0c;而是把握住这个时代的机会。本文就和大家一起来探索在 AIGC 下&#xff0c;前端工程师即将面临的挑战和机遇。聊聊从以前到现在&#xff0c;AIGC 给我们带来了怎么样的变化&#xff0c;下一代前端工程…

【详细教程制作】用户列表

&#x1f468;‍&#x1f4bb;个人主页&#xff1a;开发者-曼亿点 &#x1f468;‍&#x1f4bb; hallo 欢迎 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! &#x1f468;‍&#x1f4bb; 本文由 曼亿点 原创 &#x1f468;‍&#x1f4bb; 收录于专栏&#xff1a…

电脑分辨率怎么调,电脑分辨率怎么调整

随着电脑的普及以及网络的发展&#xff0c;我们现在在工作中都离不开对电脑的使用&#xff0c;今天小编教大家设置电脑分辨率&#xff0c;现在我们先了解这个分辨率是什么?通常电脑的显示分辨率就是屏幕分辨率&#xff0c;显示屏大小固定时&#xff0c;显示分辨率越高图像越清…

一个问题串联 Java 的几个基础知识

前言 关于 “” 和 equals() 的区别这个问题&#xff0c;我之前一直搞的很乱&#xff0c;虽然面试的时候一直没有被问到&#xff0c;但是我感觉这种是属于最基础的知识&#xff0c;如果不懂好像不是很好。后来我发现通过这个问题&#xff0c;可以串联起很多的知识点&#xff0…

正则表达式浅析

正则表达式&#xff0c;又称正规表示法、常规表示法&#xff08;英语&#xff1a;Regular Expression&#xff0c;在代码中常简写为regex、regexp或RE&#xff09;&#xff0c;计算机科学的一个概念。正则表达式使用单个字符串来描述、匹配一系列符合某个句法规则的字符串。在很…

Linux多进程通信(3)——详细说说共享内存原理及使用例程

1.共享内存原理及优缺点 共享内存的原理便是将相同的一片物理内存映射到进程A和进程B不同的逻辑地址空间&#xff0c;两个进程同时访问这块物理内存&#xff08;共享内存&#xff09;。 1&#xff09;优点 共享内存是进程间通信访问速度最快。 例如消息队列&#xff0c;FIFO&…

Google Chrome将某个页签静音,不是网站

Google Chrome将某个页签静音&#xff0c;不是网站 打开chrome://flags/在里面搜索&#xff0c;audio&#xff0c;找到Tab audio muting UI contorl的选项&#xff0c;右侧设置为Enable。重新启动浏览器。 发现有声音的浏览器页签有一个喇叭图标&#xff0c;点击一下就行了。

Linux中间件(nginx搭建、LNMP服务搭建)

目录 一、安装nginx 第一步、下载nginx的压缩包到Linux中 ​第二步、安装依赖 第三步&#xff1a;安装 nginx 第四步&#xff1a;启动nginx 第五步&#xff1a;测试nginx 二、 nginx的配置文件 nginx.conf文件内容解读 案例&#xff1a;发布多个网站 二、lamp/lnmp …