Servlet程序及部署方式(Tomcat+Smart Tomcat)

news2024/12/25 9:08:02

目录

1、Servlet是什么?

2、Servlet程序【例——hello world】

2.1、创建项目

2.2、引入Servlet依赖

2.3、创建目录结构

2.4、编写代码

 2.5、打包程序

2.6、部署程序

2.7、验证程序

3、更方便的部署方式——Smart Tomcat


1、Servlet是什么?

Servlet是一种实现动态页面的技术,是Tomcat给程序员提供的进行二次开发的API

注:动态页面VS静态页面

        静态页面:就是内容始终固定的页面,无论什么时候访问,无论是谁访问,得到的页面效果都是一样的

        动态页面:不是真实的硬盘的文件,而是通过代码在内存中构造出一个“虚拟的资源”,可以根据你访问的时间不同,访问的人不同,访问时带有的参数不同,就可以构造出不同的页面

        构建动态页面的技术很多,每种语言都有一些相关的库/框架来完成。Servlet就是Tomcat这个HTTP服务器提供给Java的一组API,来完成构建动态页面

Servlet 主要做的工作:
  • 允许程序猿注册一个类, Tomcat 收到某个特定的 HTTP 请求的时候, 执行这个类中的一些代码.
  • 帮助程序猿解析 HTTP 请求, HTTP 请求从一个字符串解析成一个 HttpRequest 对象.
  • 帮助程序猿构造 HTTP 响应. 程序猿只要给指定的 HttpResponse 对象填写一些属性字段, Servlet
  • 就会自动的安装 HTTP 协议的方式构造出一个 HTTP 响应字符串, 并通过 Socket 写回给客户端.

2、Servlet程序【例——hello world】

一共7个步骤

2.1、创建项目

由于IDEA的版本不同,有一点点的不一样,但仔细研究一下,还是可以滴~

 进来后:

2.2、引入Servlet依赖

Servlet不是Java标准库自带的,所以使用时,需要额外下载安装,引入到项目中

maven的一个核心功能就是,能够自动的管理依赖,就会自动把我们从使用的库里依赖的东西,自动从中央仓库上,下载下来。

中央仓库的网址: https://mvnrepository.com

点击进入后: 

 

 选择3.1.0版本【servlet3.1.0和tomcat8.5和jdk8是配套的,其他的也可以,但可能或多或少有点小问题】

再次点击进入:

点击复制这块的代码,粘贴到 

刚才创建maven项目的pom.xml中:

 初次引入可能会爆红,是因为他的下载是需要时间的,你需要等一会

这里可以尝试刷新一下:

一般出错大概率可能是 网络不好的原因 

但如果出现了这个错误:

 这个问题其实,你不处理,也不会影响后面的打包,但是,看着错误实在难受,而且现在没影响,我也不确定会不会后面出现问题。

这个问题是有的IDEA上有这个问题,有的没有

 就是,maven依赖的插件,版本不匹配,手动指定一下这个插件的版本就可以了:

在pom.xml的<project></project>中添加如下代码:

    <repositories>
        <repository>
            <id>alimaven</id>
            <url>https://maven.aliyun.com/repository/public</url>
        </repository>
    </repositories>
    <pluginRepositories>
        <pluginRepository>
            <id>alimaven</id>
            <url>https://maven.aliyun.com/repository/public</url>
        </pluginRepository>
    </pluginRepositories>

2.3、创建目录结构

虽然maven已经给我们创建了一些目录,但是不够诶,我们还需要搞一个符合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>

2.4、编写代码

注意,将代码放在java目录下:

 敲一个doGet回车:

 下一步:

下一步:

 注意,一定要将刚才的super删除掉 

 2.5、打包程序

当前的Servlet代码是没有main方法的,所以需要Tomcat带着才能将程序跑起来

 

 

                 一个小问题就是打出的是jar包,Tomcat不认,tomcat要求是war包,所以在pom.xml的<project></project>中添加如下代码:

    <packaging>war</packaging>
    <build>
        <finalName>HelloWorld</finalName>
    </build>

 

然后再像刚才那样去打包就可以了:

 

2.6、部署程序

部署之前,先将你的Tomcat启动了!!! 

把war包拷贝到Tomcat的webapps中

 

找到你所安装的Tomcat的位置:

粘贴包过去:

 

 

2.7、验证程序

通过浏览器,构造一个HTTP请求,来访问Tomcat服务器

 

梳理一下:

(1)、获取到url中第一级路径,/HelloWorld确定一个webapp

(2)、Tomcat找到HelloWorld目录后,就会加载里面的类,尤其是重点去识别@WebServlet注解修饰的类,就会取出第二级路径,找到了/hello类,找到后,创建实例(只会创建一次实例,如果之前创建过了,就直接使用上次的实例) 

 (3)、再解析出HTTP请求的方法GET,取出GET后,就可以根据HTTP方法来调用对应的Servlet的方法


