servlet/jsp中的一些路径问题

本文深入解析Servlet中如何获取web应用的物理路径及请求路径,并通过实例展示了JSP中路径问题的解决策略,包括相对路径与根目录路径的区别,以及在表单提交时路径的正确配置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一:servlet

可能经常我们需要在servlet中处理一些路径问题,比如,想得到当前应用中某个文件的物理路径,或者需要知道某个请求的具体路径,这时就需要用到这些方法了。

1:获得web应用的物理绝对路径

用到了getServletContext()中的getRealPath ()方法,它能够返回当前web应用中的某个文件的物理绝对路径

String webRealPath=request.getSession().getServletContext().getRealPath("/");

这里用“/”,返回的时web应用根目录的物理路径,比如我的web应用在本机上的存放位置是

C:\Eclipse\workspace\mynews\MyNews
|__WEB-INF
|___class
|___lib

C:\Eclipse\workspace\mynews\MyNews

2:当我在浏览器输入以下请求路径时http://localhost:8080/mynews/index.jsp

以下各个方法输出结果如下:

request.getContextPath()输出:

/mynews

获得URI

request.getRequestURI()输出:

/mynews/index.jsp

获得URL

request.getRequestURL()输出:

http://localhost:8080/mynews/index.jsp

知道了这几个方法的不同,就很容易在程序中使用了

二:Jsp中的一些路径问题

在jsp中可以使用相对路径,所以很容易出现一些问题

比如我现在有名为path的一个web应用程序,其中的文件组织结构如下:

web
|__WEB-INF
|__index.jsp
|__internal
|__internal.jsp

在index.jsp中,有如下连接<a href="internal/internal.jsp">link</a>点击此连接后会连到如下地址:

http://localhost:8080/web/internal/internal.jsp,也就是说,上边那个连接地址是相对于index.jsp来说的。

当把链接改为<a href="/internal/internal.jsp">link</a>就会发现链接地址变成了如下:

http://localhost:8080/internal/internal.jsp也就是说,当加上“/”时,就变成了相对于网站根目录,而不是相对于web应用程序的根目录。

同样我们在internal.jsp中,我们可以使用../index.jsp来链接到index.jsp页面。

以上原则也适用于在提交表单时action中的路径问题,无论action转向的是servlet还是jsp页面。

END!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值