org.apache.catalina.core.ApplicationDispatcher invoke

javaweb开发遇到这个报错org.apache.catalina.core.ApplicationDispatcher invoke 爆出异常栈溢出,搞的我很懵逼,我都servlet里面循环就没有关于栈的代码,给我抛出了这个异常。

没的办法,搜原因解决呗,具体的几类原因前辈都给总结好了
传送门

然后根据这几个原因查找代码错误。

结果哦,那错误把我这水货搞的更懵逼了。

就是web.xml下 url-pattern 这个配置的路径出现了错误,开始写的是 /* 报错,之后改为 / 。竟然奇迹般的好了,没再报错。

知道了错误的原因,就去找为什么,大致看了看,俩写法区别真的很大

把自己看的简单总结一下:

这里面的写法一共有四种:

  1. 通配符映射:以 / 开头, /* 结束的路径,代表访问文件名在两个 / 中间的文件夹名下的任意一个文件时间,都会映射到这个servlet

  2. 扩展名映射:以 *. 开头的路径, 代表访问相同扩展名的地址时,将会映射到该servlet

  3. 默认映射:只是 / 对于这种映射,拿tomcat言,当找不到响应的servlet时,就会访问 /对应的servlet。以此找到资源文件

  4. 地址映射: 使用明确的地址映射

大致就是这四种吧,详细介绍可以去这里

分析了一下自己的问题:

我的代码在servlert中,最后的执行代码是:
request.getRequestDispatcher(“user.jsp”).forward(request, response);
可以看到是转发到jsp页面。

出现栈溢出也是这一行代码,之前的servlet映射路径是 /*
因此呢,在访问项目下任何文件都会调用这个servlet,溢出的话也就可以理解了

综上所述,servlet的映射路径是浏览器访问的 URL 后缀路径,当访问这个URL时,将调用这个servlet。这样理解不错吧? 不对的话还请指出,非常感谢!

你可能感兴趣的:(eclipse报错)