servlet中的路径问题

     本人java初学者,这是在学习servlet的转发和重定向时碰到的一个关于路径的小知识点。虽然看起来似乎很简单,但是有时候就是容易在这些小问题上犯糊涂,所以想总结一下,加深印象。

     首先我创建了3个servlet,在web.xml中的配置是这样的:

<servlet-mapping>
    <servlet-name>key1</servlet-name>
    <url-pattern>/servlet1</url-pattern>
    <servlet-name>key2</servlet-name>
    <url-pattern>/servlet/servlet2</url-pattern>
    <servlet-name>/servlet/kk/key3</servlet-name>
    <url-pattern>/servlet3</url-pattern>
</servlet-mapping>

     假如我要在这3个servlet中互相转发,语法就是:

request.getRequestDispatcher("url").forward(request, response);

     那么其中的url怎么写呢?例如我要从servlet2转发到servlet1,url为"servlet1"吗?测试发现浏览器给出这样的错误信息:

      HTTP Status 404 The requested resource (/test/servlet/servlet1) is not available. (test为项目名)

     意思是请求的URL所对应的资源不可用。想想当然不可用,因为servlet1在<servlet-mapping>中对应的<url-pattern>为'servlet1',而不是'servlet/servlet1'.
     这里就涉及到路径的知识了,无论是平常所说的文件路径,还是web中的资源路径,都有绝对路径和相对路径之分。绝对路径很好理解,就是文件或资源的完整物理路径。而所谓的相对路径就是相对于某个基准目录的路径。拿例子来解释:如"servlet1"这个url是一个相对路径,那么假设"servlet/servlet2"为基准路径,那么"servlet1"这个相对路径的真实路径为"servlet/servlet1"

注意:在servlet中,"/"代表根目录,在此例中,根目录就是项目的路径即:test/

                         "./"代表当前目录,如servlet/kk/key3这个url中key3的当前目录就是servlet/kk/

                         "../"代表上一级目录,如servlet/kk/key3这个url中key3的上一级目录就是servlet/

那么开头那个问题就很好解决了,从servlet2转发到servlet1正确url格式应为:"../servlet1"或者为"/servlet1"(因为servlet2上一级目录就是根目录了)。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值