从0到1部署Tomcat和添加servlet(IDEA2024最新版详细教程)

devtools/2025/3/6 10:51:09/

本文不仅细化了每一个步骤,实现了从0到1部署Tomcat和添加servlet。还针对IDEA2024版和以前的版本在部署上的区别,做了详细介绍,尤其是add framework support部分。与此同时,针对控制台中文乱码问题,本文也给出了详细解决方案。

目录

step1.新建一个项目

step2.此处我们选择java项目即可

step3.添加web框架

?step4 完善项目结构

step5 修改项目结构

step6 部署tomcat

step7 添加servlet

step8? 新建html页面,用于测试刚刚部署的servlet类?

step9? 在web.xml中部署我们刚刚新建的servlet类?

step10 启动tomcat服务器?

step11 解决控制台中文乱码问题

step12 添加成功?


step1.新建一个项目

step2.此处我们选择java项目即可

后面会介绍使用maven部署的情况

step3.添加web框架

对于2024版的IDEA,我们选中项目并点击右键后,会发现看不到add frameworks support的选项,此时有两种解决方法:

第一种就是在设置settings中修改我们的toolbar选项,将add frameworks support添加进去(大家可以自行搜索其它博客,有详细介绍),但有的可能会发现添加进去后,我们仍然找不到这个选项

此时我们选择第二种解决方法:我们单击选中项目(不要忘记)后点击我们右上角的搜索按钮

然后输入add framework support,注意这里一定要勾选右上角的**include non-project items!!!**不然找不到这个选项

点击后就会出现如下页面

我们给项目添加Java EE中的web框架(因为我们打开的时候默认是Java SE,但是它没有web框架,只有JAVA EE中才有web框架)

添加好web框架后,项目结构如下

step4 完善项目结构

我们在WEB-INF下添加两个文件夹

①classes:用来存放编译后的java文件

②lib:用来存放依赖文件

注意这两个文件夹的命名必须是这样的,包括大小写,不要自行修改

这样做的原因是因为,如果大家直接用tomcat部署过项目(不是在IDEA中),会发现它的项目框架就是这样的,我们这里和它保持一致

step5 修改项目结构

点击File–Project Structure

修改编译后的文件存放路径:

选择Modules–Paths

然后选择Use module compile output path

将路径修改为我们刚刚设置的classes文件夹的路径

点击OK修改成功后,我们可以看到classes文件夹的颜色会变成橙色

如果这里没有变,大家可以仔细检查看看是不是路径设置错了

添加依赖:选择Paths–Dependencies,点击+

然后选择添加jar包

然后找到我们tomcat的安装路径

找到tomcatlib文件夹,选择servlet-api.jar,点击添加

这里之所以这样做是因为我们的Java EE中是没有servlet接口的,这个接口是tomcat中的,所以我们要通过tomcat来引入

添加成功后的界面如下

这里我将jsp的api也添加进来了,因为其实在后面的开发中,这些都是搭配使用的

tomcat_126">step6 部署tomcat

我们在运行按钮的左边找到下拉框

找到Edit Configurations,点击

点击“+”

选择Tomcat Server–Local

点击Deployment–+,添加本项目的war exploded

并且可以修改Application context

这里的Application context实际上就是我们启动服务器后默认打开的网页后的端口号后面的路径。举个例子,如果我们使用的是8080端口,那么我们的网页打开后默认显示的网址就是http://localhost:8080/Application context/,这就相当于你这个项目的根网址,后面你部署的所有页面,无论是html还是servlet的路径都是跟在这个路径后面的,这一点在下面有个注意事项中还会提到

点击Server

此页面可以修改我们的端口号等内容,不过一般我们不会去修改它

值得一提的是,这里我们可以修改On update action和On frame deactivation,默认情况下是Restart server,意思就是我们如果对项目做了修改,需要重启服务器才会更新

我们可以将其修改为Update classes and resources,即我们对项目修改的同时,页面等可以同步更新相应的内容

修改后的界面如下

servlet_164">step7 添加servlet

我们在src下新建一个文件夹com.first

然后在其下面新建一个java类

继承servelt接口:implements Servlet

右键点击Show Context Actions

让它帮我们一键补齐框架

分别在init,service,destroy类中添加一些输出语句,帮助我们后面的测试

(这是servlet最基本和最常用的三个类)

servlet_188">step8 新建html页面,用于测试刚刚部署的servlet

添加超链接,用于我们待会请求servlet

注意这里的超链接一定要加上Application context中的内容,比如我的Application context中是test5,这里就是test5,后面的路径即你的servlet类的路径,是你自己定义的,没有特别要求,和接下来部署在web.xml中的内容保持一致即可

servlet_198">step9 在web.xml中部署我们刚刚新建的servlet

注意1:两个servlet-name保持一致即可,自定义命名

注意2:servlet-class中填写的是你想部署的servlet类的完整路径(注意是完整)

