Java网络开发(Tomcat)——遇到的 bug 汇总(持续更新)

news2024/9/24 7:18:50

目录

  • 引出:bug::bug::bug:
  • Tomcat开发的bug汇总
  • 项目启动就报错
    • 1.@WebServlet()路径配置的问题
    • 2.由于之前的错误,Context[/day01]启动失败【困扰】
    • 3.启动过滤器异常---init方法
  • JSP使用相关报错
    • 1.后端传给jsp的数据,前端jsp不显示
    • 2.jsp的包没有导,用foreach方法的时候报错【困扰】
    • 3.jsp的forEach方法报错
    • 4.jsp用foreach的时候,没有生成首行一段话
  • session报错
    • 1.session不能转换成String类型
  • servlet业务流程错误
    • 1.在servlet的if处理流程中,没有加return
  • 总结

引出🐛🐛🐛

java的web开发,涉及到前端后端各种交互,路径的转发,重定向等带来的问题,以及需要配置xml文件,导包等很多问题,本文尝试总结在Java网络开发中遇到的bug


Tomcat开发的bug汇总

项目启动就报错

1.@WebServlet()路径配置的问题

(1)@WebServlet(value = “/us”) 中反斜杠 / 没有写;

(2)两个Serlet 指向同一个路径;

(3)DBUtils里面的静态方法出问题;

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

2.由于之前的错误,Context[/day01]启动失败【困扰】

困扰一上午的bug

报错信息:

org.apache.catalina.core.StandardContext.startInternal 一个或多个筛选器启动失败。完整的详细信息将在相应的容器日志文件中找到

org.apache.catalina.core.StandardContext.startInternal 由于之前的错误,Context[/day01]启动失败

问题描述:

在启动项目的时候就报错,报错信息是 一个或多个筛选器启动失败,然后删除了项目中所有的过滤器,还是报错,上网查了解决方案,有说是项目结构的问题,几种说法汇总如下:

在这里插入图片描述

第一种说法:项目的输出路径设置成\WEB-INF\classes;没有解决该问题

在这里插入图片描述

在这里插入图片描述

第二种说法:项目的输出要配置,如下图,配置完成后,也没有解决该问题

在这里插入图片描述

第三种说法,在项目中添加jar包,新建lib目录,然后导入相关的包;也没有解决该问题

在这里插入图片描述

以上几种方式,尝试过后都无效,最后突发奇想,既然是web项目,那如果把servlet的文件全部删除,项目都没有servlet了,那肯定能启动起来,结果把servlet文件全部删除后,项目成功启动起来;

从而把问题定位到了servlet这里,仔细查看servlet文件后,发现了最终的原因,是因为一个servlet的注解@WebServlet(“/user/login”),不小心设置成了@WebFilter(“/user/info”),所以启动不起来,再回过头来看,报错信息确实是对的,就是一个或多个筛选器启动失败;但是这个报错信息没有定位到代码部分,所以查起来就比较麻烦。

在这里插入图片描述

解决方案:

把@WebFilter(“/user/info”)改成,@WebServlet(“/user/info”)

3.启动过滤器异常—init方法

报错信息:

org.apache.catalina.core.StandardContext.filterStart 启动过滤器异常[com.tianju.filter.LoginAuthorServlet]

问题描述:

配置了一个过滤器,过滤器也实现了doFilter方法,但是项目就是启动不起来,过滤器启动异常,导致项目启动不起来,报错;

在这里插入图片描述

原因:

原因是tomcat8.5的过滤器需要实现init方法,如果不实现,就会报错,tomcat高版本才支持不实现;

解决方法:

实现init方法:

    @Override
    public void init(FilterConfig filterConfig) throws ServletException {
        System.out.println("DemoFilter init");
    }

JSP使用相关报错

1.后端传给jsp的数据,前端jsp不显示

问题描述:

后端传给jsp的数据,前端jsp没有显示出来,原因是官方生成的web.xml文件版本低,很多功能不支持,需要更换成下面这种

在这里插入图片描述

在这里插入图片描述

web.xml文件如下:

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
         version="4.0">
</web-app>

2.jsp的包没有导,用foreach方法的时候报错【困扰】

报错信息:

javax.servlet.ServletException: java.lang.NoClassDefFoundError: javax/servlet/jsp/jstl/core/LoopTag

问题描述:

在jsp文件中,如果注释掉foreach部分的代码,前端jsp文件就能正常进入,也能显示从后端拿到的信息;

但是如果加上foreach部分的代码,就报错,后台的错误指向了servlet的转发部分;但其实是能进到这里的,所有这个问题查了好久,以为是req的问题,后来以为是foreach语法写错的问题;

最后突然想到,可能是xml包没导,最后补充了jsp相关的包,问题解决。

req.getRequestDispatcher("/news/list.jsp").forward(req, resp);

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

