You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多
文档控制台
免费开始使用

如何在IntelliJ IDEA中配置嵌入式Tomcat,无需重启刷新静态文件?

如何在嵌入式Tomcat中无需重启刷新静态文件(IntelliJ IDEA配置)

折腾嵌入式Tomcat的时候,最烦的就是改个HTML/CSS还要重启服务器,后来摸索出一套不用重启就能实时刷新的方法,结合IntelliJ IDEA的配置就能搞定,亲测有效!

一、先调整嵌入式Tomcat的代码配置

嵌入式Tomcat默认会缓存静态资源,所以你改了文件之后它还是读缓存里的旧内容。我们需要在代码里禁用静态资源缓存,让它每次都读取最新的文件:

完整代码示例

public class TomStart {
    public static void main(String[] args) throws LifecycleException, InterruptedException, ServletException {
        Tomcat tomcat = new Tomcat();
        tomcat.setPort(8082);
        
        // 这里替换成你的静态资源目录,比如项目根目录下的web文件夹或标准src/main/webapp
        String webResourceDir = new File("src/main/webapp").getAbsolutePath();
        Context ctx = tomcat.addContext("/", webResourceDir);
        
        // 关键配置:禁用静态资源缓存
        StandardRoot resourceRoot = new StandardRoot(ctx);
        resourceRoot.setCacheMaxSize(0); // 缓存大小设为0,不缓存任何静态资源
        ctx.setResources(resourceRoot);
        
        // 自定义Servlet示例(不需要可以删除这段)
        Tomcat.addServlet(ctx, "EmbeddedServlet", new HttpServlet() {
            @Override
            protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
                resp.getWriter().write("Hello from Embedded Tomcat!");
            }
        });
        ctx.addServletMappingDecoded("/hello", "EmbeddedServlet");
        
        tomcat.start();
        tomcat.getServer().await();
    }
}

重点说明:

  • 确保webResourceDir指向你实际存放HTML/CSS等静态文件的目录
  • StandardRootsetCacheMaxSize(0)是核心,开发环境用完全没问题,生产环境记得改回合理的缓存大小(比如10240KB)

二、IntelliJ IDEA的关键配置

光改代码还不够,还要让IDEA自动把你修改的静态文件同步到运行时环境:

  1. 打开IDEA设置(快捷键Ctrl+Alt+S),找到Build, Execution, Deployment -> Compiler,勾选Build project automatically
  2. Ctrl+Shift+A搜索Registry,找到compiler.automake.allow.when.app.running并勾选它(允许应用运行时自动构建)
  3. 打开你的Run/Debug配置(右上角运行按钮旁的下拉框,选Edit Configurations):
    • 找到运行TomStart的配置,切换到Configuration标签页
    • On 'Update' actionOn frame deactivation都设置为Update resources(切换窗口或手动更新时,只同步静态资源不重启应用)

三、验证效果

现在启动你的TomStart程序,修改任意静态文件(比如index.html的文字、style.css的样式),切换到浏览器刷新页面,就能看到最新内容——完全不用重启Tomcat!

内容的提问来源于stack exchange,提问作者Dispar

火山引擎 最新活动