【问题标题】:Avoid Scriptlets in Jsp for displaying data on page load避免在 Jsp 中使用 Scriptlet 在页面加载时显示数据
【发布时间】:2011-07-09 20:39:27
【问题描述】:

我意识到,当您在 jsp 中提交表单时,您可以在映射的 servlet 中获取所需的数据,将其设置在适当的范围内(例如请求)并将其转发给 jsp,如下所示:

request.setAttribute("myList", myList); // Store list in request scope.
request.getRequestDispatcher("/index.jsp").forward(request, response);

但是我想知道对于没有表单的页面,或者换句话说,我们希望在页面加载后立即显示数据,我们如何在不使用类似脚本的情况下有效地加载数据

<%= myBean.populateData("String Argument_1")%>

如果有人能提供任何相同的建议,我们将不胜感激。

【问题讨论】:

  • 只需使用doGet() 而不是doPost()

标签: forms jsp servlets scope scriptlet


【解决方案1】:

请求是否来自表单这一事实不会改变任何事情。 servlet 接收到一个请求,然后可以做一些处理并转发给一个 JSP:

  1. servlet 获取请求参数
  2. servlet 使用这些参数从数据库中获取请求的数据,并使用所述数据填充一些 bean。它还可以从头开始构建一些 bean,以显示具有默认值的表单
  3. servlet 将这些 bean 放入请求属性中
  4. servlet 转发到 JSP
  5. JSP 避免使用 scriptlet,而是使用 JSP EL、JSTL 和自定义标记来显示请求范围内 bean 中存储的信息

【讨论】:

  • 但是如何在不使用 scriptlet 的情况下在页面加载时将请求发送到 Servlet?
  • 在设计合理的 MVC 应用程序中,您没有任何链接或表单指向 JSP 的 URL。它们都指向一个 Servlet(或过滤器)的 URL,该 URL 转发到一个 JSP。
  • 将欢迎文件添加到您的 web.xml。创建一个元刷新,如:&lt;meta http-equiv="refresh" content="0; URL=/myapp/WelcomeServlet" /&gt;。您在这里有很多选择,但上述方法很简单且有效。
【解决方案2】:

我认为将 EL 与 JSTL 结合使用可以在最常见的情况下为您提供帮助。如果这还不够,您可以编写 EL 函数或您自己的自定义标签。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-04
    • 2018-07-22
    相关资源
    最近更新 更多