Java Jetty:找出用于传入请求的连接器
在处理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();
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规范的一部分,对虚拟主机特别有用)
String serverAddr=URI.create(request.getRequestURI()).getHost();
有5种方法可能对您有用
- -正在处理请求的服务器地址(可以是IPv4或IPv6)
- -正在处理请求的服务器端口
- -正在处理请求的客户端地址(可以是IPv4或IPv6)
- -正在处理请求的客户端端口
- -客户端认为与之对话的请求HTTP主机(和端口)。(HTTP规范的一部分,对虚拟主机特别有用)
String serverAddr=URI.create(request.getRequestURI()).getHost();
我真傻!谢谢,效果很好。我真傻!谢谢,效果非常好。谢谢你详细的回答!正如Simone在之前的回复中所发布的,getLocalPort()是我感兴趣的一个。感谢您的详细回答!正如Simone在之前的响应中所发布的,getLocalPort()是我感兴趣的一个。