当前位置: 首页 > news >正文

【JavaEE】 IntelliJ IDEA 2022.2最新版Tomcat导入依赖详细教程全解及创建第一个Servlet程序

目录

一、软件资源

二、放置settings.xml文件

三、创建项目

四、引入依赖 

​五、创建目录 

六、编写代码   


写在前面:☞What is Servlet?

        Servlet其实是一种实现动态页面的技术。是一组由Tomcat提供给程序员的API(应用程序编程接口),帮助程序员高效开发一个 web app。
        静态页面:也就是内容始终固定的页面。即使用户不同、时间不同、输入的参数不同,页面内容也不会发生变化。
        动态页面指:的就是用户不同、时间不同、输入的参数不同,页面内容会发生变化。

        构建动态页面的技术有很多,每种语言都有一些相关的库或者框架。Servlet 就是Tomcat 这个 HTTP 服务器提供给Java 的一组应用程序编程接口,来完成构建动态页面这个任务。

浅浅了解一下,让我们开始今天的第一个serlvet项目。


一、软件资源

所有需要的软件我都放在这里啦,可以免费下载!

IntelliJ IDEA 2022.2最新版Tomcat导入依赖详细教程全解及创建第一个Servlet程序中的所用文件

二、放置settings.xml文件

        点开File->Settings->Maven,将settings.xml文件放到指定位置。

        settings.xml是用来设置Maven 参数的配置文件,包含类似本地仓库、远程仓库和互联网使用的代理信息等配置。

         我会把相关文件上传资源,可以免费下载哦😯

三、创建项目

        点开File->New->Project,选择Maven类型,改名随意,在Location可以选择你要存放的位置,我是默认没改的,一般不建议放在C盘,根据要求选择。 

四、引入依赖 

        Maven项目创建完毕后,会自动生成一个pom.xml文件。我们需要在这个文件中引入Servlet API依赖的jar包。

1.点击网址 : 搜索servlet,选择第一个。

2.根据Tomcat的版本选择需要的依赖版本,我的Tomcat下载的8.5的,详细关于Tomcat的下载指路这篇:【JavaEE】Tomcat安装教程及环境配置详解_小熊爱吃软糖吖的博客-CSDN博客

划重点!!!

        Servlet 的版本要和 Tomcat 匹配。如果我们使用 Tomcat 8.5, 那么就需要使用 Servlet 3.1.0。

        点击此网页 Apache Tomcat® - Which Version Do I Want? 查询版本对应关系。

3.把中央仓库提供的代码复制到我们自己创建的项目中的pom.xml文件中。原来的要替换,仔细看一下。当我们复制完成后就会出现一个小m标志,点击就会更新。

 4.配置文件就好了,手动拷贝 war /jar包到 Tomcat 的过程比较麻烦。我们接下来使用几个插件部署。

点击File->Settings->Plugins->Marketplace,在搜索框里输入Smart Tomcat和Maven Helper,然后点击Install安装。

 五、创建目录 

1.在main文件下点击鼠标右键->New->Directory。

自己定义一个名字,我起的是java,一定使用英文起名,避免以后出现什么问题!

2.我们需要保证的是新建的目录是根目录,根目录一般是蓝色的文件样式,如果你建出来的目录不是的话,就跟着我改一下~

选择新建的目录右击,按下述图片操作。

一些额外小知识: 

src 表示源代码所在的目录
main/java 表示源代码的根目录。 后续创建 .java 文件就放到这个目录中。
main/resources 表示项目的一些资源文件所在的目录。此处暂时不关注。
test/java 表示测试代码的根目录。 此处暂时不关注。

此处是小意外:

        配置好的依赖下面有一个src目录,点开来里面有一个main目录、一个webapp目录、resources文件。

        有些人可能打开来没有webapp目录,没关系~这时候只需要我们手动创建一个就好了!

1) 创建 webapp 目录
在 main 目录下, 和 java 目录并列, 创建一个 webapp 目录。一定要一样的!!!不能起别的名!


2) 创建 web.xml
然后在 webapp 目录内部创建一个 WEB-INF 目录, 并创建一个 web.xml 文件

 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>

六、编写代码   

1.在java目录下新建一个类,这里我习惯先新建一个包,再在里面创建类。根据自己的习惯来。

 2.使新建的类HelloServlet继承父类HttpServlet

3.重写父类的doGet和doPost方法 。在空白处右击,然后左击选中目标。

 

 

4.重写doGet方法。将原来的删去。写上下述内容。字符串可以自己想写啥就写啥。

