web应用中的路径

http中的相对路径与绝对路径

相对路径:

代码表现形式(三种情况):

<!-- index为servlet路径:@WebServlet("/test") -->

1.<a>标签发送请求:<a href="test">相对路径</a>

2.form表单请求:	<form action="test" method="post">
					<input type="text" name="username">
					<button>提交</button>
				</form>

3.图片地址:<img src="i/eg_tulip.jpg">

解释:
相对路径是相对于当前路径的上一级路径,例如:

当前路径为:http://localhost:8080/test410/aa/index.jsp,
那么标签中的路径为:http://localhost:8080/test410/aa/index.jsp/标签,
那么浏览器解析获取的相对路径为:http://localhost:8080/test410/aa,
与标签内的路径拼接起来为:http://localhost:8080/test410/aa/xxxxxx,
如:http://localhost:8080/test410/aa/index。

绝对路径:

特征: 用‘/’打头,如:

<a href="/test">绝对路径</a>

解释: 绝对路径为服务器根目录,如:当前路径为:http://localhost:8080/test410/aa/index.jsp,那么浏览器解析获取的绝对路径为:http://localhost:8080/,与a标签地址拼接:http://localhost:8080/test。

开发过程中对html中路径的设置:

开发过程中为避免路径错误与混乱,较好的解决方案为使用html中的base标签设置html的上下文路径为web应用的根目录。无论当前页面的路径为什么,通过base标签设置路径后,浏览器解析获取的路径都是web应用的根目录,即:主机地址/web应用名/,与html标签中的相对地址拼接后为:主机地址/web应用名/标签设定地址。

base标签使用方法:

1.在jsp中的head标签中加入

<base href="<%=request.getContextPath()  %>/ ">

在服务器渲染后,发送到浏览器的会变成如下形式:<base href="/web应用名/"> ,如:<base href="/test410/">,
当鼠标移上去时会看到完整地址,
即:服务器地址web应用名/

2.在标签中知指明相对地址,如:

<a href="test">相对路径</a>

最终的拼接结果为:服务器地址/test410(web应用名)/test(标签中指定的路径)


Servlet中的路径设置

getRequestDispatcher(URL):
  • 相对路径(不加斜杠):相对于当前路径,如:
    当前servlet的路径为@WebServlet("/index/login"),
    servlet中的请求转发为getRequestDispatcher(“success”).forward(req,resp);
    相对路径为:/index/;
    那么URL为/index/success。
  • 绝对路径(‘/’打头):相对于web应用根目录,如:
    getRequestDispatcher("/bb/success").forward(request, response)
    那么URL为:web应用根目录/index/success,如:test410/index/success。

sendRedirect(URL):

ps:当使用sendRedirect(URL)时不建议使用相对定位,容易造成路径混乱使得无法正常跳转。

ps:使用绝对路径,无法取得应用路径等,只取到服务器地址,使用起来较为不变。

sendRedirect(URL)较好设置URL的方案:

  • 使用手动添加上下文路径
    request.getContextPath()+jsp/servlet的实际路径。
    request.getContextPath()===》/应用根目录,如:/test410。
    应用实例: sendRedirect(request.getContextPath()+"/b")。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值