【Servlet】Smart Tomcat插件简化Servlet开发流程及解决常见问题

news2024/11/15 15:32:30

个人主页:兜里有颗棉花糖
欢迎 点赞👍 收藏✨ 留言✉ 加关注💓本文由 兜里有颗棉花糖 原创
收录于专栏【Servlet】
本专栏旨在分享学习Servlet的一点学习心得,欢迎大家在评论区交流讨论💌

目录

  • 一、Smart Tomcat插件
  • 二、下载安装过程
  • 三、如何使用Smart Tomcat
  • 四、运行程序
  • 五、常见报错
    • 404
    • 405
    • 500
    • 空白页面
    • 无法访问此网站

一、Smart Tomcat插件

如果我们需要Servlet程序进行修改的话,我们需要重新打包并部署到Servlet容器中(比如Tomcat)。

现在我们可以简化上述重新打包并部署的过程:将IDEA和Tomcat集成起来,使用IDEA图形化界面将代码部署到Tomcat上。这样,我们就可以更加专注于编写和修改代码,而不必担心手动处理部署细节。

首先我们需要在IDEA上安装Smart Tomcat插件,使得IDEA把Tomcat集成进来。注意,如果是社区版的IDEA的话,我们只能使用安装Smart Tomcat插件的方式来集成Tomcat。
但是如果IDEA是专业版或者教育版的话,我们就可以使用TomcatServer(是IDEA专业版/教育版内置的功能,无需下载)而无需安装Smart Tomcat插件,这算是VIP的专属待遇吧。

二、下载安装过程

加下来我们以社区版IDEA为例来对Smart Tomcat插件进行下载安装:
File->Settings->Plugins在这里插入图片描述
搜索Smart Tomcat然后下载安装即可:
在这里插入图片描述

这里还有另外一种手动下载安装Smart Tomcat插件的方式。
直接去IDEA官网下载即可:传送门
在这里插入图片描述
下载之后我们会得到一个jar包,直接将这个jar包拖到IDEA就可以了。

三、如何使用Smart Tomcat

如果一个项目中是第一次使用Smart Tomcat的话我们就需要先简单配置一次,配置之后后续就不再需要配置了。

在这里插入图片描述
在这里插入图片描述
选择Smart Tomcat:
在这里插入图片描述
接下来需要配置几个地方:
在这里插入图片描述
在这里插入图片描述
上图中如果是项目首次使用Smart Tomcat的话只需要修改Tomcat ServletContext path即可。
下图是我修改后的设置,请看:
在这里插入图片描述
设置完成之后后续就不再需要修改配置了。
补充一点:上图设置的端口号不需要和Tomcat中conf文件中的端口号保持一致。我们只需要保证后续浏览器发的http请求的端口和上图中设置的一样即可。

四、运行程序

确认完成之后点击OK,然后就会出现如下图的标记:
在这里插入图片描述
然后点击绿色三角形就可以运行了(运行之前要保证Tomcat是关闭状态)。
如果Tomcat是处于运行状态的话->Tomcat的8080默认已经被占用,而一个端口号只能被一个进程调用,所以程序运行之后就会报红。
下面是程序正确的运行结果:
在这里插入图片描述
出现上图就说明Tomcat启动成功了,发现控制台打印出来的日志并没有出现乱码的问题(这是因为IDEA中的终端——控制台使用的是utf-8进行编码)。

此时我们在地址栏中输入路径:http://127.0.0.1:8080/java_servlet/hello。结果如下:
在这里插入图片描述

后续如果我们修改代码的话,只需要重新启动一下程序即可。

五、常见报错

404

404的意思就是要访问的资源不存在。
一般有两种情况会导致404报错。

  • 第一种:浏览器请求路径和服务器配置路径不同。

在这里插入图片描述

  • 第二种:确认webapp是否被正确加载。我们编写的Servlet程序并将其部署到Tomcat中时,Tomcat将会加载这个Web应用程序(也称为webapp),并在接收到浏览器请求时提供相应的服务。

加载失败的原因如下:web.xml文件不存在、目录错了、web.xml中内容出错等原因都可能会导致webapp加载失败。

405

