MyException - 我的异常网
当前位置:我的异常网» Web前端 » Web开发中的路径有关问题

Web开发中的路径有关问题

www.MyException.Cn  网友分享于:2015-08-26  浏览:4次
Web开发中的路径问题

    路径问题在Web开发中算是令人比较蛋疼的问题,尤其是用相对地址时,同样的代码,在不同的目录结构中竟然会出现有对有错的结果,让人茫然不知所措。这种错误,究其原因,还是对Web中路径的概念一知半解,为彻底避免这种错误,提高开发效率,这里对Web中路径问题稍作总结。

 

1. 服务器端的相对地址
   

    是在服务器端解析的,是相对于web应用的地址
    servlet中的相对地址应该是相对于web应用,即相对于http://localhost:8080/webapp/

 

2. 重定向的路径问题


    forward跳转: servlet中的request.getRequestDispatcher(address);这个address是在服务器端解析的,
    所以,要forward到a.jsp应该这么写: request.getRequestDispatcher("/user/a.jsp")这个/相对于当前的web应用webapp, 其绝对地址就是:http:// localhost:8080 /webapp/user/a.jsp


    sendRedirect跳转: response.sendRedirect(address);这个address是在客户端解析的,要跳转到a.jsp,应该这么写:response.sendRedirect("/webapp/user/a.jsp");
 
3. 客户端的相对地址


    所有的html中的相对地址都是相对于http:// localhost:8080 / 的,而不是http:// localhost:8080 /webapp/ 的。
    Html中的form表单的action属性的地址应该是相对于http:// localhost:8080 / 的。

    所以,如果提交到a.jsp为:action="/webapp/user/a.jsp";提交到servlet为action="/webapp/handleservlet"
    Javascript也是在客户端解析的,所以其相对路径和form表单一样。

 

4. 两种相对路径
 
    相对于根目录的路径:

    /jsp/path/pathTest.jsp 
    在服务器端解析为绝对路径为:http://localhost:8080/webapp/jsp/path/pathTest.jsp  
    在客户端解析为的绝对路径为:http://localhost:8080/jsp/path/pathTest.jsp

 

    相对于当前目录的路径:  

    jsp/path/pathTest.jsp  
    当前目录的路径为http://localhost:8080/webapp/jsp/path ,

    那么绝对路径为:http://localhost:8080/webapp/jsp/path/jsp/path/pathTest.jsp

 
