我是JSP,Servlet和Tomcat的新手。如果我将多个域指向服务器的IP地址,我是否可以根据请求的域名以编程方式调用相关的Servlet?
也许我可以在web.xml中做些什么?
抱歉我缺乏知识 - 我刚开始:(
答案 0 :(得分:2)
HTTP主机标头将告诉您客户端请求的域。
通过Servlet API获取此方法的方法是:
javax.servlet.http.HttpServletRequest.getHeader("host");
答案 1 :(得分:1)
如果您希望相同的Web应用程序响应多个域,您可能会考虑使用调度程序servlet或调度程序过滤器。像Struts 2和Spring MVC这样的框架使用这些概念将请求路由到适当的servlet。使用调度程序servlet,您可以使用您想要的任何条件(在您的情况下,主机名)来路由到适当的servlet。
如果您希望单独的 Web应用程序响应不同的主机名和/或IP地址(通常称为虚拟主机),那么您可能需要查看{{3} }。这通常通过在Tomcat之前放置像Apache或IIS这样的Web服务器来处理。
答案 2 :(得分:1)
使用“RequestDispatcher”将请求重定向到正确的servlet
答案 3 :(得分:-2)
使用类似的东西:
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
}