405错误通常是由于请求方法不被支持或被禁止所导致的。出现405报错一般有两种情况:

  • 第一种情况:Servlet程序中写的doXX方法和请求发起的方法不匹配。比如说浏览器发起的是Get请求,而服务器代码写的是doPost方法
  • 第二种情况:浏览器发起的是Get请求,服务器写的代码是doGet方法。但是doGet方法中并没有把super.doGet删除。

500

500表示服务器内部错误,代码错误比如代码中抛出异常。

空白页面

没有在Servlet的doGet()或doPost()方法中设置响应的输出内容(具体点就是没有getWriter.write方法),那么服务器将会返回一个空白页面给客户端浏览器。

比如下图:
在这里插入图片描述

无法访问此网站

出现此情况要么是Tomcat服务器没有正确运行;要么就是ip或者端口写错了:
在这里插入图片描述

好了,以上就是本文的全部内容了。希望各位友友可以一键三连哈!!!

在这里插入图片描述

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

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

相关文章

Kotlin快速入门系列2

Kotlin的基本数据类型 Kotlin 的基本数值类型包括 Byte、Short、Int、Long、Float、Double 等。不同于 Java 的是,字符不属于数值类型,是一个独立的数据类型。 Java和kotlin数据类型对照如下: Java基本数据类型 Kotlin对象数据类型 数据类…

深度强化学习(王树森)笔记08

深度强化学习(DRL) 本文是学习笔记,如有侵权,请联系删除。本文在ChatGPT辅助下完成。 参考链接 Deep Reinforcement Learning官方链接:https://github.com/wangshusen/DRL 源代码链接:https://github.c…

Hadoop3.x学习笔记

