当前位置: 首页 > 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…...

【ROS】Nav2源码之nav2_behavior_tree-行为树节点列表

1、行为树节点分类 在 Nav2(Navigation2)的行为树框架中,行为树节点插件按照功能分为 Action(动作节点)、Condition(条件节点)、Control(控制节点) 和 Decorator(装饰节点) 四类。 1.1 动作节点 Action 执行具体的机器人操作或任务,直接与硬件、传感器或外部系统…...

【论文阅读28】-CNN-BiLSTM-Attention-(2024)

本文把滑坡位移序列拆开、筛优质因子&#xff0c;再用 CNN-BiLSTM-Attention 来动态预测每个子序列&#xff0c;最后重构出总位移&#xff0c;预测效果超越传统模型。 文章目录 1 引言2 方法2.1 位移时间序列加性模型2.2 变分模态分解 (VMD) 具体步骤2.3.1 样本熵&#xff08;S…...

Java线上CPU飙高问题排查全指南

一、引言 在Java应用的线上运行环境中&#xff0c;CPU飙高是一个常见且棘手的性能问题。当系统出现CPU飙高时&#xff0c;通常会导致应用响应缓慢&#xff0c;甚至服务不可用&#xff0c;严重影响用户体验和业务运行。因此&#xff0c;掌握一套科学有效的CPU飙高问题排查方法&…...

初探Service服务发现机制

1.Service简介 Service是将运行在一组Pod上的应用程序发布为网络服务的抽象方法。 主要功能&#xff1a;服务发现和负载均衡。 Service类型的包括ClusterIP类型、NodePort类型、LoadBalancer类型、ExternalName类型 2.Endpoints简介 Endpoints是一种Kubernetes资源&#xf…...

C#中的CLR属性、依赖属性与附加属性

CLR属性的主要特征 封装性&#xff1a; 隐藏字段的实现细节 提供对字段的受控访问 访问控制&#xff1a; 可单独设置get/set访问器的可见性 可创建只读或只写属性 计算属性&#xff1a; 可以在getter中执行计算逻辑 不需要直接对应一个字段 验证逻辑&#xff1a; 可以…...

Kafka入门-生产者

生产者 生产者发送流程&#xff1a; 延迟时间为0ms时&#xff0c;也就意味着每当有数据就会直接发送 异步发送API 异步发送和同步发送的不同在于&#xff1a;异步发送不需要等待结果&#xff0c;同步发送必须等待结果才能进行下一步发送。 普通异步发送 首先导入所需的k…...

Golang——6、指针和结构体

指针和结构体 1、指针1.1、指针地址和指针类型1.2、指针取值1.3、new和make 2、结构体2.1、type关键字的使用2.2、结构体的定义和初始化2.3、结构体方法和接收者2.4、给任意类型添加方法2.5、结构体的匿名字段2.6、嵌套结构体2.7、嵌套匿名结构体2.8、结构体的继承 3、结构体与…...

[USACO23FEB] Bakery S

题目描述 Bessie 开了一家面包店! 在她的面包店里&#xff0c;Bessie 有一个烤箱&#xff0c;可以在 t C t_C tC​ 的时间内生产一块饼干或在 t M t_M tM​ 单位时间内生产一块松糕。 ( 1 ≤ t C , t M ≤ 10 9 ) (1 \le t_C,t_M \le 10^9) (1≤tC​,tM​≤109)。由于空间…...

对象回调初步研究

_OBJECT_TYPE结构分析 在介绍什么是对象回调前&#xff0c;首先要熟悉下结构 以我们上篇线程回调介绍过的导出的PsProcessType 结构为例&#xff0c;用_OBJECT_TYPE这个结构来解析它&#xff0c;0x80处就是今天要介绍的回调链表&#xff0c;但是先不着急&#xff0c;先把目光…...

MeshGPT 笔记

[2311.15475] MeshGPT: Generating Triangle Meshes with Decoder-Only Transformers https://library.scholarcy.com/try 真正意义上的AI生成三维模型MESHGPT来袭&#xff01;_哔哩哔哩_bilibili GitHub - lucidrains/meshgpt-pytorch: Implementation of MeshGPT, SOTA Me…...