将数据从Java Servlet传递到JSP多次

时间:2016-03-03 04:17:37

标签: jsp servlets html-table

我是Java servlets和JSP的新手......

我创建了一个Java servlet。实际上这是我正在做的第一个servlet!

在我的servlet代码中,我有一个循环。对于此循环的每次迭代,都有变量将设置为不同的值。在这个循环的每次迭代结束之后,我希望能够在HTML表中打印出我的变量(这些变量将随着循环的每次迭代而变化)作为一行....

在做了一些研究之后,似乎我需要使用JSP页面来输出HTML中的变量。但是,如何在循环的每次迭代后将数据发送到JSP页面?

伪代码示例:

- servlet逻辑

   forloop{
       var1 = "somedata";
       var2 = "somemoredata";
    }

- jsp logic

 //this part should only output once   
<table>
    <thead><tr><th></th></tr></thead>

    //this part needs to output everytime the JSP is called. And each time, different values of var1 and var2 will be passed 
    <tr>
    <td>${var1}</td>
    <td>${var2}</td>
    </tr>

    </table>

有谁知道这样做的最佳方法? 如果我以错误的方式解决这个问题,我应该采取另一种方法吗?我应该使用AJAX继续提供信息来更新我的页面吗?

感谢您提供任何建议和见解!

2 个答案:

答案 0 :(得分:1)

您需要构建一个数据结构,该结构将保存您的servlet的结果,并且必须传递给JSP。在JSP中,您可以遍历数据并构造表行。

要记住的一点是,JSP尽管可能看起来像HTML文件,但最终它们与Java Servlet相同,它基本上只是Java类。每次在Servlet中执行循环时都无法加载jsp。想法是Java Servlet准备数据并传递给JSP进行演示。

<强>的Servlet

// Import required java libraries
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;

// Extend HttpServlet class
public class HelloWorld extends HttpServlet {

  private String message;

  public void init() throws ServletException
  {
      // Do required initialization
      message = "Hello World";
  }

  public void doGet(HttpServletRequest request,
                    HttpServletResponse response)
            throws ServletException, IOException
  {
    List<String> data = null;
    // do you loop here
    //pass the data to jsp
    String jsp = ""; //jsp path
    ServletContext sc = getServletContext();
    RequestDispatcher rd = sc.getRequestDispatcher(jsp);

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

  public void destroy()
  {
      // do nothing.
  }
}

<强> JSP

<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<c:forEach items="${data}" var="d">
    <tr>      
        <td>${d}</td>
    </tr>
</c:forEach>

答案 1 :(得分:0)

您可以使用我的解决方案,但只有您知道要使用多少变量才能使用它。而不是使用JSP代码添加它们使用AJAX请求和JQuery

示例JSP:

@WebServlet("/MyServlet")
public class MyServlet extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

          String text="";
          String values[][]={{"1","2"},{"4","5"},{"6","7"},{"8","9"}} //your values it really can be anything

          for(int i=0;i<values.length;i++){
              text=text+"<tr>\n";
              text=text+"<td>"+values[i][0]+"</td>\n";
              text=text+"<td>"+values[i][1]+"</td>\n";
              text=text+"</tr>\n";
          }

          out.print(text);
    }
}

示例Servlet:

$name = $_POST["name"];
...
$name = $_POST["last"];
...
$name = $_POST["company"];
...
$name = $_POST["users"];
...
$name = $_POST["country"];

希望它可以帮到你。祝你好运