文章目录 一、Hadoop入门1、Hadoop概述1.1 简介1.2 hadoop优势1.3 hadoop组成1.4 大数据技术生态体系 2、环境准备(重点)2.1 模板机配置2.2 模板创建 3、本地运行模式(官方WordCount)4、Hadoop集群搭建(🌟重点)4.1 环境准备(集群分发脚本xsyn…

java框架面试篇

Spring框架 spring Bean线程安全问题 Scope注解 我们可以在bean的类上加Scope注解来声明这个Bean是单个实例还是多个实例。在默认情况下Bean是单个实例的,此时的注解中的属性默认为Scope("singleton"),Scope("prototype")则是一…

【Uni-App】Vue3如何使用pinia状态管理库与持久化

安装插件 pinia-plugin-unistorage 引入 // main.js import { createSSRApp } from "vue"; import * as Pinia from "pinia"; import { createUnistorage } from "pinia-plugin-unistorage";export function createApp() {const app create…

AHK学习,诡异的早起,舒畅地打篮球——2024 第4周总结

活神仙 引言颓 周六周日理清当前老问题新问题 总结当前之前的老问题 学习的AHKAHK历程AHK作用和适合人群 我帮别人解决的AHK例子我自用的AKH功能结尾 引言 今天才写周总结 是因为这两天有点颓 颓在哪里呢? 请听我细细说来 水文 技术有 AHK的,不想看可以…

Redis(九)集群(cluster)

文章目录 概述作用1. redis集群的槽位slot2. redis集群的分片3. 第1,2点的优势:**最大优势,方便扩缩容和数据分派查找**4. slot槽位映射,一般业界有3种解决方案第一种:哈希取余分区第二种:一致性哈希算法分区第三种&am…

【基于电商履约场景的 DDD 实战】基于 Cola 实现电商履约架构设计(完结)

欢迎关注公众号(通过文章导读关注:【11来了】),及时收到 AI 前沿项目工具及新技术的推送! 在我后台回复 「资料」 可领取编程高频电子书! 在我后台回复「面试」可领取硬核面试笔记! 文章导读地址…

‘sdkmanager‘ 不是内部或外部命令,也不是可运行的程序 或批处理文件。

错误信息 sdkmanager 不是内部或外部命令,也不是可运行的程序或批处理文件。 这个错误提示是在尝试运行 sdkmanager 命令时出现的。sdkmanager 是 Android SDK 的一部分,用于管理 Android SDK 的版本和组件。 [!] Android toolchain - develop for An…

计算机网络-物理层设备(中继器 集线器)

文章目录 中继器中继器的功能再生数字信号和再生模拟信号同一个协议 集线器(多口中继器)不具备定向传输的原因集线器是共享式设备的原因集线器的所有接口都处于同一个碰撞域(冲突域)内的原因 小结 中继器 中继器的功能 中继器的…

一些著名的软件都用什么语言编写?

1、操作系统 Microsoft Windows :汇编 -> C -> C 备注:曾经在智能手机的操作系统(Windows Mobile)考虑掺点C#写的程序,比如软键盘,结果因为写出来的程序太慢,实在无法和别的模块合并&…

在centos 7 中 安装 配置 并 远程连接 MySQL5.7

目录 安装MySQL 1.卸载CentOS7系统自带的mariadb 2.安装依赖库 3.上传MySQL并解压 4.安装MySQL 配置MySQL 1.修改登录密码 2.修改字符集 3.配置远程连接 前言: 安装MySQL版本:mysql-5.7.30-1.el7.x86_64.rpm-bundle 文件需求后台私信 以下7条为…

LabVIEW直流电机转速检测与控制

研究了使用LabVIEW软件和ELVIS实验平台来检测和控制直流电机的转速。通过集成光电传感器和霍尔传感器,实现了对电机转速的精确测量和调节。 系统组成:系统由NI ELVIS实验平台、光电传感器、霍尔传感器和直流电机组成。通过这些硬件元件,系统…

谷歌把GenAI装进Chrome

谷歌不甘示弱,在其Chrome浏览器中引入了新的实验性生成式AI功能,以简化并为用户提供更高效的浏览体验。 值得注意的是,微软去年推出了Edge浏览器和人工智能驱动的必应搜索引擎的集成。随着Chrome M121版本的发布,谷歌打算利用最新…

代理IP在游戏中的作用有哪些?

游戏代理IP的作用是什么?IP代理软件相当于连接客户端和虚拟服务器的软件“中转站”,在我们向远程服务器提出需求后,代理服务器首先获得用户的请求,然后将服务请求转移到远程服务器,然后将远程服务器反馈的结果转移到客…

C++11—— lambda表达式与包装器

C11—— lambda表达式与包装器 文章目录 C11—— lambda表达式与包装器一、 lambda表达式lambda表达式产生的意义lambda表达式语法函数对象与lambda表达式 二、 包装器functionfunction产生的意义function的用法function使用的例子 bind调整参数顺序固定绑定参数 一、 lambda表…

「仅需三次鼠标,即可开服」幻兽帕鲁全自动部署教程

在帕鲁的世界,你可以选择与神奇的生物「帕鲁」一同享受悠闲的生活,也可以投身于与偷猎者进行生死搏斗的冒险。帕鲁可以进行战斗、繁殖、协助你做农活,也可以为你在工厂工作。你也可以将它们进行售卖,或肢解后食用。 本文将为您提…

【芯片设计- RTL 数字逻辑设计入门 番外篇 6.1 -- 术语 Wafer 与 Tile 与 cell 关系介绍】

请阅读【嵌入式开发学习必备专栏 】 文章目录 SoC Tile 与 Cell 与 WaferWaferTileCellTile与Cell的关系示例SoC Tile 与 Cell 与 Wafer 在SoC(System on Chip,系统级芯片)设计中,Wafer, Tile和Cell是常用的术语,它们在不同的设计层次上描述了芯片的组成部分。

图书管理系统(ArrayList和LinkedList)--versions3.0

目录 一、项目要求: 二、项目环境 三、项目使用的知识点 四、项目代码 五、项目运行结果 六、项目难点分析 图书管理系统--versions1.0: 图书管理系统--versions1.0-CSDN博客文章浏览阅读981次,点赞29次,收藏17次。本文使用…

小红的回文串构造

本题链接:登录—专业IT笔试面试备考平台_牛客网 题目: 样例1: 输入 abba 输出 baab 样例2: 输入 aba 输出 -1 思路: 由题意,题目保证给出的字符串是回文串的,所以我们只需要获取两个不同的…