java web项目中的路径问题(带不带“/”)

一般例如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,调用资源的时候需要写/Demo/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的实例,那需要转换一下)


有缘再更新,与各位同仁互勉。

猜你喜欢

转载自blog.csdn.net/Mart1nn/article/details/82899835