javaWeb中获取路径的几种方法详解,request.getServletPath(),request.getContextPath()的区别

request.getServletPath()

首先从字面我们就知道这个方法获得的是servlet的路径
假如我们在tomcat下部署了一个名为store的项目
我们访问:http://localhost:8080/store/UserServlet?method=findByName
其中UserServlet就是我们的servlet,那么如果

system.out.println(request.getServletPath);
//输出结果就是/UserServlet 记住不带参数

现在大家明白了吧,这个方法获取的是包括servlet之后的路径,不包括项目名的路径。

request.getContextPath()

首先从字面我们知道contextpath的意思是容器的路径,我们可以把context理解为项目。
所以这个方法获取的就是项目名路径

system.out.println(request.getContextPath());
//输出结果就是/store

request.getRequestURI()

在图解http这本书中,解释到URI是uniform resource identifier(统一资源标识符)
而URL是uniform resource locator(统一资源定位符)
RFC2396对这URI三个单词有一定的解释:
uniform:可以简单理解为http或者ftp协议以及其他协议。
resource:可以理解为可标识的任何东西。
identifier:可标识的对象,也就是标识符。
那么,综上所述,URI是在满足一定的协议下某些资源的定位标识符。

system.out.println(request.getRequestURI());
//输出结果就是/store/UserServlet

request.getRequestURL()

system.out.println(request.getRequestURL());
//输出结果就是http://localhost:8080/store/UserServlet

system.out.println(request.getRequestURL());
//输出结果就是http://localhost:8080/store/UserServlet


以下是网上的一些解释。

1.getServletPath():获取能够与“url-pattern”中匹配的路径,注意是完全匹配的部分,*的部分不包括。

2.getPageInfo():与getServletPath()获取的路径互补,能够得到的是“url-pattern”中 d的路径部分

3.getContextPath():获取项目的根路径

4.getRequestURI:获取根路径到地址结尾

5.getRequestURL:获取请求的地址链接(浏览器中输入的地址)

6.getServletContext().getRealPath(“/”):获取“/”在机器中的实际地址

7.getScheme():获取的是使用的协议(http 或https)

8.getProtocol():获取的是协议的名称(HTTP/1.11)

9.getServerName():获取的是域名(xxx.com)

10.request.getServerPort():获取到的是端口号(8080)

11.getLocalName:获取到的是IP


  • 2
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
如果您在 Servlet 使用 `request.setAttribute()` 方法设置了请求属性,但是在 JSP 页面无法获取到这些属性,可能有以下几个原因: 1. 请求转发时属性名称不一致:如果您在 Servlet 使用 `request.setAttribute("name", value)` 方法设置了请求属性,但是在 JSP 页面使用 `${otherName}` 表达式来获取属性值,则无法获取到正确的值。请确保在请求转发时属性名称一致,例如: ``` // Servlet 设置属性 request.setAttribute("name", value); // 请求转发到 JSP 页面 request.getRequestDispatcher("page.jsp").forward(request, response); ``` ``` <!-- JSP 页面获取属性 --> ${name} ``` 2. 属性作用域不一致:如果您在 Servlet 设置了请求属性,但是在 JSP 页面使用了错误的作用域名称,则无法获取到正确的值。默认情况下,`request.setAttribute()` 方法设置的属性作用域为请求作用域(request scope),这意味着属性只在当前请求有效。如果您在 JSP 页面使用了错误的作用域名称,例如 `${sessionScope.name}` 或 `${applicationScope.name}`,则无法获取到正确的值。请确保在 JSP 页面使用正确的作用域名称,例如 `${requestScope.name}` 或 `${name}`。 3. 请求转发前未设置属性:如果您在请求转发前设置了请求属性,但是在 JSP 页面无法获取到这些属性,可能是因为在请求转发前未设置属性。请确保在请求转发前设置请求属性,例如: ``` // Servlet 设置属性 request.setAttribute("name", value); // 请求转发到 JSP 页面 request.getRequestDispatcher("page.jsp").forward(request, response); ``` 需要注意的是,在实际应用,您可能需要根据具体的需求和上下文环境来选择适当的方法来设置和获取请求属性。如果您遇到了其他问题或有其他疑问,请提供更多的上下文信息,以便我们更好地理解您的需求和代码环境。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值