前言

上篇文章中一直没搞定的tomcat源码调试终于搞明白了,p神的代码审计星球里竟然有,真的好b( ̄▽ ̄)d ,写一下过程,还有p神没提到的小坑

准备阶段

1.去官网下东西:https://tomcat.apache.org/download-80.cgi

下三个东西一会都用得上

2.idea新建项目,选择maven构建的

其它名字啥的随便填,如果你第一次搞,应该创建完和我一样

并没有index.jsp和web.xml等,这很正常不要急

排坑

配置tomcat启动

如果没找到tomcat记得点哪个30more

到这里网上教程一般都说直接进deployment添加artifacts,但是你会发现没有

这时点fix,在加号里添加一个web application:exploded

点击ok后回到deployment,你会看到这样

然后退出去点击run,不出意外的话,应该是这样

可以看到src目录是有了,但是有三个报错,浏览器并没有出现hello world

此时的问题可能是由于idea版本导致的,你并不一定遇到,如果你没出现问题,请直接看我下面的步骤。

我的解决办法是关闭项目重新打开

删除掉之前的artifacts,并且新添加一个,此时会出现from modules的选项,点击它,选择你的项目,此时才可正常运行

原因分析:我们最早创建的artifacts并没有挂载到项目上,也没有出现out的编译文件夹等内容,重启后识别到了调式项目,重新创建了正确的artifact

正式调试

在index.jsp中写入out.println,当然你们应该报错了。

这里可以从pom里添加,但是我们选择另一种方式,因为我们要调试tomcat源码

在此点击这个按钮,然后在lib里把tomcat-lib里的所有jar包加进去

此时就不报错了,如果报错请重启项目

然后我们移动到此处会显示它引用的jar

当然这个需要设置,在setting的这个位置,把它勾选上

此时下断点,debug模式启动

随便点一个流程,就能看到反编译代码了

完善debug

这样我们能看到的是class的反编译代码,不如直接看源码好,而且说不定会有丢失

我们回到lib添加的位置,加入之前我们下好的源码,这里注意是在右侧点+号

添加完后是这样的

此时我们可能会遇到一个报错,说反编译代码和源码配不上(我也不知道有啥影响,但是p神教了解决方案就加上吧)

此时我们继续添加一个包,deployer中juli这个jar包

之后报错就消失了

总结:p神的这篇文章真是帮了大忙,同时也让我更熟悉了idea各种依赖的模式配置位置,付费知识的一颗明星,只需199,良心中的良心。不说了继续去星球学java反序列化了。

idea本地调式tomcat源码的更多相关文章

  1. 将tomcat源码导入eclipse

    前言: 写完了socket小应用的原始版本,中间还有好多预想的功能没有实现,在写的过程中也发现了很多问题.因为前面有粗略的看过tomcat实现原理解析,知道tomcat其实也是纯java写的web服务 ...

  2. Tomcat源码学习

    Tomcat源码学习(一) 转自:http://carllgc.blog.ccidnet.com/blog-htm-do-showone-uid-4092-type-blog-itemid-26309 ...

  3. Tomcat源码分析——请求原理分析(上)

    前言 谈起Tomcat的诞生,最早可以追溯到1995年.近20年来,Tomcat始终是使用最广泛的Web服务器,由于其使用Java语言开发,所以广为Java程序员所熟悉.很多人早期的J2EE项目,由程 ...

  4. Tomcat 源码分析(转)

    本文转自:http://blog.csdn.net/haitao111313/article/category/1179996 Tomcat源码分析(一)--服务启动 1. Tomcat主要有两个组件 ...

  5. Tomcat源码分析一:编译Tomcat源码

    Tomcat源码分析一:编译Tomcat源码 1 内容介绍 在之前的<Servlet与Tomcat运行示例>一文中,给大家带来如何在Tomcat中部署Servlet应用的相关步骤,本文将就 ...

  6. [Tomcat源码分析] Eclipse中搭建Apache Tomcat源码调试环境

    网上很多文章都推荐使用Ant下载编译,但本地实践中屡屡失败,无法下载. 后来参考 https://blog.csdn.net/xiongyouqiang/article/details/7894107 ...

  7. 【Tomcat 源码系列】源码构建 Tomcat

    一,前言 这篇博客写于 12 月 12 日,从 github[1] 上 fork 了一份 tomcat 的源代码,clone 到了本地.最近想把 tomcat 的源代码分析一下,寒假的时候有完整的时间 ...

  8. svn工具安装下载Tomcat源码以及导入eclipse

    安装 1.svn下载地址 https://tortoisesvn.net/downloads.html 2.语言包下载 3.先安装svn,在直接安装语言包 4.桌面右键可以看到相关svn信息 下载To ...

  9. Tomcat源码导入eclipse的步骤

    Tomcat源码导入eclipse 一.下载源码 1.  进入Apache 官网:http://tomcat.apache.org/ 2.  在左边侧选择要下载的源码的版本. 3.  或者直接通过Ar ...

随机推荐

  1. openresty 学习笔记二:获取请求数据

    openresty 学习笔记二:获取请求数据 openresty 获取POST或者GET的请求参数.这个是要用openresty 做接口必须要做的事情.这里分几种类型:GET,POST(urlenco ...

  2. Python+Selenium - Alert弹框

    上面三种弹窗可以在浏览器的控制台做出效果,如下图 上面三种弹窗可以用alert方法处理 示例: #出现弹窗的操作xxxx# 切换al = driver.switch_to.alert# print(a ...

  3. java中的NIO和IO到底是什么区别?20个问题告诉你答案

    摘要:NIO即New IO,这个库是在JDK1.4中才引入的.NIO和IO有相同的作用和目的,但实现方式不同,NIO主要用到的是块,所以NIO的效率要比IO高很多. 本文分享自华为云社区<jav ...

  4. 面部表情视频中进行远程心率测量:ICCV2019论文解析

    面部表情视频中进行远程心率测量:ICCV2019论文解析 Remote Heart Rate Measurement from Highly Compressed Facial Videos: an ...

  5. 现代传感器的接口:中断驱动的ADC驱动程序

    现代传感器的接口:中断驱动的ADC驱动程序 Interfacing with modern sensors: Interrupt driven ADC drivers 研究了如何编写一个阻塞的模数转换 ...

  6. 为什么edge AI是一个无需大脑的人

    为什么edge AI是一个无需大脑的人 Why edge AI is a no-brainer 德勤预计,到2020年,将售出超过7.5亿个edge AI芯片,即在设备上而不是在远程数据中心执行或加速 ...

  7. BIO/NIO/ANO笔记

    一: netty服务器启动过程 serverBootstrap.bind(hostname, port)---> doBind(localAddress);--> 1.1: initAnd ...

  8. Python集合:set

    集合 集合的描述 set是一个无序不重复的序列,可以用{}或者 set() 函数创建集合,它存放不可变类型(如字符串.数字.元组)数据. 注意:创建一个空集合必须使用set()方法,因为{}是用来生成 ...

  9. (1)http基础

    HTTP服务基础 • 基于 B/S (Browser/Server)架构的网页服务– 服务端提供网页– 浏览器下载并显示网页 • Hyper Text Transfer Protocol,超文本传输协 ...

  10. 『动善时』JMeter基础 — 45、脚本录制工具Badboy介绍

    目录 1.Badboy软件介绍 2.Badboy下载 3.Badboy安装 4.Badboy界面介绍 (1)菜单栏: (2)工具栏: (3)左下角界面视图: 1.Badboy软件介绍 Badboy是一 ...