【问题标题】:How load servlet on index.jsp如何在 index.jsp 上加载 servlet
【发布时间】:2020-05-31 14:47:57
【问题描述】:

有什么方法可以调用index.jsp 上的servlet?我的欢迎文件是index.jsp。当index.jsp 打开时,我需要通过 servlet 填充下拉列表值。

我尝试在web.xml中设置<load-on-startup>,但没有任何效果。如何获取欢迎文件index.jsp 来调用servlet?

【问题讨论】:

    标签: jsp servlets welcome-file


    【解决方案1】:

    只需将欢迎文件 URL 更改为 servlet 之一即可。

    鉴于此 servlet 映射,

    <servlet-mapping>
        <servlet-name>indexServlet</servlet-name>
        <url-pattern>/index</url-pattern>
    </servlet-mapping>
    

    只要有这个欢迎文件列表:

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

    不要忘记将 /index.jsp 移动到 /WEB-INF 文件夹中,以防止最终用户通过猜测其 URL 直接访问它(并且不要忘记将索引 servlet 中的转发调用更改为指向 @987654328 @)。

    或者,如果您只打算拥有“主页 servlet”而不是“索引 servlet”,则将 servlet 映射到空字符串 URL 模式,而不是作为欢迎文件。

    <servlet-mapping>
        <servlet-name>indexServlet</servlet-name>
        <url-pattern></url-pattern>
    </servlet-mapping>
    

    另见:

    【讨论】:

    • 我相信他是反过来想的。就像在 index.jsp 中一样,“调用”一个 servlet 来填充下拉列表,而不是使用 servlet 来填充请求属性,然后您将在正在呈现的 .jsp 中引用这些属性。
    • @Sotirios:这是错误的设计。您不应该在没有控制器的情况下调用视图。诚然,您可以在 JSP 顶部某处的 servlet 的 URL 上使用 &lt;jsp:include&gt; 破解它,但这是完全错误的,并且 servlet 不会充当控制器。 OP 希望在显示注册为欢迎文件的 JSP 之前调用一个 servlet 来预填充下拉值。我的回答是正确的。
    • 我认为他错误地认为您以相反的方式进行操作,而不是您描述的正确方式。
    • @Sotirios:嗯,确实可能是这样。在这种情况下,DarkVision,请仔细浏览我们的 servlets wiki 页面以了解正确的基本概念:stackoverflow.com/tags/servlets/info
    • 作为替代方案,他可以使用您的解决方案,但作为 indexServlet&lt;url-pattern&gt; 仍然使用 /index.jsp(对于 &lt;welcome-file&gt; index .jsp)。当然,在这种情况下,他必须将视图(JSP 文件)的名称更改为其他名称。这样,在将请求从 servlet 转发到视图后,他会在地址栏中看到 desired index.jsp ))
    【解决方案2】:

    根据您使用的框架,有多种方法可以实现这一点。

    简单来说,您可以先调用 servlet,然后将数据设置到表单中,然后重定向到您的 JSP。

    或者

    如果你熟悉 Ajax,你可以从你的 jsp 调用 ajax 来为你获取数据

    如果你能告诉我你在项目中使用的框架,我可以给你一个例子

    【讨论】:

      【解决方案3】:

      只需创建一个空的虚拟索引页面...在该页面中只需添加以下行...

      例如:

      然后在那个 Servlet 类中,只需实现逻辑并重定向您的原始主页或索引页面。

      【讨论】:

        【解决方案4】:

        使用 JQuery Ajax

        <body onload="functionName()">
        <script>
            function functionName(){
        
            $.ajax({
               url : 'YourServlet',
               type: "GET",
               async: false,
               success:function(response){
        
               },
               error: function (event) {
        
                   console.log("ERROR: ", event);
               }
            });
        }
        </script>
        

        【讨论】:

          猜你喜欢
          • 2011-04-06
          • 1970-01-01
          • 1970-01-01
          • 2012-01-30
          • 2016-12-24
          • 2015-02-15
          • 2014-05-09
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多