DispatcherServlet的路径设置问题

来源:13-1 课程总结

慕哥6062902

2020-07-22

老师,在自研框架里面,路径设置的是 /*
而在源码的项目里面设置的 /
我把源码里面的设置成/ * 后测试/headline/add,或者是直接请求jsp也是可以的,但平常在项目里面看到的web.xml,配置的几乎都是/ 想问下您的用意。

因为之前您有说过,/几乎拦截所有请求,除了精确的.jsp的请求;
/会真正拦截所有请求,由它来统一分发。那为什么有时候用/ ,有时候用/

写回答

2回答

翔仔

2020-07-22

同学好,这里咱们主要是想尝试拦截并处理完所有请求,而不像spring那样把静态资源请求交给defaultServlet去处理:)

0
1
慕哥6062902
老师,我还有些一直模糊的点,麻烦你有时间的时候回复下,感谢。 1、jsp属于静态资源吗?我只知道html,js,css,图片,音频这些是静态资源; 2、自研框架里面,jsp对应的是JspServlet,默认的servlet是DefaultServlet,DefaultServlet是用来处理静态资源的。按你前面回复,我的理解是如果配置DispatcherServlet的拦截路径是 / ,Spring里面把静态资源(包括jsp)都交给DefaultServlet去处理了,而没有交给tomcat里面的jspServlet,对么? 3、我想找到您说的Spring里面defaultServlet,但是没找到,,能不能发出来下,我想debug确定下直接请求.jsp文件,到底是怎么处理,被谁给处理了。
2020-07-23
共1条回复

翔仔

2020-07-23

慕哥好,jsp不属于静态资源哈,你可以看到pom.xml里有jsp相关的jar

  关于JSP页面的执行,有以下几个步骤:


创建jsp页面,将jsp页面部署在tomcat/webapps目录下或者tomcat/webapps子目录下,并且启dao动服务器;

当客户在第一次请求JSP页面时JSP Engine(JSP引擎)将JSP网页转译为Servlet,生成的文件保存在tomcat/work/Catalina/localhost下;

JSPC(jspc编译器)对转译生成的Servlet编译成Servlet.class,文件和Servlet在同一个文件夹下;

由服务器访问Servlet.class并且将对应内容响应给客户

而/是优先级最低的,并且jsp servlet会动态注册到tomcat容器中,所以jsp请求会被这些servlet给处理


1
2
翔仔
回复
慕哥6062902
同学好,是的哈,相当于是转发而已
2020-08-17
共2条回复

剑指Java自研框架,决胜Spring源码

快速入门Spring核心源码+从零开发自研框架

1498 学习 · 495 问题

查看课程