我是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继续提供信息来更新我的页面吗?
感谢您提供任何建议和见解!
答案 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"];
希望它可以帮到你。祝你好运