网站开发中的相对URL问题--JSP
2014-04-02 20:10
295 查看
问题描述:
入门网站开发时,我们会在相对URL问题上有疑惑。例如,在一个jsp页面中引入css外部文件,
<link rel="stylesheet"
href="my-styles.css"
type="text/css" >
当我们直接访问时,页面正常显示,而有时候跳转到此页面,则出现css缺失的情况,这就是我想说的问题。
在分析问题之前,需要引入jsp中的两个知识点:跳转(forward)和重定向(redirect),如果你已了解相关知识,请直接阅读解决方案。
引入:
JSP或Servlet之间有两种相互调用方法,即跳转(forward)和重定向(redirect).
它们的实现方式分别是:
通过RequestDispatcher的forward方法实现跳转(你可以通过HttpServletRequest的getRequestDispatcher方法获得RequestDispatcher);
通过HttpServletRequest的sendRequest方法实现重定向;
区别:
重定向要求客户端(或浏览器)重新连接服务器,获取新资源(或页面),而跳转不需要;
重定向不会保存HttpServletRequest的信息,跳转保存;
重定向会使浏览器地址栏地址发生改变,而跳转保持原来的地址。
说白了,重定向是浏览器从服务器从新获取资源的过程,跳转是服务器内部页面之间相互调用的过程,与浏览器无关。
正因为此,页面中相对URL的相对起始目录会发生变化,举例来说,page_one.jsp调用page_two.jsp时,
重定向调用,页面的相对URL起始目录为page_two.jsp所在目录;
跳转调用,页面的相对URL起始目录为page_one.jsp所在目录;
如果页面中的相对URL如以上例子中的写法(href="my-style.css",表示css文件存在页面的起始目录中),因为页面的起始目录会发生变化,所以不管css文件放在何处,均可能出现资源不存在的情况。
解决方案:
这样的相对URL写法(href="my-style.css")表示css文件与
因为无法判断页面的访问方式是跳转还是重定向,所以我们应该以不变应万变,使不同的访问方式均能成功获取资源。
最简单的解决方案是:
将所有的jsp页面放在只有服务器才能访问的WEB-INF文件夹中;
使用起始目录为网站应用的相对URL,如下:
<link rel=stylesheet
<!-- 以斜杠"/"开始表示相对URL以网站应用为起始目录 -->
href="/path/my-styles.css"
type="text/css">
即可解决问题。
希望对你有所帮助!
入门网站开发时,我们会在相对URL问题上有疑惑。例如,在一个jsp页面中引入css外部文件,
<link rel="stylesheet"
href="my-styles.css"
type="text/css" >
当我们直接访问时,页面正常显示,而有时候跳转到此页面,则出现css缺失的情况,这就是我想说的问题。
在分析问题之前,需要引入jsp中的两个知识点:跳转(forward)和重定向(redirect),如果你已了解相关知识,请直接阅读解决方案。
引入:
JSP或Servlet之间有两种相互调用方法,即跳转(forward)和重定向(redirect).
它们的实现方式分别是:
通过RequestDispatcher的forward方法实现跳转(你可以通过HttpServletRequest的getRequestDispatcher方法获得RequestDispatcher);
通过HttpServletRequest的sendRequest方法实现重定向;
区别:
重定向要求客户端(或浏览器)重新连接服务器,获取新资源(或页面),而跳转不需要;
重定向不会保存HttpServletRequest的信息,跳转保存;
重定向会使浏览器地址栏地址发生改变,而跳转保持原来的地址。
说白了,重定向是浏览器从服务器从新获取资源的过程,跳转是服务器内部页面之间相互调用的过程,与浏览器无关。
正因为此,页面中相对URL的相对起始目录会发生变化,举例来说,page_one.jsp调用page_two.jsp时,
重定向调用,页面的相对URL起始目录为page_two.jsp所在目录;
跳转调用,页面的相对URL起始目录为page_one.jsp所在目录;
如果页面中的相对URL如以上例子中的写法(href="my-style.css",表示css文件存在页面的起始目录中),因为页面的起始目录会发生变化,所以不管css文件放在何处,均可能出现资源不存在的情况。
解决方案:
这样的相对URL写法(href="my-style.css")表示css文件与
因为无法判断页面的访问方式是跳转还是重定向,所以我们应该以不变应万变,使不同的访问方式均能成功获取资源。
最简单的解决方案是:
将所有的jsp页面放在只有服务器才能访问的WEB-INF文件夹中;
使用起始目录为网站应用的相对URL,如下:
<link rel=stylesheet
<!-- 以斜杠"/"开始表示相对URL以网站应用为起始目录 -->
href="/path/my-styles.css"
type="text/css">
即可解决问题。
希望对你有所帮助!
相关文章推荐
- jsp中使用 <a>、<img>、<link>、<form>和ajax 标签中的URL相对路径问题
- (6)开发收获 <base href="<%=basePath%>">JSP页面中的相对路径问题
- 新手在jsp网站开发中所遇到的问题汇总
- 网站开发进阶(三十七)JSP页面跳转问题解决
- 网站开发进阶(三十七)JSP页面跳转问题解决
- 解决JSP网站开发中的驱动冲突问题
- 搜索框反射型xss问题解决(网站开发)
- java/jsp中绝对路径和相对路径的问题[FROM]
- JSP开发过程遇到的中文乱码问题及解决方案
- 【深圳】寻一辈子创业伙伴,要求对PHP网站开发各项技术问题都能搞定的搭档
- 解决Java Web开发中Jsp存储读取MySQL数据中文乱码的问题
- JSP相对路径问题
- JSP Servlet里相对路径问题的解决
- asp.net网站项目开发,删除文件夹后Session丢失问题解决
- 如果网页内容需要支持多语言,你会怎么做?在设计和开发多语言网站时,有哪些问题你必须要考虑?
- Jsp页面通过href拼接url向后台传中文乱码问题
- 响应式网站——兰途科技 项目开发问题及解析(首页index.html)
- JSP网站开发
- java开发了个网站问题不断
- JSP网站开发入门基础与实例高清视频教程