Java web开发中的路径问题

  1. 路径分为相对路径和绝对路径,绝对路径是以/开头的
  2. 相对路径:

  1)如果js页面的head中出现了base标记,那么所有相对路径,不再基于自己,基于base 标记的href属性的值

String path = request.getContextPath();

String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; 

相当于   http://localhost:8080/JspWeb/

<base href="<%=basePath%>">

 

例如 test1和test2同属于webroot的jsp文件夹下

test1中写了<base href="<%=basePath%>">

<a href="jsp/test2.jsp">相对路径跳转2</a>

<a href="/JspWeb/jsp/test2.jsp">绝对路径跳转2</a>

 

test2中没有写<base href="<%=basePath%>">

<a href="test1.jsp">相对路径跳转1</a>

<a href="/JspWeb/jsp/test1.jsp">绝对路径跳转1</a>

 

2)除了上面的1)其他的相对路径都是基于他自己,要跳转到目的地路径,从路径末尾一级一级往上找,找到根目录,在根目录后面写上目的地根目录后的路径即可。简单的说:从最末端的/到根目录之后的/的个数减一即为../的个数

例如:

本身的路径:http://localhost:8080/UrlWeb/one/two/testServlet1

目的地路径:http://localhost:8080/UrlWeb/three/testServlet2

 

请求转发相对路径跳转2

request.getRequestDispatcher("../../three/testServlet2").forward(request, response);

3.绝对路径:

请求转发:  绝对路径的/   代表的是根目录之后的  /

重定向:  绝对路径的/   代表的是端口号之后的  /

页面的路径:    绝对路径的/   代表的是端口号之后的  /

servletContext对象  : 没有相对路径和绝对路径的说法  写不写/  都是代表绝对路径    绝对路径的/代表WebRoot,注意:context.getResourcePaths("/image"); 不加/会报错,推荐使用servletContext对象涉及到路径的方法,全部加上/

例如:

本身的路径:http://localhost:8080/UrlWeb/one/two/testServlet1

目的地路径:http://localhost:8080/UrlWeb/three/testServlet2

 

请求转发绝对路径跳转2

request.getRequestDispatcher("/three/testServlet2").forward(request, response);

重定向的绝对路径跳转2

response.sendRedirect("/UrlWeb/three/testServlet2");

 

<a href="/JspWeb/jsp/test2.jsp">绝对路径跳转2</a>

 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值