注意3:设置url-pattern,这里不用加上test5,因为这里是相对路径,默认开头就是我们的项目根路径(注意这里和我们超链接中的保持一致)

每添加一个servlet类,我们都要在这里添加一次配置

配置的代码模板都是一样的,放在下面供大家参考和直接复制

   <servlet><servlet-name>helloservlet</servlet-name><servlet-class>com.mytest.helloservlet</servlet-class></servlet><servlet-mapping><!-- mapping 表示映射 --><servlet-name>helloservlet</servlet-name><url-pattern>/helloservlet</url-pattern></servlet-mapping>

tomcat_221">step10 启动tomcat服务器

启动后默认跳转的页面是我们的项目根路径

我们在后面添加/hlogin.html

即我们刚刚编写的前端页面的路径,就会出现我们刚刚写好的内容

点加超链接login ,便会请求对应的servlet

返回我们的IDEA的控制台

我们可以看到输出了我们servlet中编写的用于测试的输出信息

我们可以重复刷新对应的servlet页面

会发现执行语句会重复执行

但是初始化语句始终只执行一次,是因为初始化操作始终只执行一次

step11 解决控制台中文乱码问题

这个地方我尝试了很多种方法,在很多地方都设置了UTF-8,还是得不到解决

最后这样操作后成功得到了解决,即添加一个系统变量

并且在IDEA–help中

点击Edit custom VM options

添加一行-Dfile.encoding=GBK

这样做的好处是我们不用在每次配置tomcat时都重新设置一遍

因为这已经设置到我们的系统环境中了

注意:设置完成后记得重启IDEA和tomcat,否则可能不生效

step12 添加成功

到此,我们完整的一个servlet就添加完成了,后面大家可以根据自己的项目需求再修改响应的内容


http://www.ppmy.cn/devtools/164976.html

相关文章

Git与GitHub:它们是什么,有什么区别与联系?

1.Git是什么&#xff1f; Git 是一个开源的、分布式版本控制系统&#xff08;Version Control System, VCS&#xff09;&#xff0c;由 Linus Torvalds 于 2005 年开发&#xff0c;最初用于管理 Linux 内核的开发。它的核心功能是跟踪文件的变更历史&#xff0c;帮助开发者高效…

vscode离线配置远程服务器

目录 一、前提 二、方法 2.1 查看vscode的commit_id 2.2 下载linux服务器安装包 2.3 安装包上传到远程服务器&#xff0c;并进行文件解压缩 三、常见错误 Failed to set up socket for dynamic port forward to remote port&#xff08;vscode报错解决方法&#xff09;-C…

kubevirt源码分析之谁分配了gpu_device(3)

目标 当一个launcher pod被创建时&#xff0c;它会请求资源 &#xff0c;如下 Requests:cpu: 16devices.kubevirt.io/kvm: 1devices.kubevirt.io/tun: 1devices.kubevirt.io/vhost-net: 1ephemeral-storage: …

go语言因为前端跨域导致无法访问到后端解决方案

前端服务8080访问后端8081这端口显示跨域了 ERROR Network Error AxiosError: Network Error at XMLHttpRequest.handleError (webpack-internal:///./node_modules/axios/lib/adapters/xhr.js:116:14) at Axios.request (webpack-internal:///./node_modules/axios/lib/core/A…

贪心算法精品题

1.找钱问题 本题的贪心策略在于我们希望就可能的保留作用大的5元 class Solution { public:bool lemonadeChange(vector<int>& bills) {std::map<int ,int> _map;for(auto ch:bills){if(ch 5) _map[ch];else if(ch 10){if(_map[5] 0) return false;else{_m…

*pu相关概念介绍

1. TPU(张量处理单元)​ ​定义:TPU(Tensor Processing Unit)是谷歌开发的专用芯片,针对机器学习中的张量运算进行优化,尤其擅长加速神经网络训练和推理​核心特点: ​架构:采用脉动阵列(systolic array)设计,数据像“脉搏”一样流动,减少内存访问延迟,高效处理矩…

R语言基础| 基本统计分析

写在前面 R语言拥有丰富的数据处理、统计分析和机器学习工具包&#xff0c;涵盖了从简单的描述统计到复杂的模型建立的各个方面。再加上数据的处理可以完美的衔接后续的可视化&#xff0c;这使得它成为处理各种类型和规模的数据集的理想选择。 完整R语言教程和测试数据可见&a…

DeepSeek开源周第四弹!DeepSeek开源三剑客:训练效率的“时空魔术师”与“资源管家”全解析

开篇语 AI训练场的效率革命正在悄然爆发——当传统流水线还在“单向龟速”中挣扎&#xff0c;DeepSeek的三把利刃已划破算力困局&#xff1a;DualPipe像手术刀般精准切割时间空洞&#xff0c;将GPU利用率推至极限&#xff1b;EPLB化身智能指挥家&#xff0c;让MoE模型的算力交…