【问题标题】:Can't get the object from servlet to jsp无法从servlet获取对象到jsp
【发布时间】:2014-10-22 19:39:18
【问题描述】:

我是 JavaEE 的初学者。我做了一个简单的例子,将对象从 servlet 发送到 jsp。在 jsp 中,我想在网站页面上显示这些对象的价值。我使用 ${ } 来获取对象,但它不起作用。有人可以帮我吗? test.java 和 test.jsp 有我的代码: test.java:

public class Test extends HttpServlet {
public void doGet( HttpServletRequest request, HttpServletResponse response ) throws ServletException, IOException{
    /* Création et initialisation du message. */
    String paramAuteur = request.getParameter( "auteur" );
    String message = "Transmission de variables : OK ! " + paramAuteur;

    /* Création du bean et initialisation de ses propriétés */
    Coyote premierBean = new Coyote();
    premierBean.setNom( "Coyote" );
    premierBean.setPrenom( "Wile E." );

    /* Création de la liste et insertion de quatre éléments */
    List<Integer> premiereListe = new ArrayList<Integer>();
    premiereListe.add( 27 );
    premiereListe.add( 12 );
    premiereListe.add( 138 );
    premiereListe.add( 6 );

    /* Stockage du message, du bean et de la liste dans l'objet request */
    request.setAttribute( "test", message );
    request.setAttribute( "coyote", premierBean );
    request.setAttribute( "liste", premiereListe );

    /* Transmission de la paire d'objets request/response à notre JSP */
    this.getServletContext().getRequestDispatcher( "/WebContent/test.jsp" ).forward( request, response );
}

}

jsp文件:

    <p>Ceci est une page générée depuis une JSP.</p>
    <p>
        ${test}
        ${param.auteur}
    </p>
    <p>
        Récupération du bean :
        ${requestScope.coyote.prenom}
        ${requestScope.coyote.nom}
    </p>
    <p>
        Récupération de la liste :
        <%
        ArrayList<Integer> list = (ArrayList) request.getAttribute("liste");
        for (Integer lis: list) {   
           %>
             <%=lis%>
           <%}
        %>
    </p>

谢谢,

【问题讨论】:

  • 那么,执行这段代码会发生什么?您说您使用 JSP EL (${...}),但我在发布的 JSP 代码中看不到任何此类内容。
  • 嗨,对不起,我试图用 HTML 代码发布我所有的 jsp。但它没有用。其实我感觉我的jsp收不到来自test.java的对象。行有错误:for(Integer i:list),所以我添加了 if{...} 来验证这一点。我看到那个列表是空的。
  • 大家好,我发现了问题。我无法将对象从 test.java 发送到 test.jsp,因为我将 test.jsp 放在了错误的位置,它必须在 WEB-INF 中找到。抱歉耽误您的时间。

标签: java html jsp jakarta-ee servlets


【解决方案1】:

你可以这样做:

<p>
  <%
   ArrayList<Integer> lists = (ArrayList<Integer>) request.getAttribute("liste");
   for (Integer list: lists) {   
   %>
     <%=list%>
   <%}%>
</p>

使用 EL,您可以执行以下操作:

<p>
  <c:forEach items="${liste}" var="list">
   ${list}
  </c:forEach>
</p>

【讨论】:

  • 像这样内联原始 Java 代码与现代 JSP 背道而驰。理想情况下,JSP 应该更具声明性,Java 应该在 JSP 运行之前准备好的 bean 中。如果你这样做,你的 Java 代码就会被分解并与 HTML 混合在一起。
  • 我知道,我不会在我的代码中使用 scriptlet。由于 OP 已经在 scriptlet 中编写了代码,因此我使用 scriptlet 来说明如何做到这一点...... :)
  • 嗨,Sas,我尝试了您的代码,但没有成功。它说 for(Integer list:lists) 有错误:(
【解决方案2】:

从这里尝试答案 - How to access at request attributes in JSP? - 您的请求属性应该在 JSP 中可见。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-02-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多