如图,项目的虚拟目录为/day17,在WEB-INF下有个login.jsp文件,而login.jsp里的验证码img标签的属性指向src/cn/itcast/web/servlet/CheckCodeServlet,CheckCodeServlet.java的url-pattern配置的是/checkCodeServlet。
图上img的src属性写的是
src="${pageContext.request.contextPath}/checkCodeServlet"
这里的
${pageContext.request.contextPath}
获取的不就是项目的虚拟目录吗?那么img的src属性获取到的路径不就是下面这个了?
src="/day17/checkCodeServlet"
而/checkCodeServlet的绝对路径不应该是下面这个吗?
src/cn/itcast/web/servlet/checkCodeServlet
为什么只在/checkCodeServlet前面加上项目的虚拟目录/day17就能访问到这个Servlet了呢?求大神帮解惑下,感激不尽!
https://blog.csdn.net/qq_38263083/article/details/82924281
第一个图的 Servlet 类的映射请求路径跟 Servet 类定义文件夹没有关系,它是由 web.xml 中的配置决定的。
第二个图的 jsp 等资源文件的绝对路径是通过项目请求路径设置的,也就是请求路径+它在 WebContent 下的相对路径。
映射类路径是从配置文件中配置的。 它相当于一个别名。 二楼回答的比较清楚了。 您可以去配置文件中找一下
你理解错了
比如你跳到这个页面输入地址为
http://localhost:8080/login.jsp
那么
${pageContext.request.contextPath}代表的含义就是http://localhost:8080
访问你的Servlet checkCodeServlet 你这么写实际等于
${pageContext.request.contextPath}/checkCodeServlet=http://localhost:8080/checkCodeServlet
还有问题吗