servlet中的相对路径和绝对路径

绝对路径,就是以“/”开头的路径。实际开发中,“/”所代表的含义不同,但主要分以下两种情况:

1. Servlet内部配置路径

servlet内部的含义就是:在浏览器看不到,全是在后台处理的部分。包含以下2点:

a. web.xml中 Servlet 配置的路径

<servlet>
    <servlet-name>helloWorld</servlet-name>
    <servlet-class>com.owen.HelloWorldServlet</servlet-class>
</servlet>

<servlet-mapping>
    <servlet-name>helloWorld</servlet-name>
    <url-pattern>/helloWorld</url-pattern>
</servlet-mapping>

<url-pattern> 必须以 / 开头,因为这里的 / 表示应用的名称。比如我们的应用名是 demo,那访问我们应用的 url 地址就是:http:// www.example.com/demo

只有 http:// www.example.com/demo/helloWorld 才能访问到对应的 Servlet

b. forward转发的路径

req.getRequestDispatcher("/view/user_info.jsp").forward(req, resp);

这时候跳转的页面 /view/user_info.jsp 也必须添加 /,它代表的含义也一样,是我们应用的名称。

总之

在应用内部,/ 代表的就是应用的名称

2.页面配置的路径

a. form的action路径配置

假设应用的名称是 demo,url 是 http:// www.example.com/demo。下面是登陆表单

<form action="login" method="post">
    <input type="submit" value="提交">
</form>

那么用户提交的时候,会将表单提交到 http:// www.example.com/demo/login

当然,如果把应用名称也加上这么写也是可以的

<form action="/demo/login" method="post">
    <input type="submit" value="提交">
</form>

b. 页面资源引用

同样,只要是页面中引入的东西(常常需要引入CSS,JS,图片等),都要如此写,比如

<script type="text/javascript" src="${pageContext.request.contextPath}/pages/event/js/addevent.js"></script>

c. jsp/servlet的重定向 redirect

首先必须理解重定向的概念:重定向其实向服务器发送了2次请求,第一次把请求url告诉给服务器,服务器看到这个请求的状态码,马上明白该url是需要浏览器来重新去请求的 url,于是呢把该 url 显示在浏览器的地址栏内,再次向服务器请求(第二次了吧),服务器响应,然后返回。

很明显,只要和页面打交道的,/ 都代表服务器根目录,需要在后面添加应用名以区分是哪个应用的请求。所以重定向的 / 表示服务器根目录

再代码中,可以这么写

resp.sendRedirect(req.getContextPath() + "/index.jsp");

总结

页面中的 / 代表服务器根目录,web.xml中 / 代表应用根目录。
请求重定向的 / 代表服务器根目录,请求转发的 / 代表应用根目录。

反正就是前端的 / 表示服务器根目录,后端的 / 表示应用根目录

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容