jsp相关的包:

  <!--      jsp导包-->
  <dependency>
    <groupId>javax.servlet.jsp</groupId>
    <artifactId>javax.servlet.jsp-api</artifactId>
    <version>2.3.3</version>
    <!--          加provided-->
    <scope>provided</scope>
  </dependency>

  <dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>jstl</artifactId>
    <version>1.2</version>
  </dependency>

  <dependency>
    <groupId>taglibs</groupId>
    <artifactId>standard</artifactId>
    <version>1.1.2</version>
  </dependency>

3.jsp的forEach方法报错

org.apache.jasper.JasperException: 在 [57] 行处理 [/news/list.jsp] 时发生异常

语法错误,多打印了一个h

在这里插入图片描述

4.jsp用foreach的时候,没有生成首行一段话

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

问题描述:

前端jsp能拿到后端发来的数据,但是没法进入forEcah方法中,不生效;

在这里插入图片描述

session报错

1.session不能转换成String类型

报错信息:

java.lang.ClassCastException: org.apache.catalina.session.StandardSessionFacade cannot be cast to java.lang.String

问题描述:

保存到session的时候,不小心把session存进了session里,然后拿的时候用(String)类型转换

存的时候:

    // 验证码存到session空间中
    HttpSession session = req.getSession();
    session.setAttribute("yzm", session);

取的时候

    // +++++判断验证码是否正确
    HttpSession session = req.getSession();
    // 从session中获取验证码
    String yzm = (String)session.getAttribute("yzm");

在这里插入图片描述
解决方法:

应该保存验证码的4位数字

servlet业务流程错误

1.在servlet的if处理流程中,没有加return

问题描述:

如果在servlet中,需要if处理的业务流程,没有加return,通常会引起其他错误,因为没有return,程序会继续往下执行;如下图的例子,这里用户名密码输入错误,没有加return,导致即使非法用户也能登陆进入系统。

在这里插入图片描述


总结

🐛 bug不可怕,找到它并消灭就好了!

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

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

相关文章

6 vue

前端开发 1.前端开发 前端工程师“Front-End-Developer”源自于美国。大约从2005年开始正式的前端工程师角色被行业所认可&#xff0c;到了2010年&#xff0c;互联网开始全面进入移动时代&#xff0c;前端开发的工作越来越重要。 最初所有的开发工作都是由后端工程师完成的&…

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

目录 0.问题背景环境介绍 1.解决步骤 2.测试步骤 0.问题背景环境介绍 1&#xff09;环境&#xff1a;windows64 2&#xff09;问题背景&#xff1a;在搭建jupyter notebook的过程中&#xff0c;想用windows的任务管理器启动jupyter notebook或者使用【jupyter notebook --…

降低成本,快速搭建企业帮助文档的方法盘点

企业帮助文档是企业为了解决客户疑问和提高客户满意度而制作的一种文档&#xff0c;通常包括产品的使用指南、故障排除、常见问题解答等内容。一个好的帮助文档可以帮助企业降低客服成本、提高客户满意度&#xff0c;进而提高产品销量和企业品牌形象。但是&#xff0c;有些企业…

基于html+css的图展示108

准备项目 项目开发工具 Visual Studio Code 1.44.2 版本: 1.44.2 提交: ff915844119ce9485abfe8aa9076ec76b5300ddd 日期: 2020-04-16T16:36:23.138Z Electron: 7.1.11 Chrome: 78.0.3904.130 Node.js: 12.8.1 V8: 7.8.279.23-electron.0 OS: Windows_NT x64 10.0.19044 项目…

MFC(十二)多个对话框

我们来制定多个对话框&#xff0c;每个对话框都有不同的功能&#xff0c;单击下一步&#xff0c;即可跳转到下一个对话框 1.新建一个启动按钮 2.在资源视图&#xff0c;Dialog里面&#xff0c;右键-->添加资源---->dialog>选择IDD PROPPAGE_SMALL新建 属性页&#…

「移动机器人行业应用分析」锂电行业

锂电池作为目前一种比较成熟和先进的电池&#xff0c;因其质量轻&#xff0c;储电量大等特点&#xff0c;受到了人们的广泛应用。中国作为全球最大的锂电生产和消费国&#xff0c;也是全球最大的电动汽车市场&#xff0c;随着“碳中和”这一目标的提出&#xff0c;锂离子电池技…

陶瓷板检测系统在工业质检领域的前景

陶瓷是一种重要的工业材料&#xff0c;广泛应用于建筑、电子、航空航天、医疗等领域。在生产过程中&#xff0c;陶瓷制品需要经过多道工序&#xff0c;其中检测环节是非常重要的一环。传统的陶瓷板检测方式主要依赖人工目视检测&#xff0c;效率低下且容易出错。随着人工智能技…

5年Java经验字节社招:15天3次面试,成功拿下Offer

背景经历 当时我工作近5年&#xff0c;明显感觉到了瓶颈期。具体来说&#xff0c;感觉自己用过很多框架、做过一些技术设计、也有过一些产出&#xff0c;但是从技术深度上感觉不足&#xff0c;到后期时做事也没有明显挑战&#xff0c;完全适应了公司节奏&#xff0c;说句不好听…

