JSP页面中的相对路径问题

在JSP页面中,根据解析地方的不同可以分为两种,一种是在服务器端解析的,还有一种是在客户浏览器端解析的。

在JSP页面内嵌的java代码中,”/”是相对于项目应用webapp而言的,例如在项目myProject有目录dir,该目录中有文件test1.jsp与test2.jsp.在页面test1.jsp中嵌入有java代码response.sendRedirect(“/test2.jsp”),这里的/test.jsp等价于http://127.0.0.1:8080/myProject/test2.jsp

在JSP页面中与css,images,javascript等相关的文件是在客户端浏览器解析的,其相对于服务器而言,比如在上边的test1.jsp中有链接<a href=’/test2.jsp’>链接</a>,/test2.jsp等价于http://127.0.0.1:8080/test2.jsp,而不是http://127.0.0.1:8080/myProject/test2.jsp

另外,相对路径除了以’/’开头以外,还有其他方式的相对路径,即相对于当前路径的相对路径,以./../ 或者 href=’test2.jsp’方式。一般不要使用这种方式的相对路径,因为项目内部文件的移动都会对这些路径造成影响,而如果以/开头的相对路径,项目内部的文件移动是不会对这些路径造成影响的。针对于在jsp页面中以./ ../ 或者 href=’test2.jsp’方式的相对路径,可以通过<basehref="<%=basePath%>">类设置基准目录,在设置之前是以当前浏览器中的地址为基准目录的,设置之后就是以basePath的值为基准目录了。

 我最近在做一个项目的移植时,发现jsp文件中的所有css,image,javascript都是以/开头的相对路径,移植后根本显示不出来,因为这些相关文件都存放在WebRoot路径下边,也就是说,我如果想访问我的图片,应该是http://127.0.0.1:8080/mysport/images/logo.png,而页面中图片的地址源却是http://127.0.0.1:8080/images/logo.png,这就是因为/在浏览器端解析造成的。我索性就在tomcat中另外建立一个工程命名为images,然后在此目录内部直接放入我的图片,在另外的项目mysport的jsp页面中,图片http://127.0.0.1:8080/images/logo.png就能正常显示出来了,没想到问题是这样解决的。

你可能感兴趣的:(JavaScript,java,jsp,浏览器,服务器,webapp)