我对 JSP、Servlet 和 Tomcat 还是很陌生。如果我将多个域指向服务器的 IP 地址,是否可以根据请求的域以编程方式调用相关的 Servlet?
也许我可以在 web.xml 中做些什么?
抱歉我缺乏知识 - 我才刚刚开始:(
HTTP 主机标头将告诉您客户端请求的域。
通过 Servlet API 获取它的方法是:
javax.servlet.http.HttpServletRequest.getHeader("host");
如果您希望同一个 Web 应用程序响应多个域,您可能会考虑使用调度程序 servlet 或调度程序过滤器。像 Struts 2 和 Spring MVC 这样的框架使用这些概念将请求路由到适当的 servlet。使用调度程序 servlet,您可以使用您想要的任何条件(在您的情况下为主机名)路由到适当的 servlet。
如果您希望让单独的 Web 应用程序响应不同的主机名和/或 IP 地址(通常称为虚拟主机),那么您可能需要查看Tomcat 虚拟主机。这通常也可以通过将 Apache 或 IIS 等 Web 服务器放在 Tomcat 前面来处理。
使用“RequestDispatcher”将请求重定向到正确的 servlet
使用类似的东西:
public void doGet(HttpServletRequest req, HttpServletResponse resp)
throws IOException {
// Get client's IP address
String ipAddress = req.getRemoteAddr(); // ip
// Get client's hostname
String hostname = req.getRemoteHost(); // hostname
}