企业做直播如何选择好的直播平台?需要考虑哪些方面?

企业做直播如何选择好的直播平台&#xff1f;需要考虑哪些方面&#xff1f;我将从功能需求、可靠性与稳定性、用户体验、技术能与售后服务能力等方面进行综合考虑&#xff0c;帮助您做出明智的决策&#xff0c;或是说提供选型方面的参考。 企业在选择一家直播平台时应考虑以下因…

Vue.js 中的过滤器是什么?如何使用过滤器?

Vue.js 中的过滤器是什么&#xff1f;如何使用过滤器&#xff1f; 在 Vue.js 中&#xff0c;过滤器是一种以函数为基础的可重用代码片段&#xff0c;用于对数据进行格式化和处理。通过使用过滤器&#xff0c;我们可以在模板中对数据进行简单的转换&#xff0c;以便更好地呈现给…

chatgpt赋能python:Python在主函数中调用函数:提高代码可读性和降低重复性工作

Python在主函数中调用函数&#xff1a;提高代码可读性和降低重复性工作 在Python编程中&#xff0c;我们常常需要将代码分解成多个函数来实现各种功能。而主函数则是整个程序的执行入口。调用函数可以降低代码的复杂度和耦合性&#xff0c;并且使得代码更容易维护和重用。 基…

开源赋能 普惠未来|元遨/CARSMOS诚邀您参与2023开放原子全球开源峰会

元遨/CARSMOS定位于面向全球国际合作的平等自治的智能驾驶开源社区&#xff0c;秉持“走出去&#xff0c;引进来”的双向开放策略&#xff0c;通过互联网技术和开源社区模式相结合&#xff0c;建立和发展开源智能驾驶的科研、教育、产业化起步平台&#xff0c;包括开源软件、开…

centos7下svnserve方式部署subversion/SVN服务端(实操)

一般来说&#xff0c;subversion服务器可以用两种方式架设&#xff1a; 一种是基于svnserve&#xff0c;svnserve作为服务端&#xff1b; 一种是基于Apache&#xff0c;用apache作为服务端。 这里采用第一种方式部署。 执行如下命令&#xff0c;安装SVN。 yum install sub…

各跨境电商平台测评自养号环境方案

在电商领域&#xff0c;很多卖家和工作室总是在寻找可以提高销售量、提升产品评级的方法。有了我们这套独特的测评系统&#xff0c;这一切都可以变得简单许多。可以让你轻松地创建和管理大量高质量的账户&#xff0c;自主掌控真实买家的浏览、购买、下单、评价等行为&#xff0…

SpringBoot——原理(自动配置_案例(自定义阿里云文件上传starter))

本文同步更新于鼠鼠之家SpringBoot——原理&#xff08;自动配置_案例(自定义阿里云文件上starter)&#xff09; - 鼠鼠之家~我要怎么水够标题长度 starter定义 starter就是springboot中的起步依赖&#xff0c;虽然springboot已经提供了很多的起步依赖&#xff0c;但是在实际…

Yolov5s算法从训练到部署

文章目录 PyTorch GPU环境搭建查看显卡CUDA版本Anaconda安装PyTorch环境安装PyCharm中验证 训练算法模型克隆Yolov5代码工程制作数据集划分训练集、验证集修改工程相关文件配置预训练权重文件配置数据文件配置模型文件配置 超参数配置 测试训练出来的算法模型 量化转换算法模型…

云南LED、LCD显示屏系统建设,户外、室内广告大屏建设方案

LED大屏幕显示系统是LED高清晰数字显示技术、显示单元无缝拼接技术、多屏图像处理技术、信号切换技术、网络技术等科技手段的应用综合为一体&#xff0c;形成一个拥有高亮度、高清晰度、技术先进、功能强大、使用方便的大屏幕投影显示系统。通过大屏幕显示系统&#xff0c;可以…

SpringBoot1-案例以及快速启动

1.概述 简化Spring应用的初始搭建以及开发过程 原生开发SpringMVC程序过程 创建一个Maven工程&#xff0c;在pom打入坐标&#xff1b;配置类ServletConfig&#xff0c;初始化Spring容器和SpringMVC容器&#xff1b;创建配置类SpringConfig和SpringMVC配置类&#xff1b;至少要有…

NLP基础模型和注意力机制

3.1 基础模型 欢迎来到本次课程的最后一周的内容&#xff0c;同时这也是五门深度学习课程的最后一门&#xff0c;你即将抵达本课程的终点。 你将会学习seq2seq&#xff08;sequence to sequence&#xff09;模型&#xff0c;从机器翻译到语音识别&#xff0c;它们都能起到很大…

Azure OpenAI Service可以直接出题

使用模型和部署模型名称&#xff1a; Model name: text-davinci-003Deployment name: text-davinci In the Completions page, ensure your text-davinci deployment is selected and then in the Examples list, select Classify text. Replace all of the text in the pro…