3、更方便的部署方式——Smart Tomcat

        Smart Tomcat是idea上的一个插件,上面所介绍的Servlet程序运行方法实在是有点麻烦,主要是第五步,第六步【其他步骤都是一样的】,每次修改都需要重新打包和部署,非常麻烦,Smart Tomcat就帮助我们解决了这个问题,只需简单配置一下稍微点一下就可以一键实现打包和部署操作,Smart Tomcat插件安装步骤如下:

第一步,打开idea设置,找到插件选项,即Plugins。

第二步,在Marketplace搜索Smart Tomcat,下载安装即可。

 第三步,重启一下idea就可以了,首次使用smart tomcat需要配置,配置过程如下:

 

 

 Tomcat servlet配置一次即可,后面就记住了

        重点注意Context path:这里的Context path本来就是webapps里的war包名/目录名,但是由于Smart tomcat和之前的拷贝war包属于不同的运行方式,这里不涉及war包这样的概念,就需要手动配置ContextPath啦!

然后OK就可以了!

点击运行:

但是我这里报错了,为什么呢?看我标注的那里 

 一个端口号是不可以绑定多个程序的,也就是,我的Tomcat还正在启动着的,一山不容二虎滴~

关闭后,再次启动运行:

这里就表示启动成功啦! 

 本期结束啦!下期见~

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

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

相关文章

初识计算机网络

目录 网络的发展 重新看待计算机结构 大型存储平台 认识 "协议" 网络和OS之间的关系 初识网络协议 协议分层 OSI七层模型 TCP/IP五层(或四层)模型 网络传输基本流程 局域网通信的原理 如果进行跨网络传输 网络通信里面的基本轮廓 数据包封装和分用…

多线程同步

文章目录一、多线程同步竞争与协作互斥的概念同步的概念互斥与同步的实现和使⽤锁信号量⽣产者-消费者问题经典同步问题读者-写者问题一、多线程同步 竞争与协作 在单核 CPU 系统⾥&#xff0c;为了实现多个程序同时运⾏的假象&#xff0c;操作系统通常以时间⽚调度的⽅式&am…

为dev c++配置图形开发环境easyx之mingw32

easyx官方的文档在说明如何配置环境上面不太详细&#xff0c;所以就有了我的那篇博文为dev c配置图形开发环境easyx&#xff0c;默认的是在64位的编译器TDM-gcc下配置的&#xff0c;也就是我们配置的easyx最终都是放在mingw64文件夹下的&#xff0c;5.1版本后的dev c内置的编译…

什么是分层架构

&#x1f468;‍&#x1f4bb;个人主页&#xff1a;微微的猪食小窝 欢迎 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! 本文由 微微的猪食小窝 原创 1、什么是架构分层&#xff1f; 分层架构是将软件模块按照水平切分的方式分成多个层&#xff0c;一个系统由多层组成…

同时安装Vue2和Vue3

背景 当我们的工作中使用的还是脚手架还是基于Vue2.x的版本&#xff0c;那么我们想要学习和使用Vue3怎么办&#xff1f;直接升级脚手架的话&#xff0c;会影响到我们现在的项目&#xff0c;那就需要去处理下关于Vue3的东西了。 下载安装Vue3的脚手架 任意磁盘根目录新建一个文件…

【深入理解C++】new/delete和new[]/delete[]探秘

文章目录1.operator new()和operator delete()2.new记录分配的内存大小供delete使用3.new[]/delete[]申请和释放一个数组3.1 基本数据类型&#xff08;内置类型&#xff09;3.2 自定义类型&#xff08;类类型&#xff09;4.new/delete和new[]/delete[]要配对使用1.operator new…

开发 Chrome 扩展 之 Hello World 心血来潮

开发 Chrome 扩展 Hello, World 项目加载未打包的扩展icon刷新引入 JS 与错误处理 开发 Chrome 扩展 开发 Chrome 扩展除了需要基本的 HTML, CSS, JS 之外, 还可以使用 Chrome 额外提供的 API. 除了需要的 .html, .css 和 .js 文件之外呢, 扩展还包括不同类型的文件, 具体可…

杨辉三角形(Java版)

不为失败找理由&#xff0c;只为成功找方法。所有的不甘&#xff0c;因为还心存梦想&#xff0c;所以在你放弃之前&#xff0c;好好拼一把&#xff0c;只怕心老&#xff0c;不怕路长。 文章目录1. 什么是杨辉三角形2. 实现思路&#xff08;方式&#xff09;2.1 递归方式2.2 递归…

