Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ssl/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Jetty:找出用于传入请求的连接器_Java_Servlets_Jetty_Embedded Jetty - Fatal编程技术网

Java Jetty:找出用于传入请求的连接器

Java Jetty:找出用于传入请求的连接器,java,servlets,jetty,embedded-jetty,Java,Servlets,Jetty,Embedded Jetty,在处理Jetty响应时,我想知道请求来自哪个端口 public static void main(String[] args) { Server server = new Server(); server.setConnectors(new Connector[] {connectorUnsecure, connectorSecure}); ServletContextHandler handler = new ServletContextHandler();

在处理Jetty响应时,我想知道请求来自哪个端口

public static void main(String[] args) {
    Server server = new Server();
    server.setConnectors(new Connector[] {connectorUnsecure, connectorSecure});

    ServletContextHandler handler = new ServletContextHandler();
    handler.setContextPath("/");
    handler.addServlet(MyServlet.class, "/*");

    server.setHandler(handler);
    server.start();
    server.join();
}

public abstract class MyServlet extends HttpServlet {

    @Override
    protected final void service(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        // Find out on which connector port the request came from.
        // (The request.getRequestURL() does not contain the port at all times.)
    }
}
当使用自定义处理程序时,我可以使用如下内容:

public class CustomHandler extends AbstractHandler {

    public void handle(String target, Request baseRequest, HttpServletRequest request, HttpServletResponse response)
            throws IOException, ServletException {
        // baseRequest.getConnection().getConnector().getPort()
    }
}
但是,我不想使用自定义处理程序

在使用普通HttpServlet时,是否可以获取连接器及其端口

谢谢

有5种方法可能对您有用

  • -正在处理请求的服务器地址(可以是IPv4或IPv6)
  • -正在处理请求的服务器端口
  • -正在处理请求的客户端地址(可以是IPv4或IPv6)
  • -正在处理请求的客户端端口
  • -客户端认为与之对话的请求HTTP主机(和端口)。(HTTP规范的一部分,对虚拟主机特别有用)
注意:HTTP请求主机头也可以通过该方法获得

String serverAddr=URI.create(request.getRequestURI()).getHost();
有5种方法可能对您有用

  • -正在处理请求的服务器地址(可以是IPv4或IPv6)
  • -正在处理请求的服务器端口
  • -正在处理请求的客户端地址(可以是IPv4或IPv6)
  • -正在处理请求的客户端端口
  • -客户端认为与之对话的请求HTTP主机(和端口)。(HTTP规范的一部分,对虚拟主机特别有用)
注意:HTTP请求主机头也可以通过该方法获得

String serverAddr=URI.create(request.getRequestURI()).getHost();

我真傻!谢谢,效果很好。我真傻!谢谢,效果非常好。谢谢你详细的回答!正如Simone在之前的回复中所发布的,getLocalPort()是我感兴趣的一个。感谢您的详细回答!正如Simone在之前的响应中所发布的,getLocalPort()是我感兴趣的一个。