TOMCAT 十月 22, 2023

隐藏 Tomcat 版本信息

文章字数 7.2k 阅读约需 7 mins.

访问 Tomcat 发布的应用中不存在的页面或 URL 中包含特殊字符时,会看到下面这样的界面:

http://localhost:8080/not-exist

http://localhost:8080...

查看全文

SERVLET 十二月 27, 2020

Override same class

文章字数 7.5k 阅读约需 7 mins.

实际 Java Web 项目中经常会遇到这样的场景:希望对依赖的某个三方库中的行为进行覆盖式的定制(修改三方库中的某些行为),但并不希望发布定制的版本至私服。

通常在使用 WAR 包发布应用时,可将定制的类编译成 class 文件,放入 WEB-INF/classes 路径中,即可覆盖放置在 WEB-INF/lib 路径下的三方库中同名类,达到定制的目的。

那么为什么可以这样?

在两个相同的 class 必须都存在于 JAR 包中时,又怎么实现这种需求呢?

Servlet 规范

Java(TM...

查看全文

TOMCAT 八月 02, 2020

Tomcat 是怎么找到用来处理请求的 Servlet 的?

文章字数 14k 阅读约需 12 mins.

Servlet 注册到了哪? 中,我们找到了配置的 Servlet 被包装成了一个 StandardWrapper,以注册的 Servlet name 为 key 放入了其父容器(Context)一个 HashMap 里。那么当 Tomcat 收到一个请求的时候,是怎么找到对应的 Servlet 以对请求进行处理的呢?

先放一张图:

总的来说,这个过程分为两部分:

  1. 读取所有 Servlet 的配置,放入 Mapper 中;
  2. 将请求匹配到具体的 Servlet 上。

注:本文以 Tomcat...

查看全文

SPRING 四月 30, 2020

Servlet 注册到了哪?

文章字数 4.1k 阅读约需 4 mins.

还在给每个请求加前缀避免模块间接口冲突呢? 中内容,我们可以通过 ServletRegistrationBean 注册多个 DispatcherServlet,那么 Servlet 被注册到哪了呢?

简单的回答:Servlet 容器。

没毛病!但马达马达大内!注册到了 Servlet 容器里的哪?存在什么结构里?

让我们以 Tomcat 容器为例,刨根问底。

ServletRegistrationBean 中,有一个 addRegistration 方法,将具体的 Servlet 添加到...

查看全文

JAVA 十月 14, 2015

调试跟进 tomcat 源码

文章字数 2.3k 阅读约需 2 mins.

调试 web 应用时,有时需要跟进 tomcat 的源码。下载 tomcat 源码并编译运行是一种方式,不过太麻烦,有没有简单点的办法呢?

给项目加上 tomcat 的 jar 包作为运行时依赖,并附加源码,就可以在调试的时候跟进 tomcat 的源码了。

Gradletomcat 7.0.63 为例,只需在 build.gradledependencies 中加入如下代码即可:

depencencies {
    def tomcatVer = '7.0.63'
    runtime...
查看全文
0%