【问题标题】:Tomcat: Different welcome-file for local and live setupTomcat:本地和实时设置的不同欢迎文件
【发布时间】:2023-03-15 05:15:01
【问题描述】:

我是 Tomcat/Java 的初学者;我有一个简单的 Web 应用程序,我想在 web.xml 中显示不同的 <welcome-file>,具体取决于应用程序是在本地开发中运行还是实时部署。

现在我有:

<welcome-file-list>
    <welcome-file>index.html</welcome-file>
</welcome-file-list>

对于本地开发,我希望 web.xml 中的 &lt;welcome-file&gt; 成为 index-dev.html 用于开发,index-live.html 用于部署的实时应用程序。原因是我想加载不同的*.css*.js,具体取决于我是本地的还是现场的。

有什么方法可以实现这个设置?

【问题讨论】:

    标签: java tomcat servlets tomcat7 web.xml


    【解决方案1】:

    作为一个选项:制作一个 jsp 文件作为欢迎页面。

    在该jsp文件中分析当前客户端位置(本地计算机与否),并转发到相关页面。

    附加编辑:

    您的 jsp 有一个预定义的 request 对象。

    用它来获取客户端ip,像这样:

    <%
        String remoteIp = request.getRemoteAddr();
    %>
    

    与localhost地址对比,可以通过:

    <%
        InetAddress address = InetAddress.getLocalHost();
        String localhostIp = address.getHostAddress();
    %>
    

    并使用jsp:forward 转发到相关页面。

    <%
        // getting jsp (servlet) client ip
        String remoteIp = request.getRemoteAddr();
    
        // getting local ip
        InetAddress address = InetAddress.getLocalHost();
        String localhostIp = address.getHostAddress();
    
        // checking and forwarding
        if(localhostIp.equals(remoteIp)){
    %>
         <jsp:forward page="localhost.html"/>
    <%}else{%>
        <jsp:forward page="remote.html"/>
    <%}%>
    

    其他编辑:

    确保 localhostIp 只包含 IP 地址,否则使用String 方法获取包含 ip-address 的子字符串。

    【讨论】:

    • 谢谢,任何对 Tomcat/Java 初学者有用的链接/代码示例?
    • 在我的本地机器上,localhostIp127.0.1.1,地址是 name-of-my-machine/127.0.1.1 。我最终使用了request.getRequestURL(),如果它是startswithhttp://localhost:8080/,那么它是本地的。
    • 请注意,Tomcat 可以配置为使用 8080 以外的其他端口。在另一个具有不同(非默认)端口设置的 Tomcat 实例上,您的比较将无法正常工作。
    • 谢谢;事实上,我改变了逻辑来简单地检查子字符串 localhost 的存在,就是这样。
    【解决方案2】:

    创建一个标题页(将包含在包括欢迎页面在内的所有页面中)。写一个&lt;c:if&gt;为你做一个简单的检查。我不认为 servlet 规范支持基于请求机器的 IP 地址的不同欢迎页面。理想情况下,任何网络应用程序都应该从任何地方访问相同的页面

    【讨论】:

      【解决方案3】:

      Live 应该总是有一个代理重定向到 tomcat 的 apache httpd。

      这有多个优点:

      • 如果tomcat宕机,可以定义一个“请耐心等待/稍后回来”info.html
      • 使用 awstats 可以分析流量
      • 你可以定义live JS/CSS-directorys来释放tomcat

      问候

      【讨论】:

      • +1ed;但是我在 Tomcat 前面没有 Apache(甚至不会在生产中使用它,它是 Tomcat7 而不是早期版本)
      猜你喜欢
      • 2014-09-30
      • 2015-01-07
      • 1970-01-01
      • 2021-12-13
      • 2016-08-26
      • 2020-12-01
      • 1970-01-01
      • 2011-08-03
      • 2021-07-10
      相关资源
      最近更新 更多