5. 站点根目录和css路径问题


    当在jsp中引入css时,如果其相对路径相对于当前jsp文件的,会正常找到相应的css
    但是如果从一个和当前jsp的路径不一样的Servlet中forward到这个jsp时,当前的相对路径是哪个Servlet的相对路径,而不是jsp所在的路径,这时不能在jsp中用这样的路径:<link href="css.css" rel="stylesheet" type="text/css">或者<link href="../../css.css" rel="stylesheet" type="text/css">。

    这中情况下,要用站点根目录来引用css文件,就是相对于http://ip/ 的目录,以"/"开头,即href="/webapp/css.css"。这样在servlet转发后和jsp中都是相对于站点根目录的相对路径,就能正确使用所定义的css样式了。

    也可以理解为在客户端(jsp/html文件中),引用文件时,都要用/wabapp/***开头,因为客户端的相对地址是http://localhost:8080/

 

6. servlet中几个获取路径方法的对比

    对于url: http://localhost:8080/webapp/blog/list

    那么分别调用request.getContextPath( )、request.getServletPath( ) 、 request.getURI( )、request.getURL( )分别返回什么路径?

 

    这几个方法都是在HttpServletRequest接口中定义的。

    

    1). request.getContextPath( )返回web应用程序的路径,上例中该方法将返回/webapp;

    2). request.getServletPath( ) 返回Servlet的路径。上例中该方法将返回/blog/list;

    3). request.getRequestURL( )返回请求的URL,上例中即为http://localhost:8080/webapp/blog/list ;

    4). request.getRequestURI( )返回HTTP请求行中请求URI的部分。上例中该方法将返回/webapp/blog/list.

            

 

*注:事例所用服务器端口号为8080,webapp是web工程名字

文章评论

“肮脏的”IT工作排行榜
“肮脏的”IT工作排行榜
程序猿的崛起——Growth Hacker
程序猿的崛起——Growth Hacker
10个调试和排错的小建议
10个调试和排错的小建议
如何区分一个程序员是“老手“还是“新手“?
如何区分一个程序员是“老手“还是“新手“?
Web开发人员为什么越来越懒了?
Web开发人员为什么越来越懒了?
看13位CEO、创始人和高管如何提高工作效率
看13位CEO、创始人和高管如何提高工作效率
中美印日四国程序员比较
中美印日四国程序员比较
程序员和编码员之间的区别
程序员和编码员之间的区别
 程序员的样子
程序员的样子
为啥Android手机总会越用越慢?
为啥Android手机总会越用越慢?
老美怎么看待阿里赴美上市
老美怎么看待阿里赴美上市
60个开发者不容错过的免费资源库
60个开发者不容错过的免费资源库
程序员的一天:一寸光阴一寸金
程序员的一天:一寸光阴一寸金
聊聊HTTPS和SSL/TLS协议
聊聊HTTPS和SSL/TLS协议
初级 vs 高级开发者 哪个性价比更高?
初级 vs 高级开发者 哪个性价比更高?
每天工作4小时的程序员
每天工作4小时的程序员
编程语言是女人
编程语言是女人
鲜为人知的编程真相
鲜为人知的编程真相
那些性感的让人尖叫的程序员
那些性感的让人尖叫的程序员
如何成为一名黑客
如何成为一名黑客
什么才是优秀的用户界面设计
什么才是优秀的用户界面设计
十大编程算法助程序员走上高手之路
十大编程算法助程序员走上高手之路
科技史上最臭名昭著的13大罪犯
科技史上最臭名昭著的13大罪犯
程序员必看的十大电影
程序员必看的十大电影
我的丈夫是个程序员
我的丈夫是个程序员
亲爱的项目经理,我恨你
亲爱的项目经理,我恨你
程序员应该关注的一些事儿
程序员应该关注的一些事儿
2013年美国开发者薪资调查报告
2013年美国开发者薪资调查报告
写给自己也写给你 自己到底该何去何从
写给自己也写给你 自己到底该何去何从
一个程序员的时间管理
一个程序员的时间管理
老程序员的下场
老程序员的下场
代码女神横空出世
代码女神横空出世
旅行,写作,编程
旅行,写作,编程
总结2014中国互联网十大段子
总结2014中国互联网十大段子
程序员周末都喜欢做什么?
程序员周末都喜欢做什么?
当下全球最炙手可热的八位少年创业者
当下全球最炙手可热的八位少年创业者
10个帮程序员减压放松的网站
10个帮程序员减压放松的网站
Java程序员必看电影
Java程序员必看电影
Java 与 .NET 的平台发展之争
Java 与 .NET 的平台发展之争
程序员眼里IE浏览器是什么样的
程序员眼里IE浏览器是什么样的
那些争议最大的编程观点
那些争议最大的编程观点
我是如何打败拖延症的
我是如何打败拖延症的
为什么程序员都是夜猫子
为什么程序员都是夜猫子
程序员的鄙视链
程序员的鄙视链
做程序猿的老婆应该注意的一些事情
做程序猿的老婆应该注意的一些事情
Google伦敦新总部 犹如星级庄园
Google伦敦新总部 犹如星级庄园
5款最佳正则表达式编辑调试器
5款最佳正则表达式编辑调试器
程序员都该阅读的书
程序员都该阅读的书
程序员最害怕的5件事 你中招了吗?
程序员最害怕的5件事 你中招了吗?
软件开发程序错误异常ExceptionCopyright © 2009-2015 MyException 版权所有