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

腾讯验证码攻防新篇:六宫格、滑块与文字识别的毫秒级破解实战

1. 腾讯验证码体系深度解析 腾讯验证码作为当前互联网安全防护的重要组成部分&#xff0c;已经发展出包括六宫格、图标点选、滑块验证和文字识别在内的多种形式。这些验证码在设计时充分考虑了人机交互的特点&#xff0c;通过视觉识别和行为分析双重机制来区分真实用户和自动化…...

AnimateDiff部署指南:SD1.5+Motion Adapter显存优化版保姆级教程

AnimateDiff部署指南&#xff1a;SD1.5Motion Adapter显存优化版保姆级教程 1. 项目简介 想用几句话就让AI帮你生成一段流畅的视频吗&#xff1f;AnimateDiff就是这样一个神奇的工具。与那些需要你先提供一张图片才能生成视频的模型不同&#xff0c;AnimateDiff可以直接根据你…...

互联网应用架构:LiuJuan20260223Zimage高并发服务设计

互联网应用架构&#xff1a;LiuJuan20260223Zimage高并发服务设计 1. 引言 想象一下这样的场景&#xff1a;你的图片服务突然火了&#xff0c;每秒有几十万用户同时上传和查看图片&#xff0c;服务器开始报警&#xff0c;响应速度越来越慢&#xff0c;用户体验直线下降。这不…...

Houdini VEX实战:5步搞定变形管道的中心线生成(附常见问题修复)

Houdini VEX实战&#xff1a;5步搞定变形管道的中心线生成&#xff08;附常见问题修复&#xff09; 在三维动画制作中&#xff0c;处理变形管道的中心线是许多技术美术师面临的常见挑战。无论是角色动画中的血管、机械装置中的电缆&#xff0c;还是科幻场景中的能量管道&#x…...

eslint-plugin-compat自定义规则开发:扩展插件功能的完整教程

eslint-plugin-compat自定义规则开发&#xff1a;扩展插件功能的完整教程 【免费下载链接】eslint-plugin-compat Check the browser compatibility of your code 项目地址: https://gitcode.com/gh_mirrors/es/eslint-plugin-compat eslint-plugin-compat是一款强大的浏…...

4个关键步骤:全方位掌控BetterJoy让Switch手柄在PC上完美适配

4个关键步骤&#xff1a;全方位掌控BetterJoy让Switch手柄在PC上完美适配 【免费下载链接】BetterJoy Allows the Nintendo Switch Pro Controller, Joycons and SNES controller to be used with CEMU, Citra, Dolphin, Yuzu and as generic XInput 项目地址: https://gitco…...

终极QMC音频解密方案:qmc-decoder如何3分钟转换100首加密音乐

终极QMC音频解密方案&#xff1a;qmc-decoder如何3分钟转换100首加密音乐 【免费下载链接】qmc-decoder Fastest & best convert qmc 2 mp3 | flac tools 项目地址: https://gitcode.com/gh_mirrors/qm/qmc-decoder 在数字音乐版权保护的浪潮中&#xff0c;QQ音乐QM…...

告别官方开发板:手把手教你为自制的RK3568板卡移植Linux系统(Ubuntu 18.04环境)

从零构建&#xff1a;自制RK3568开发板的Linux系统深度移植实战 当一块自制的RK3568开发板静静躺在工作台上&#xff0c;没有官方文档支持&#xff0c;没有现成的配置文件&#xff0c;这才是真正考验工程师功底的时刻。不同于使用官方开发板的"开箱即用"&#xff0c;…...

保姆级教程:在UniApp中集成FFmpeg 7.1播放RTSP流(Android原生插件实战)

保姆级教程&#xff1a;在UniApp中集成FFmpeg 7.1播放RTSP流&#xff08;Android原生插件实战&#xff09; 跨平台开发中遇到RTSP流媒体播放需求时&#xff0c;UniApp官方组件往往力不从心。本教程将手把手带你突破这一技术瓶颈&#xff0c;通过Android原生插件集成FFmpeg 7.1实…...

数据库工具效率提升指南:三步掌握开源数据库管理新范式

数据库工具效率提升指南&#xff1a;三步掌握开源数据库管理新范式 【免费下载链接】dblab The database client every command line junkie deserves. 项目地址: https://gitcode.com/gh_mirrors/db/dblab 在数据驱动开发的时代&#xff0c;开源数据库管理工具已成为开…...