jsp无法解析,直接在浏览器输出html源码问题

今天在用springmvc+tomcat做一个小的测试程序时,访问jsp页面出现无法解析,直接在浏览器输出html源码:


于是各种检查:

1.web.xml已设置了编码过滤器:


2.jsp文件存储编码为UTF-8



3.项目各种编码都设置为了UTF-8:

4.jsp头也已经设置了编码:


问题到底出现在哪?!

最后经过多次调试,发现只要将springmvc主过滤器路径匹配规则设置为“/”,问题就可以解决:





在网上找到如下相应的解释:

博客地址:https://blog.csdn.net/jinghuashuiyue2/article/details/78589655?locationNum=7&fps=1


在配置为“/”时,将会覆盖Tomcat中的conf/web.xml中的缺省Servlet,即DefaultServlet,因为 DefaultServlet主要处理的是静态资源,这个Servlet处理规则是其它Servlet不能匹配的请求将由它进行处理。 而在Tomcat中的DefalutServlet(默认Servlet、缺省Servlet)的路径配置恰巧是 "/",覆盖后html静态资源将无法解析,




因此需要在springmvc配置文件中配置如下默认servlet静态资源处理:



"/"与"/*区别"

其实/和/*都可以匹配所有的请求资源,但其匹配的优先顺序是不同的。/在所有的匹配路径中,优先级最低,即当别的路径都无法匹配时,/所匹配的缺省Servlet才会进行相应的请求资源处理。而 /星号 匹配的优先级是高于/路径和星号.后缀的路径的(如星号.action,星号.jsp等路径)。


猜你喜欢

转载自blog.csdn.net/lai1170137052/article/details/80928949