resp.getWriter.write("Hello Servlet");

 resp.getWriter.write功能:向前台页面显示一段信息。 当在普通的url方式中,会生成一个新的页面来显示内容。 当在ajax的方式中,会在alert中显示内容。

5.运行这个程序,因为版本不同,每个人这块的界面也有所不同。

        我这个版本处理这一步比人难点,放心!!! 只是找东西麻烦点,我会在这后面放一下大多数人的界面样子。

右击->Run->Add new Configuration(添加新配置)选择Smart Tomcat

 一般人界面这个样子,直接点击

 

划重点!选择正确的Tomcat server,这个路径就是当时安装Tomcat的路径,一定要找正确!最后点击ok 。Context path表示的是项目的路径,一般默认和项目名是一样的,我们可以不修改。

右击run->All Configurations 

找到小猫咪运行 

一般人点击小绿箭头就可以了 

6.为自己之前建的类定义一个请求路径,一定要加 / 斜杠 !然后运行看看,点击出现的网址,这个就是我们项目的初始页面。

小贴士:@WebServlet 属于类级别的注解,标注在继承了 HttpServlet 的类之上。常用的写法是将 Servlet的相对请求路径直接写在注解内,如下所示

@WebServlet(/"hello")

 7.显示网页

程序员的尽头是“Hello World”! (*╹▽╹*)

 在后面加上我们自己定义的相对路径名,然后就可以跳转我们写的页面啦!

8.完整的类代码,有需要的直接复制就可以啦

package demo;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")
public class HelloServlet extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {System.out.println("Hello Servlet");resp.getWriter().write("Hello Servlet");}@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {super.doPost(req, resp);}
}

        至此,我们的第一个Servlet项目就成功建立啦!很感谢你看到这,希望这篇文对你有用哦!(*^▽^*)

相关文章:

【JavaEE】 IntelliJ IDEA 2022.2最新版Tomcat导入依赖详细教程全解及创建第一个Servlet程序

目录 一、软件资源 二、放置settings.xml文件 三、创建项目 四、引入依赖 ​五、创建目录 六、编写代码 写在前面&#xff1a;☞What is Servlet? Servlet其实是一种实现动态页面的技术。是一组由Tomcat提供给程序员的API&#xff08;应用程序编程接口&#xff09;…...

常见的卷积神经网络结构——分类、检测和分割

本文持续更新~~ 本文整理了近些年来常见的卷积神经网络结构&#xff0c;涵盖了计算机视觉领域的几大基本任务&#xff1a;分类任务、检测任务和分割任务。对于较复杂的网络&#xff0c;本文只会记录其中的核心模块以及重要的网络设计思想&#xff0c;并不会记录完整的网络结构。…...

20230323英语学习

Why Can You “Hear the Ocean” in Seashells? 为啥能在贝壳里“听见海的声音”&#xff1f; We’re told a number of stories as kids. One of the more harmless of these little lies is the one about seashells.You know the one: hold up a seashell to your ear, an…...

【粉丝投稿】上海某大厂的面试题,岗位是测开(25K*16)

简单介绍一句&#xff0c;大专出身&#xff0c;三年经验。跳了四次槽&#xff0c;面试了无数次&#xff0c;现在把自己的面试经验整理出来分享给大家&#xff0c;堪称必杀技&#xff01; 1&#xff0c;一切从实际出发&#xff0c;对实际工作进行适当修饰 2&#xff0c;不会的简…...

shell简单使用介绍

脚本的基本元素声明&#xff0c;在解释并执行当前脚本文件中的语句之前&#xff0c;需要声明使用的命令解释器#一般写的解释器为 #!/bin/bash这里的#不再是注释了&#xff0c;而是必要的声明命令&#xff0c;也就是需要执行的语句注释&#xff0c;对代码进行解释说明分为单行注…...

RK3568平台开发系列讲解(调试篇)内核函数调用堆栈打印方法汇总

🚀返回专栏总目录 文章目录 一、dump_stack 函数二、WARN_ON(condition)函数三、BUG_ON (condition)函数四、panic (fmt...)函数沉淀、分享、成长,让自己和他人都能有所收获!😄 📢本篇将对驱动调试方法进行汇总学习。 一、dump_stack 函数 dump_stack 作用:打印内核调…...

一次内存泄露排查

前因&#xff1a; 因为测试 长时间压测导致 接口反应越来越慢&#xff0c;甚至 导致服务器 崩溃 排查过程 1、top 查看是 哪个进程 占用 内存过高 2、根据 进程 id 去查找 具体是哪个 程序的问题 ps -ef| grep 41356 可以看到 具体的 容器位置 排查该进程 对象存活 状态…...

