一般例如jsp,css,js之类的文件以及项目自带的图片资源什么的都是放在项目名/WebContent目录下(也可能是项目名/Webapp),以下事实基于这个环境下,并假设我有一个项目叫TaoBao,下面是目录
如图,jsp直接暴露在WebContent目录下,images中是各种图片,js中有.js和.css文件
java web中访问资源的几种方法:
//重定向
response.sendRedirect("/moubao/index.jsp");
//转发
request.getRequestDispatcher("/index.jsp").forward(request, response);
//超链接
<a href='/moubao/index.jsp' />
//表单提交
<form action='/moubao/index.jsp'>...</form>
以上4中方式,除了转发是由服务器发起的路径,其他都是浏览器发起的(大家明白这句话我想表达的意思就可以了)
路径开头直接“/”表示当前路径
结论:
1、浏览器发起的请求中的“/”表示“Tomcat/webapps”目录下,比如你在浏览器中输入“localhost:8080/TaoBao”中的“/”就是表示Tomcat/webapps,调用资源的时候需要写/TaoBao/index.jsp
2、而服务器发起的请求中“/”表示“Tomcat/webapps/TaoBao”的目录,调用的时候写/index.jsp
注意到区别了吗
根据以上结论,比方说,我在cart.jsp中需要访问另一个jsp页面或者images中的图片
<a href="/TaoBao/details.jsp></a>
<img src="/TaoBao/images/001.jpg>
或者也可以这样,利用”..“切换到目录/TaoBao之下
<a href="../details.jsp></a>
<img src="../images/001.jpg>
项目如果要重命名什么的,你也可以选择String path = request.getContextPath();来获取当前项目,System.out.print(path)在我当前项目下的输出结果就是 /TaoBao,(ps:在.jsp中可以直接这样调用方法;在.java中如果想使用这个方法需要注意的是request是HttpServletRequest类的实例,如果你的方法中request是ServletRequest的实例,那需要转换一下)
有缘再更新,与各位同仁互勉。
转载请注明出处,谢谢