web项目中的路径
来源:互联网 发布:织田信忠 知乎 编辑:程序博客网 时间:2024/06/05 02:13
1.web项目中的路径
1.1 路径中最左边的//a/b/c/d
我们要讨论的是类似这样的路径中的最左边的/,除此之外其他/都是正常的路径分割符
客户端解析路径最左边的/
代表的是端口号后面的/
http://ip:port/
例如:
在页面中有一个超链接
<a href="/hello.html">测试</a>
当我们点击这个超链接的时候,地址栏中的地址会变成:
http://ip:port/hello.html
例如:
在servlet完成一个客户端重定向操作
String url = "/hello.html";
response.sendRedirect(url);
由于客户端重定向是把url地址返回给浏览器,浏览器解析之后,发出新的请求,这时候浏览器地址栏中的url地址变为:
http://ip:port/hello.html
所以在这俩种情况下,url最左边加了/,那么运行之后出现404报错,查看浏览器地址栏后,发现请求的url地址中缺少了项目名
服务器端解析路径最左边的/
代表的是项目名后面的/
http://ip:port/项目名/
例如:
在web.xml文件中配置servlet的映射路径
<url-pattern>/TestServlet</url-pattern>
这个最左边的/是由服务器端进行解析的,所以它代表的是项目名后的/,浏览器进行访问的时候就要写这样的URL地址:
http://ip:port/项目名/TestServlet
例如:
在servlet中进行服务器内部跳转操作
String url = "/TestServlet";
request.getRequestDispatcher(url).forward(request, response);
这个最左边的/是由服务器端进行解析的,所以它代表的是项目名后的/,最后内部跳转所访问的url地址就是:
http://ip:port/项目名/TestServlet
1.2 HttpServletRequest中和路径相关的方法
// /jd1615_servlet
request.getContextPath();
// /PathServlet
request.getServletPath();
// http://127.0.0.1:8989/jd1615_servlet/PathServlet
request.getRequestURL();
// /jd1615_servlet/PathServlet
request.getRequestURI();
-------------------------------------------------------
例2
contextPath:/Web_Test
servletPath:/HttpServletRequest_test
requestURL:http://127.0.0.1:8989/Web_Test/HttpServletRequest_test
requestURI:/Web_Test/HttpServletRequest_test
1.3 ServletContext中和路径相关的方法
ServletContext servletContext = getServletContext();
// /jd1615_servlet
servletContext.getContextPath();
//获得一个资源的绝对路径
// D:\A_jd160405\apache-tomcat-7.0.62\webapps\jd1615_servlet\
servletContext.getRealPath("/");
//获得一个指定路径下面所有的资源路径名
// [/hello.html, /success.html, /WEB-INF/, /error.html, /param.html, /login.html, /first.html, /META-INF/]
servletContext.getResourcePaths("/");
-------------------------------------------------------------------
例2
contextPath:/Web_Test
realPath:/opt/apache-tomcat-8.0.38/webapps/Web_Test/
resourcePaths:[/META-INF/, /bottom.html, /WEB-INF/, /timg_美女.jpeg, /index.html, /jianli_add.html]
1.4 相对路径和绝对路径
绝对路径
使用servletContext.getRealPath("..")就可以获得一个资源的绝对路径
web形式的路径
/hello.html
http://ip:port/hello.html
或者
http://ip:port/项目名/hello.html
具体是哪一种路径,要看解析这个/的是客户端还是服务器端
相对路径
例1:
假设path.html和hello.html在同一个目录下
path.html页面中有一个超链接
<a href="hello.html">测试</a>
超链接中的这个路径就是一个相对路径,相对于当前路径,当前路径指的是浏览器地址栏中这个时候的路径
所以当我们点击超链接的时候,就是在当前路径后面加上这个相对路径
访问path.html的url地址:
http://127.0.0.1:8989/jd1615_servlet/path.html
点击超链接之后,地址栏中的内容变为:
当前路径+相对路径
http://127.0.0.1:8989/jd1615_servlet/
+
hello.html
=
http://127.0.0.1:8989/jd1615_servlet/hello.html
例2:
假设path.html和hello.html不在同一个目录下,path.html在test目录下
path.html页面中有一个超链接
<a href="hello.html">测试</a>
超链接中的这个路径就是一个相对路径,相对于当前路径,当前路径指的是浏览器地址栏中这个时候的路径
所以当我们点击超链接的时候,就是在当前路径后面加上这个相对路径
访问path.html的url地址:
http://127.0.0.1:8989/jd1615_servlet/test/path.html
点击超链接之后,地址栏中的内容变为:
当前路径+相对路径
http://127.0.0.1:8989/jd1615_servlet/test
+
hello.html
=
http://127.0.0.1:8989/jd1615_servlet/test/hello.html
这时候出现404错误,页面找不到
这个时候可以修改这个相对路径,使得点击超链接后可以正常访问
<a href="../hello.html">测试</a>
例3:
假设path.html和hello.html在同一个目录下
path.html页面中有一个超链接
<a href="hello.html">测试</a>
web.xml中给PathServlet映射了一个路径
<url-pattern>/servlet/PathServlet</url-pattern>
访问这个servlet之后,会进行一个服务器内部跳转,跳转到path.html页面
浏览器显示path.html后,再点击页面中的超链接
先访问servlet
http://127.0.0.1:8989/jd1615_servlet/servlet/PathServlet
然后点击页面中的超链接
<a href="hello.html">测试</a>
超链接中的这个路径就是一个相对路径,相对于当前路径,当前路径指的是浏览器地址栏中这个时候的路径
所以当我们点击超链接的时候,就是在当前路径后面加上这个相对路径
点击超链接之后,地址栏中的中变为:
当前路径+相对路径
http://127.0.0.1:8989/jd1615_servlet/servlet
+
hello.html
=
http://127.0.0.1:8989/jd1615_servlet/servlet/hello.html
所以最后又出现了404报错信息
例4:
在html页面添加base标签之后,这个页面中的所有相对路径,就不再是相对于地址栏中的路径了,而是相对于base标签中设置的路径
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<base href="http://127.0.0.1:8989/jd1615_servlet/" />
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>path.html</title>
</head>
<body>
<div align="center">
<a href="hello.html">测试</a>
</div>
</body>
</html>
3.jsp页面中的路径
一般情况下,jsp中路径问题是和我们之前在servlet中讨论的html里面的路径问题是一样的,但是在jsp中可以动态获得该项目的url。
如果在jsp页面的上面写了这样一个脚本:
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
并且再<head>标签中加入了一个子标签:
<base href="<%=basePath%>" />
那么在这个jsp页面中,我们再去写上一个相对路径(最左边没有加/的那种路径),它就不是相对于地址栏中的当前路径了,而是要相对于这个basePath变量所代表的这个路径.
1 0
- web项目中的路径
- web项目中的路径
- web项目中的路径问题
- web 项目中的路径问题
- WEB 项目中的路径问题
- web项目中的路径获取
- web项目中的路径处理
- web项目中的路径问题
- web项目中的路径问题
- web项目中的绝对路径与相对路径
- Java Web 项目中的配置文件路径
- Java Web 项目中的配置文件路径
- java、JSP web项目中的路径问题
- web项目中的各种路径的获取
- Web项目中的classpath路径说明
- 理解WEB项目中的路径问题
- eclipse中的web项目部署路径
- 理解java web项目中的路径问题
- js内存泄露
- java中的内部类
- OpenLiveWriter
- 欢迎使用CSDN-markdown编辑器
- android开发中的OnTouch onClick onTouchEvent研究
- web项目中的路径
- 合并两个有序单链表的递归方法
- 「静态数据成员」和「静态成员函数」
- debian升级内核
- poj3570 Fund Management
- PHP 命令模式
- SQL Server的基本操作
- 学习Shell编程不迷茫之一----基础了解
- 【BZOJ1912】【codevs1613】巡逻