「Mac安装ps」Adobo Photoshop 2023 下载安装详情教程,支持 AI 插件的 24 版 Photoshop

前言 Adobo Photoshop 2023 已推出&#xff0c;由于目前AI人工智能技术火爆&#xff0c;而很多的 AI 插件最低也需要24版的 photoshop &#xff0c;所以这里我遍搜集并整理了此新版本的 photoshop 安装使用教程&#xff0c;后续也将提供 AI 插件的下载安装教程 安装文件下载 …...

Redis单线程还是多线程?IO多路复用原理

目录专栏导读一、Redis版本迭代二、Redis4.0之前为什么一直采用单线程&#xff1f;三、Redis6.0引入多线程四、Redis主线程和IO线程是如何完成请求的&#xff1f;1、服务端和客户端建立socket连接2、IO线程读取并解析请求3、主线程执行请求命令4、IO线程会写回socket和主线程清…...

小菜鸟Python历险记:(第五集)

今天写的文章是记录我从零开始学习Python的全过程。在Python中对方法进行备注的时候&#xff0c;往往都是写在方法中的第一行所在位置。在书写注释以后&#xff0c;在调用方法的时候&#xff0c;鼠标点击方法会有一个浮动的提示显示备注内容。具体如下图所示&#xff1a;注释的…...

【思维模型】五分钟了解<复利思维>,为何学习复利思维?什么是复利思维?如何应用复利思维?

【思维模型】五分钟了解&#xff1c;复利思维&#xff1e;&#xff0c;为何学习复利思维&#xff1f;什么是复利思维&#xff1f;如何应用复利思维&#xff1f;1. 为何学习复利思维&#xff1f;2. 什么是复利思维&#xff1f;3. 如何应用复利思维&#xff1f;4. 小结参考&#…...

Vue.js语法详解:从入门到精通

Vue.js是一个流行的JavaScript框架&#xff0c;用于构建用户界面。它的核心特性包括数据双向绑定、组件化架构、虚拟DOM和响应式系统等。在本文中&#xff0c;我们将深入探讨Vue.js的语法&#xff0c;帮助读者更好地理解和应用Vue.js。1.模板语法Vue.js的模板语法采用了类似HTM…...

程序员的代码行数越少越好?

有些人可能会认为&#xff0c;应用程序中的代码行越少&#xff0c;就越容易阅读。这句话只有部分正确&#xff0c;我认为代码可读性的度量标准包括&#xff1a;代码应具备一致性代码应具备自我描述性代码应具备良好的文档代码应使用稳定的现代功能代码不应过于复杂代码的性能不…...

【每日一题Day156】LC1032字符流 | 字典树

字符流【LC1032】 设计一个算法&#xff1a;接收一个字符流&#xff0c;并检查这些字符的后缀是否是字符串数组 words 中的一个字符串。 例如&#xff0c;words ["abc", "xyz"] 且字符流中逐个依次加入 4 个字符 a、x、y 和 z &#xff0c;你所设计的算法…...

