idea设置虚拟路径的个人理解:
对于tomcat来说,一个项目部署到webapps下之后,就可以通过具体的路径进行对项目的访问
而idea会为每一个tomcat部署的项目单独建立一份配置文件
* 查看控制台的log:Using CATALINA_BASE: "C:\Users\12876\.IntelliJIdea2018.2\system\tomcat\_StageThree"
在其中的conf\Catalina\localhost\起的虚拟路径名.xml文件
<?xml version="1.0" encoding="UTF-8"?>
<Context path="/day13_servlet" docBase="D:\IdeaProjects\StageThree\out\artifacts\day13_servlet_war_exploded" />
path代表虚拟路径 docBase代表项目的真正所在位置
* 相当于将项目真正位置的文件放在一个起的虚拟路径的文件夹中,放在了tomcat的webapps下(实际并不是这样)
遇到的问题:
当idea设置了虚拟路径 day13_servlet时form表单中的action="/day13_servlet/hello"
而在继承httpServlet类中的注解只写@WebServlet("/hello"); ?
解释:因为注解是从虚拟目录后开始算的.是从day13_servlet后开始的,所以只写/hello
另一种解释:action是客户端的提交,客户端并不知道虚拟路径,所以要加上虚拟路径,而servlet是服务器内部的,是知道虚拟路径的,所以不需要加上虚拟路径,同理,servlet内部的转发属于服务器内部跳转,也是不需要加上虚拟路径的