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

个人主页:兜里有颗棉花糖
欢迎 点赞👍 收藏✨ 留言✉ 加关注💓本文由 兜里有颗棉花糖 原创
收录于专栏【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或者端口写错了:
在这里插入图片描述

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

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【2023地理设计组一等奖】基于GIS的桥梁隧道三维建模与可视化

作品介绍 1 设计背景和意义 随着我国基础建设规模不断扩大和深入,构建桥梁可视化管理模型,全面推动智慧桥梁,已成为现代隧道桥梁建设行业的发展趋势。传统的桥梁建模工作需要复杂的算法设计并需要熟练编程实践技能,实现周期长。开发自主知识版权的桥梁建模软件系统或专用插…

时间复杂度解释

时空复杂度概述 首先o(1), o(n), o(logn), o(nlogn)是用来表示对应算法的时间复杂度,这是算法的时间复杂度的表示。不仅仅用于表示时间复杂度,也用于表示空间复杂度。 算法复杂度分为时间复杂度和空间复杂度。其作用: 时间复杂度是指执行这个算法所需要…

Keepalived + DR 集群

目录 1、Keepalive VRRP 说明 故障切换 工作原理 核心组件 2、Keepalived DR 集群 拓扑规划 前期准备 配置 Httpd 服务 配置 Nginx 服务 配置 LVS 主 node_01 配置 LVS 从 node_02 测试 LVS 集群 测试主备切换 3、Keepalived 脑裂现象 4、Keepalived 心态检测 …

C++字符串的常用操作函数全总结

文章目录 1.string、string.h和cstring的区别2.字符串定义3.求字符串的长度(也可以求array对象长度)4.输入字符串5.分割截取字符串4.在字符串中查找指定子字符串,并返回其第一次出现的位置5.替换字符串中的一部分6.在字符串指定位置插入字符串7.复制字符…

【漏洞通告】 Jenkins CLI 任意文件读取漏洞

漏洞概况 Jenkins是一个开源软件项目,是基于Java开发的一种持续集成工具,用于监控持续重复的工作,旨在提供一个开放易用的软件平台,使软件项目可以进行持续集成。Jenkins 有一个内置的命令行界面(CLI)&…

安装elasticsearch、kibana、IK分词器

1.部署单点es 1.1.创建网络 因为我们还需要部署kibana容器,因此需要让es和kibana容器互联。这里先创建一个网络: docker network create es-net 1.2.加载镜像 这里我们采用elasticsearch的7.12.1版本的镜像,这个镜像体积非常大&#xff0…

在Spring Boot中使用iTextPDF创建动态PDF文档

最近,我们的系统新增了一个客服模块,其中一个重要功能是能够以PDF格式导出客服与用户之间的聊天记录。这些聊天记录包含文字、图片和文件等多种内容。为了实现这一功能,我们首先使用了itextpdf 5.x版本制作了一个Demo。今天,我将与…

kubernetes-快速部署一套k8s集群

1、前置知识点 1.1 生产环境可部署Kubernetes集群的两种方式 目前生产部署Kubernetes集群主要有两种方式: kubeadm Kubeadm是一个K8s部署工具,提供kubeadm init和kubeadm join,用于快速部署Kubernetes集群。 二进制包 从github下载发行…

力扣题目训练(5)

2024年1月29日力扣题目训练 2024年1月29日力扣题目训练345. 反转字符串中的元音字母349. 两个数组的交集350. 两个数组的交集 II96. 不同的二叉搜索树97. 交错字符串44. 通配符匹配 2024年1月29日力扣题目训练 2024年1月29日第五天编程训练,今天主要是进行一些题训…

短视频与小程序:如何实现完美结合?

在短视频日益成为人们娱乐、社交和信息获取的重要渠道的今天,如何在短视频平台进行小程序推广成为了许多企业和品牌关注的焦点。本文将介绍如何利用短视频平台进行小程序推广,提升品牌曝光和用户互动。 首先,打开乔拓云-门店系统的后台&#…

使用new操作符,一定是在堆上申请内存么?

《法华经》曰:“ 世尊导师,安隐天人,我等闻记,心安具足。” 一、引言 我们常常张嘴就来,我们在堆上申请内存使用malloc() 或者new操作符,但是反过来说,使用new操作符,就一定是在堆…

###C语言程序设计-----C语言学习(7)#(调试篇)

前言:感谢您的关注哦,我会持续更新编程相关知识,愿您在这里有所收获。如果有任何问题,欢迎沟通交流!期待与您在学习编程的道路上共同进步。 一. 程序调试 1.程序调试介绍: 程序调试是软件开发过程中非常重…

海外云手机对于亚马逊卖家的作用

近年来,海外云手机作为一种新型模式迅速崭露头角,成为专业的出海SaaS平台软件。海外云手机在云端运行和存储数据,通过网页端操作,将手机芯片放置在机房,通过网络连接到服务器,为用户提供便捷的上网功能。因…

电气自动化行业,全面数字化工作流程

电气自动化行业数字化转型所需流程软件,与大家分享如下: D-Hub企业数字化协同平台、SuperHarness数字线束软件、SuperPanel母排设计软件、D-Hub生产管理系统,全面的数字化工作流程,智能降本增效! D-Hub D-Hub是一款…

Hive(15)中使用sum() over()实现累积求和和滑动求和

目的: 三个常用的排序函数row_number(),rank()和dense_rank()。这三个函数需要配合开窗函数over()来实现排序功能。但over()的用法远不止于此,本文咱们来介绍如何实现累计求和和滑动求和。 1、数据介绍 三列数据,分别是员工的姓名、月份和…

Python+uiautomator2 框架搭建

一、安装整体步骤 01 开发环境安装 jdk安装(version "1.8.0_361")python安装 (Python37)python编辑器安装 (PyCharm2021) 02 运行环境安装 adb安装 (Android Debug Bridge versio…

处理Servlet生命周期事件

处理Servlet生命周期事件 接收关于 Servlet生命周期事件通知的类称为事件侦听器。这些侦听器实现Servlet API中定义的一个或多个servlet事件侦听器接口。侦听器类的逻辑分类如下: servlet请求侦听器Servlet上下文侦听器HTTP会话侦听器1. servlet请求侦听器 servlet请求侦听器…

vivado 硬块规划器

硬块规划器 Versal自适应SoC的硬块规划GT组件从通用/通道更新为AMD的GT_QUAD粒度Versal™ 自适应SoC。为了启用某些GT共享用例,对GT向导流进行了修改使用Vivado IP集成商。使用Vivado IP集成商构建使用单个或多个GT_ QUAD。连接到GT_QUAD的自定义IP的设计条目为通过…

如何一键导出多张图片二维码?图片批量建码生成的方法

现在很多的物品信息都会生成一张单独的图片,然后生成二维码印刷到包装或者其他地方上使用,那么如何快速将多张图片多批量生码处理,相信有很多的小伙伴都不太清楚该怎么完成。其实,大量图片生成二维码的方法是很简单的,…

shell脚本-函数及数组

一.函数 1.函数的作用 语句块定义成函数约等于别名,定义函数,再引用函数 封装的可重复利用的具有特定功能的代码 2.函数的基本格式 法一: [function] 函数名 {命令序列[return x] #使用return或者exit可以显式的结束函数 }法二&…