V2G模式下含分布式能源网优化运行研究(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f4cb;&#x1f4cb;&#x1f4cb;本文目录如下&#xff1a;&#x1f381;&#x1f381;&#x1f381; 目录 &#x1f4a5;1 概述 &#x1f4da;2 运行结果 &am…...

手写一个简单的RPC框架

学习RPC框架&#xff0c;由繁化简&#xff0c;了解其本质原理 文章目录项目简介什么是RPC&#xff1f;项目模块项目代码common模块client模块server模块framework模块测试项目简介 什么是RPC&#xff1f; RPC&#xff08;Remote Procedure Call&#xff09;即远程过程调用&am…...

【剑指offer】旋转数组的最小数字

&#x1f451;专栏内容&#xff1a;剑指offer⛪个人主页&#xff1a;子夜的星的主页&#x1f495;座右铭&#xff1a;前路未远&#xff0c;步履不停 目录一、题目描述1、题目2、示例示例1示例2二、题目分析1、暴力法2、二分法三、代码汇总1、暴力法2、二分法一、题目描述 1、题…...

【Dorker】Portainer轻量级可视化工具

文章目录Portainer简介登录Portainer第一次登录需创建admin&#xff0c;访问地址&#xff1a;xxx.xxx.xxx.xxx:9000选择local选项卡后本地docker详细信息展示安装nginx私有镜像仓库管理Portainer简介 Portainer是Docker的图形化管理工具&#xff0c;提供状态显示面板、应用模板…...

基于 vue.js 进行组件封装的方案

摘要&#xff1a;本文将介绍如何基于 vue.js 进行组件封装的方案。我们将从分析组件封装的优势开始&#xff0c;然后依次介绍 vue.js 的基本概念&#xff0c;以及如何创建、封装和使用自定义组件。最后&#xff0c;我们将通过一个实际的示例&#xff0c;演示如何实现一个基于 v…...

【Unityc#专题篇】之c#基础篇

&#x1f468;‍&#x1f4bb;个人主页&#xff1a;元宇宙-秩沅 &#x1f468;‍&#x1f4bb; hallo 欢迎 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! &#x1f468;‍&#x1f4bb; 本文由 秩沅 原创 &#x1f468;‍&#x1f4bb; 收录于专栏&#xff1a;uni…...

零门槛NAS搭建:WinNAS如何让普通电脑秒变私有云?

一、核心优势&#xff1a;专为Windows用户设计的极简NAS WinNAS由深圳耘想存储科技开发&#xff0c;是一款收费低廉但功能全面的Windows NAS工具&#xff0c;主打“无学习成本部署” 。与其他NAS软件相比&#xff0c;其优势在于&#xff1a; 无需硬件改造&#xff1a;将任意W…...

Linux 文件类型,目录与路径,文件与目录管理

文件类型 后面的字符表示文件类型标志 普通文件&#xff1a;-&#xff08;纯文本文件&#xff0c;二进制文件&#xff0c;数据格式文件&#xff09; 如文本文件、图片、程序文件等。 目录文件&#xff1a;d&#xff08;directory&#xff09; 用来存放其他文件或子目录。 设备…...

Cesium1.95中高性能加载1500个点

一、基本方式&#xff1a; 图标使用.png比.svg性能要好 <template><div id"cesiumContainer"></div><div class"toolbar"><button id"resetButton">重新生成点</button><span id"countDisplay&qu…...

Java如何权衡是使用无序的数组还是有序的数组

在 Java 中,选择有序数组还是无序数组取决于具体场景的性能需求与操作特点。以下是关键权衡因素及决策指南: ⚖️ 核心权衡维度 维度有序数组无序数组查询性能二分查找 O(log n) ✅线性扫描 O(n) ❌插入/删除需移位维护顺序 O(n) ❌直接操作尾部 O(1) ✅内存开销与无序数组相…...

转转集团旗下首家二手多品类循环仓店“超级转转”开业

6月9日&#xff0c;国内领先的循环经济企业转转集团旗下首家二手多品类循环仓店“超级转转”正式开业。 转转集团创始人兼CEO黄炜、转转循环时尚发起人朱珠、转转集团COO兼红布林CEO胡伟琨、王府井集团副总裁祝捷等出席了开业剪彩仪式。 据「TMT星球」了解&#xff0c;“超级…...

oracle与MySQL数据库之间数据同步的技术要点

Oracle与MySQL数据库之间的数据同步是一个涉及多个技术要点的复杂任务。由于Oracle和MySQL的架构差异&#xff0c;它们的数据同步要求既要保持数据的准确性和一致性&#xff0c;又要处理好性能问题。以下是一些主要的技术要点&#xff1a; 数据结构差异 数据类型差异&#xff…...

Linux云原生安全:零信任架构与机密计算

Linux云原生安全&#xff1a;零信任架构与机密计算 构建坚不可摧的云原生防御体系 引言&#xff1a;云原生安全的范式革命 随着云原生技术的普及&#xff0c;安全边界正在从传统的网络边界向工作负载内部转移。Gartner预测&#xff0c;到2025年&#xff0c;零信任架构将成为超…...

sqlserver 根据指定字符 解析拼接字符串

DECLARE LotNo NVARCHAR(50)A,B,C DECLARE xml XML ( SELECT <x> REPLACE(LotNo, ,, </x><x>) </x> ) DECLARE ErrorCode NVARCHAR(50) -- 提取 XML 中的值 SELECT value x.value(., VARCHAR(MAX))…...

ArcGIS Pro制作水平横向图例+多级标注

今天介绍下载ArcGIS Pro中如何设置水平横向图例。 之前我们介绍了ArcGIS的横向图例制作&#xff1a;ArcGIS横向、多列图例、顺序重排、符号居中、批量更改图例符号等等&#xff08;ArcGIS出图图例8大技巧&#xff09;&#xff0c;那这次我们看看ArcGIS Pro如何更加快捷的操作。…...

OPenCV CUDA模块图像处理-----对图像执行 均值漂移滤波(Mean Shift Filtering)函数meanShiftFiltering()

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 在 GPU 上对图像执行 均值漂移滤波&#xff08;Mean Shift Filtering&#xff09;&#xff0c;用于图像分割或平滑处理。 该函数将输入图像中的…...