【问题标题】:How to pass an Object from the servlet to the calling JSP [duplicate]如何将对象从 servlet 传递到调用 JSP [重复]
【发布时间】:2012-08-20 06:26:13
【问题描述】:

如何将对象从 servlet 传递给调用 JSP。

我有一个调用 servlet 的 JSP。在这个 servlet 中,我正在设置 viewBean 的属性。 现在,我想从 JSP 页面上的 Servlet 中获取这个属性值集。

如何使这个 ViewBean 对象在 JSP 上从 Servlet 可用。

【问题讨论】:

标签: java jsp servlets


【解决方案1】:

将对象放在会话中或 servlet 中的请求中,例如:

String shared = "shared";
request.setAttribute("sharedId", shared); // add to request
request.getSession().setAttribute("sharedId", shared); // add to session
this.getServletConfig().getServletContext().setAttribute("sharedId", shared); // add to application context

你可以像这样在jsp中阅读它:

<%@ taglib prefix="c" uri="http://java.sun.com/jstl/core" %>
<body>
<cut value= "${shared}"/>
<cut value= "${requestScope.shared}"/>
<cut value= "${requestScope.request.shared}"/>
${shared} 

或者使用带有代码的 scriptlet 阅读它:

<%
 String shared = (String)request.getAttribute("sharedId");
 String shared1 = (String)request.getSession().getAttribute("sharedId");
 String shared2 = (String)this.getServletConfig().getServletContext().getAttribute("sharedId");
%>

【讨论】:

  • 我对使用 Java servlet 进行 Web 开发还比较陌生。但是,我想提请注意第二个代码块。我相信这里有一个错误。您不能直接调用您在 Java servlet 中定义的变量,在本例中为“shared”。这是因为 servlet 依靠反射来找到它们关联的变量/值。同样,我的分析可能有误,但我不相信这会奏效。
【解决方案2】:

嗯,首先你需要设置这个值,这样你就可以从你的页面访问它,比如:

import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;

public class MyServlet extends HttpServlet {
  public void doGet(HttpServletRequest request, HttpServletResponse response) {
    // Do some work.
    Person value = new Person("Matthew", "Abbott";

    request.setAttribute("person", person);

    // Forward to to the JSP file.
    request.getRequestDispatcher("showValue.jsp").forward(request, response);
  }
}

接下来,您可以使用表达式语言访问值的属性:

<!DOCTYPE html>
<html>
  <head>
    <title>${person.forename} ${person.surname}</title>
  </head>
  <body>
    <h1>Hello ${person.forename}!!!</h2>
  </body>
</html>

【讨论】:

    【解决方案3】:

    这样的东西应该可以工作

    request.setParameter("nameOfmyObjectParam",MyObject); //or request.setAttribute
    String yourJSP = "/WEB-INF/pages/yourJSP.jsp";
    
            RequestDispatcher rd = getServletContext().getRequestDispatcher(yourJSP);
            rd.forward(request, response);
    

    【讨论】:

      【解决方案4】:

      使用 Servlet API 将 bean 设置为 servlet 中的请求属性,如下所示 -

      request.setAttribute("viewBean", viewBean);
      

      并在 JSP 中使用 EL 检索(使用)它,如下所示 -

      ${requestScope.viewBean}
      

      【讨论】:

        【解决方案5】:

        在 servlet 的会话属性中添加该 ViewBean 对象。并在 jsp 中获取该变量。

        在小服务程序中

        ViewBean viewbwanObject= new ViewBean() session.setAttribyte("obj",vi);

        在jsp中。

        <%
        

        ViewBean v= (ViewBean)session.getAttribute("obj") %>

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-08-17
          • 1970-01-01
          • 2012-05-04
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多