25

我需要从以下URL获取(http://localhost:9090/dts)独自一人。
那是我需要删除的(文档/保存文档)(或)
只需要获取-(http://localhost:9090/dts)

http://localhost:9090/dts/documents/savedoc

请求中是否有任何方法可用于获取上述信息?

我试了下面的方法,得到了结果。但仍在尝试。

System.out.println(“URL**************”+请求.getRequestURL().toString());System.out.println(“URI**************”+请求.getRequestURI().toString());System.out.println(“上下文路径**************”+request.getContextPath().toString());URL地址****************http://localhost:9090/dts/documents/savedoc  URI*************/dts/documents/savedoc上下文路径**************/dts

谁能帮我修一下这个吗?

6个答案6

重置为默认值
41

你说你想准确地得到:

http://localhost:9090/dts

在您的情况下,上述字符串包括:

  1. 方案:http协议
  2. 服务器主机名:本地服务器
  3. 服务器港口:9090
  4. 上下文路径:数据传输系统

有关请求路径元素的更多信息,请参阅官方OracleJava EE教程:从请求中获取信息

第一种变体:

字符串方案=request.getScheme();字符串serverName=request.getServerName();int serverPort=请求.getServerPort();String contextPath=请求.getContextPath();//包括前导正斜杠字符串结果路径=scheme+“://”+服务器名称+“:”+服务器端口+上下文路径;System.out.println(“结果路径:”+结果路径);

第二种变体:

字符串方案=request.getScheme();String host=request.getHeader(“主机”);//包括服务器名称和服务器端口String contextPath=请求.getContextPath();//包括前导正斜杠字符串结果路径=scheme+“://”+主机+上下文路径;System.out.println(“结果路径:”+结果路径);

这两种变体都能满足您的需求:http://localhost:9090/dts

当然,还有其他类似于其他人已经写过的变体。这只是你最初问的关于如何获得http://localhost:9090/dts也就是说,您希望自己的路径包括这个方案.

但如果你不需要方案,快速方法是:

String resultPath=请求.getHeader(“主机”)+请求.getContextPath();

在您的情况下,您将得到:本地主机:9090/dts

0
20

AFAIK为此没有API提供的方法,需要定制。

字符串serverName=request.getServerName();int portNumber=请求.getServerPort();String contextPath=请求.getContextPath();

//试试这个

System.out.println(服务器名称+“:”+端口号+上下文路径);
18

只需从URL中删除URI,然后将上下文路径附加到它。无需修改松散的方案和端口,这在处理默认端口时会更加繁琐80它根本不需要出现在URL中。

StringBuffer url=请求.getRequestURL();字符串uri=request.getRequestURI();字符串ctx=request.getContextPath();字符串基=url.substring(0,url.length()-uri.length(;// ...

另请参见:

1

根据我的理解,您只需要域部分和上下文路径。基于这种理解,您可以使用此方法获取所需的字符串。

字符串域=request.getRequestURL().toString();字符串cpath=request.getContextPath().toString();String tString=domain.subString(0,domain.indexOf(cpath));tString=tString+cpath;
0
1

对于那些想获得端点,的首页的URL以端点为目标。您可以使用:

request.getHeader(“referer”)
0

通常我有这样的方法:

public String getAbsoluteContextPath()引发MalformedURLException{ExternalContext context=FacesContext.getCurrentInstance().getExternalContext();HttpServletRequest请求=(HttpServletRequest)context.getRequest();URL URL=新URL(request.getRequestURL().toString());return url.getProtocol()+“://”+url.getAuthority()+context.getRequestContextPath();}

此方法将返回所需的内容,只有在当前请求中存在端口号时,才会返回端口号。在您的情况下,它将返回:http://localhost:9090/dts

你的答案

单击“发布您的答案”,表示您同意我们的服务条款并确认您已阅读我们的隐私政策.

不是你想要的答案吗?浏览标记的其他问题问你自己的问题.