gpt4 book ai didi

java - 将数据从 Java Servlet 传递到 JSP?

转载 作者:IT老高 更新时间:2023-10-28 21:04:33 28 4
gpt4 key购买 nike

我是一名 PHP 开发人员,但最近需要使用 Google App Engine (Java) 进行一些项目。在 PHP 中,我可以做这样的事情(就 MVC 模型而言):

// controllers/accounts.php
$accounts = getAccounts();
include "../views/accounts.php";

// views/accounts.php
print_r($accounts);

我看一下使用 Servlet 和 JSP 的 Google App Engine Java 的一些演示。他们正在做的是:

// In AccountsServlet.java
public class AccountsServlet extends HttpServlet {

@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
String action = req.getParameter("accountid");
// do something
// REDIRECT to an JSP page, manually passing QUERYSTRING along.
resp.sendRedirect("/namedcounter.jsp?name=" + req.getParameter("name"));
}
}

基本上在 Java 案例中它是 2 个不同的 HTTP 请求(第二个被自动强制),对吗?所以在 JSP 文件中我不能使用在 Servlet 中计算的数据。

有什么方法可以像 PHP 那样做吗?

最佳答案

您需要将在 servlet 中检索到的数据设置在请求范围内,以便数据在 JSP 中可用

您的 servlet 中将包含以下行。

List<Account> accounts = getAccounts();  
request.setAttribute("accountList",accounts);

然后在 JSP 中,您可以使用如下表达式语言访问这些数据

${accountList}

我会使用请求调度而不是 sendRedirect 如下

  RequestDispatcher rd = sc.getRequestDispatcher(url);
rd.forward(req, res);

如果您可以使用 RequestDispatcher 那么您可以将这些值存储在 requestsession 对象中并获取到其他 JSP。

使用 request.sendRedirect 有什么特定目的吗?如果不使用 RequestDispatcher

See this link for more details .

public class AccountServlet extends HttpServlet {

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

List<Account> accounts = getAccountListFromSomewhere();

String url="..."; //relative url for display jsp page
ServletContext sc = getServletContext();
RequestDispatcher rd = sc.getRequestDispatcher(url);

request.setAttribute("accountList", accounts );
rd.forward(request, response);
}
}

关于java - 将数据从 Java Servlet 传递到 JSP?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5414600/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com