idea本地调式tomcat源码
前言
上篇文章中一直没搞定的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源码的更多相关文章
- 将tomcat源码导入eclipse
前言: 写完了socket小应用的原始版本,中间还有好多预想的功能没有实现,在写的过程中也发现了很多问题.因为前面有粗略的看过tomcat实现原理解析,知道tomcat其实也是纯java写的web服务 ...
- Tomcat源码学习
Tomcat源码学习(一) 转自:http://carllgc.blog.ccidnet.com/blog-htm-do-showone-uid-4092-type-blog-itemid-26309 ...
- Tomcat源码分析——请求原理分析(上)
前言 谈起Tomcat的诞生,最早可以追溯到1995年.近20年来,Tomcat始终是使用最广泛的Web服务器,由于其使用Java语言开发,所以广为Java程序员所熟悉.很多人早期的J2EE项目,由程 ...
- Tomcat 源码分析(转)
本文转自:http://blog.csdn.net/haitao111313/article/category/1179996 Tomcat源码分析(一)--服务启动 1. Tomcat主要有两个组件 ...
- Tomcat源码分析一:编译Tomcat源码
Tomcat源码分析一:编译Tomcat源码 1 内容介绍 在之前的<Servlet与Tomcat运行示例>一文中,给大家带来如何在Tomcat中部署Servlet应用的相关步骤,本文将就 ...
- [Tomcat源码分析] Eclipse中搭建Apache Tomcat源码调试环境
网上很多文章都推荐使用Ant下载编译,但本地实践中屡屡失败,无法下载. 后来参考 https://blog.csdn.net/xiongyouqiang/article/details/7894107 ...
- 【Tomcat 源码系列】源码构建 Tomcat
一,前言 这篇博客写于 12 月 12 日,从 github[1] 上 fork 了一份 tomcat 的源代码,clone 到了本地.最近想把 tomcat 的源代码分析一下,寒假的时候有完整的时间 ...
- svn工具安装下载Tomcat源码以及导入eclipse
安装 1.svn下载地址 https://tortoisesvn.net/downloads.html 2.语言包下载 3.先安装svn,在直接安装语言包 4.桌面右键可以看到相关svn信息 下载To ...
- Tomcat源码导入eclipse的步骤
Tomcat源码导入eclipse 一.下载源码 1. 进入Apache 官网:http://tomcat.apache.org/ 2. 在左边侧选择要下载的源码的版本. 3. 或者直接通过Ar ...
随机推荐
- python mixin到底是什么
python mixin到底是什么 1.什么是Mixin 在面向对象编程中,Mixin是一种类,这种类包含了其他类要使用的方法,但不必充当其他类的父类.其他类是如何获取Mixin中的方法因语言的不同而 ...
- AI基础架构Pass Infrastructure
AI基础架构Pass Infrastructure Operation Pass OperationPass : Op-Specific OperationPass : Op-Agnostic Dep ...
- CPU的自动调度矩阵乘法
CPU的自动调度矩阵乘法 这是一个有关如何对CPU使用自动调度程序的文档. 与依靠手动模板定义搜索空间的基于模板的autotvm不同,自动调度程序不需要任何模板.用户只需要编写计算声明,而无需任何调度 ...
- Jmeter(五十一) - 从入门到精通高级篇 - jmeter之运动战(详解教程)
1.简介 运动战是一种军事作战方式,依托较大的作战空间来换取时间移动兵力包围敌方,以优势兵力速战速决,运动战的运用归为这样一段话"避敌主力,诱敌深入,集中优势兵力逐个击破".今天宏 ...
- C++标准模板库(STL)——map常见用法详解
map的定义 map<typename1, typename2> mp; map需要确定映射前类型和映射后类型,所以需要在<>内填写两个类型,第一个是键的类型,第二个是值的类型 ...
- python_xlutils : python利用xlutils修改表格内容
一.xlutils是什么 是一个提供了许多操作修改excel文件方法的库: 属于python的第三方模块 xlrd库用于读取excel文件中的数据,xlwt库用于将数据写入excel文件,修改用xlu ...
- P1045 [NOIP2003 普及组] 麦森数
题目描述 形如2^P−1的素数称为麦森数,这时P一定也是个素数.但反过来不一定,即如果P是个素数,2^P−1不一定也是素数. 到1998年底,人们已找到了37个麦森数.最大的一个是P=3021377, ...
- 深入解读Redis分布式锁
之前码甲哥写了两篇有关线程安全的文章: 你管这叫线程安全? .NET八股文:线程同步技术解读 分布式锁是"线程同步"的延续 最近首度应用"分布式锁",现在想想, ...
- NEXTCLOUD 常见错误
HTTP请求头"Strict-Transport-Security"没有配置为至少"15552000"秒出于增强安全性考虑推荐按照安全提示中的说明启用HSTS ...
- 【MySQL】MySQL Workbench 8.0 CE 界面汉化
汉化前: 找到这个文件: 打开文件,复制下面这段替换进去保存,重新打开软件即可:(*改之前备份一下) <?xml version="1.0"?> <data> ...