当前位置: 首页 > 面试题库 >

Java:仅主机,方案的字符串表示形式,可能是servlet请求的端口

庞旺
2023-03-14
问题内容

我使用不同的服务器和配置。获得scheme:// host:[如果不是端口80的端口]的最佳Java代码方法是什么。

这是我使用过的一些代码,但是不知道这是否是最好的方法。(这是伪代码)

HttpServletRequest ==请求

String serverName = request.getServerName().toLowerCase();
String scheme = request.getScheme();
int port = request.getServerPort();

String val = scheme + "://" + serverName + ":" port;

这样val返回:

http(s)://server.com/

要么

http(s)://server.com:7770

基本上,我需要查询字符串和“上下文”之外的所有内容。

我也考虑使用URL:

String absURL = request.getRequestURL();
URL url = new URL(absURL);

url.get????

问题答案:

试试这个:

URL serverURL = new URL(request.getScheme(),      // http
                        request.getServerName(),  // host
                        request.getServerPort(),  // port
                        "");                      // file

编辑

隐藏 httphttps 上的默认端口:

int port = request.getServerPort();

if (request.getScheme().equals("http") && port == 80) {
    port = -1;
} else if (request.getScheme().equals("https") && port == 443) {
    port = -1;
}

URL serverURL = new URL(request.getScheme(), request.getServerName(), port, "");


 类似资料:
  • 本文向大家介绍JavaScript 数字的字符串表示形式,包括了JavaScript 数字的字符串表示形式的使用技巧和注意事项,需要的朋友参考一下 示例 JavaScript具有从Number到String表示形式的本地转换,从2到36的任何基数。 十进制(以10为底)之后最常见的表示形式是十六进制(以16为底),但本节的内容适用于范围内的所有底。 为了将数字从十进制(以10为底)转换为十六进制(

  • 问题内容: 我有一个C python扩展名,我想打印一些诊断信息。 我收到一个字符串作为PyObject *。 获取此对象的字符串表示形式(使其可用作const char *)的规范方法是什么? 更新: 澄清以强调访问为const char *。 问题答案: 使用(模仿Python的函数)或(模仿),然后调用get (您可以并且通常应该将其用作,例如: 任何人都可以使用此方法。如果您完全确定是Py

  • 问题内容: 我有一些仅由数字组成的,并且我想在字符更改时将其拆分。 例如: 前往: 去 去 去 去 去 我想要一个好方法。 我知道两种解决方法:仅是强行强制执行,或者逐节添加。或者,我可以删除所有0并替换为0,然后在字符更改时添加0,然后对0进行拆分,但是这两种方式都显得很愚蠢。如果有人对更好/更美的方法,正则表达式或逻辑有任何想法,那就太好了。 问题答案: 这似乎像您期望的那样工作 测试: 输出

  • 顾名思义,我必须以表单数据的形式将post请求与请求体存根在一起。没有json、字符串或xml。我用的是junit和wiremock的java api。 我正在做如下事情: 有什么想法可以放在代码中而不是注释中吗? 谢谢大家!

  • 问题内容: 为什么在切换情况下无法将枚举值用作字符串?(或者这有什么问题:) 问题答案: 您只能使用编译时已知的字符串。编译器无法确定该表达式的结果。 也许你可以尝试

  • 问题内容: 在Python 3.x中,字符串由Unicode序数项组成。(请参见下面的语言参考引号。)Unicode字符串的内部表示是什么?是UTF-16吗? 字符串对象的项目是Unicode代码单元。Unicode代码单元由一项的字符串对象表示,并且可以保存表示Unicode序数的16位或32位值(序数的最大值在sys.maxunicode中给出,并且取决于Python的方式在编译时配置)。代理