Nginx简单使用

安装龙蜥操作系统 镜像文件在这里下载就行 下载之后新建虚拟机 ISO选择刚才下载文件即可 具体配置可以照我来 也可自定义 基本工具安装 安装一下最基本的网络工具 yum install net-tools openssh-server wget tar make vim -y测试一下ssh连接 方便后期操作 修改主机名 …

Jedis 使用教程总结

一、Redis 常用命令 1 连接操作命令 quit&#xff1a;关闭连接&#xff08;connection&#xff09;auth&#xff1a;简单密码认证help cmd&#xff1a; 查看 cmd 帮助&#xff0c;例如&#xff1a;help quit 2 持久化 save&#xff1a;将数据同步保存到磁盘bgsave&#xff…

设计模式之原型模式

文章目录1.前言概念使用场景2.原型模式核心组成UML图3.浅拷贝与深拷贝基本类型与引用类型浅拷贝代码演示深拷贝代码演示4.原型模式的优点与缺点1.前言 概念 原型模式&#xff08;Prototype Pattern&#xff09;是用于创建重复的对象&#xff0c;同时又能保证性能。这种类型的…

Cpp知识点系列-类型转换

前言 在做题的时候发现了需要用到类型转换&#xff0c;于是在这里进行了简单的记录。 历史原因&#xff0c;慢慢整理着发现类型转换也能写老大一篇文章了。又花了时间来梳理一下就成了本文了。 cpp 之前使用的环境是DEV-C 5.4&#xff0c;而对应的GCC版本太低了。支持c11需要…

【CSS】重点知识梳理,这样上手无压力

推荐前端学习路线如下&#xff1a; HTML、CSS、JavaScript、noodJS、组件库、JQuery、前端框架&#xff08;Vue、React&#xff09;、微信小程序和uniapp、TypeScript、webpack 和 vite、Vue 和 React 码源、NextJS、React Native、后端内容。。。。。。 CSS定义&#xff1a; …

docker入门到精通一文搞定

文章目录前言一、Docker概述1.Docker为什么会出现&#xff1f;2.Docker相比VM技术3.Docker 能做什么&#xff1f;3.1 比较Docker和虚拟机技术的不同&#xff1a;3.2 DevOps (开发、运维)&#xff1a;4个特点二、Docker安装1.dokcer架构图&#xff1a;2.Docker基本组成&#xff…

python+django体质测试数据分析及可视化设计

目 录 摘 要 I ABSTRACT II 目 录 II 第1章 绪论 1 1.1背景及意义 1 1.2 国内外研究概况 1 1.3 研究的内容 1 第2章 相关技术 3 2.1 B/S架构 4 本选题则旨在通过标签分类管理等方式&#xff0c;实现管理员&#xff1a;管理员&#xff1a;首页、个…

11.前端笔记-CSS盒子模型-外边距margin

1、margin 1.1 margin的语法 盒子与盒子之间的距离 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><meta name"viewpor…

linux 系统的磁盘 mbr 转gpt方法

linux磁盘用fdisk格式化挂盘的格式都为mbr, 不支持大于2T的磁盘扩容&#xff0c;需要用parted转化。 查询磁盘格式 输入&#xff1a; fdisk -l 看Disk label type 的值&#xff0c;是dos 的为mbr 是gpt的为gpt 当前&#xff0c;因挂盘时&#xff0c;用的fdisk方式选gpt,挂…

基于STM32的u8g2移植以及学习

实验硬件&#xff1a;STM32F103C8T6&#xff1b;0.96寸OLED&#xff08;12864&#xff09; U8g2库开源网址&#xff1a;https://github.com/olikraus/u8g2 一、u8g2库知识 1.1 什么是u8g2&#xff1f; U8g2是嵌入式设备的单色图形库。主要应用于嵌入式设备&#xff0c;包括我…

正大国际期货:投资外盘期货如何运用K线图中十字星形态?

很多人都明白&#xff0c;做外盘期货需要学会看线图。那么K线图上面的一根两根的柱子代表的什么意思呢&#xff1f;其中星星点点的十字星又是什么意思&#xff1f;下面正大IxxxuanI详细给大家讲解一下&#xff01; 1、什么是多头十字星形态&#xff1f; 多头十字星是一种经典…

KEITHLEY 吉时利2601B源表产品技术参数

KEITHLEY 2601B 吉时利 2601B 源表让您可以比以前更快、更轻松、更经济地进行精密直流、脉冲和低频交流源测量测试。Keithley 2601B 通过结合以下特性&#xff0c;为 IV 功能测试提供竞争产品 2 到 4 倍的测试速度&#xff1a; 吉时利的高速第三代源测量单元 (SMU) 设计 嵌…