【问题标题】:JSP java code + html tableJSP java代码+html表格
【发布时间】:2011-05-24 18:11:48
【问题描述】:

我遇到了一个我不太明白的问题。我正在使用 java 代码访问数据库,然后使用 jsp 部分,以 html 格式显示结果。 代码如下所示:

out.println("<html><body>");

out.println("<form method=\"GET\" action=\"http://localhost:1234/WebLabJSP/delete\">");

out.println("<table>");

out.println("<tr><th>Name</th><th>Quantity</th><th>Category</th></tr>");

ResultSet rs = s.executeQuery("select * from Products");


while(rs.next()){


out.println("<tr><td>" + rs.getString(2) + "</td><td>" + rs.getString(3) + "</td><td>" + rs.getString(4) + "</td><td><input type=\"submit\" value=\"Delete\" name=\"delete" + rs.getString(1) + "\"/></td><td><input type=\"submit\" value=\"Update\" name=\"update" + rs.getString(1) + "\"/></td></tr>");

   } 

out.println("</table></form>");

out.println("</body></html>");

问题是,如果我在表单中只有删除按钮,它可以完美地工作,但是当我添加第二个按钮时,页面根本没有显示任何内容。 如果有人知道发生了什么,请帮忙。

【问题讨论】:

  • 检查您的错误日志,让我们知道错误是什么。
  • "out" 是 pageContext 的输出,关于页面的初始化是在程序开始时完成的。
  • 可能是 rs.getString(1) 返回的字符会弄乱 html(例如 > 或其他东西)
  • 它应该返回正确的字符串和整数。
  • 以这种方式编写 HTML 很容易出错。很难阅读,IDE 无法检查 html 元素是否匹配。阅读有关 MVC 的更多信息并尝试将您的 HTML 与您的逻辑隔离开来。

标签: java html jsp button html-table


【解决方案1】:

如果你得到一个空白页面,那么这通常是因为在呈现响应的过程中引发了异常,并且 servletcontainer 无法显示带有异常详细信息的标准错误页面,因为响应已经提交。

异常将被记录到服务器日志文件中。查找它,阅读堆栈跟踪并相应地解决问题。


与实际问题无关,您展示的代码实践实际上是一种糟糕的实践。 Java 代码应该放在 Java 类中(由 servlet 控制),而 HTML 代码应该放在 JSP 中,而不使用out.println()。应该使用 JSTL 来控制页面流。有关示例,另请参阅 this answer。这样,异常将/可以及时捕获并最终出现在错误页面中。

【讨论】:

    【解决方案2】:

    首先这不是你应该如何使用jsp。 在 jsp 上使用 jstl 在 servlet 上使用 java 代码。

    关于您的问题,请尝试检查生成的 HTML。应该有

    <form ...>
    .
    .
    .
    .<input type="submit" name="something" value="delete"/>
    .<input type="submit" name="something" value="update"/>
    </form>
    

    或者检查服务器的日志,

    另请参阅

    【讨论】:

    • 说用java的问题。
    • @Syy 是的,检查给出的链接,jsp 应该如何编写
    • life.java:要么你的文字错误,要么你的链接。请参考您的最后一个链接。
    【解决方案3】:

    包围你的:

    ResultSet rs = s.executeQuery("select * from Products");
    while(rs.next()){
    out.println("<tr><td>" + rs.getString(2) + "</td><td>" + rs.getString(3) + "</td><td>" + rs.getString(4) + "</td><td><input type=\"submit\" value=\"Delete\" name=\"delete" + rs.getString(1) + "\"/></td><td><input type=\"submit\" value=\"Update\" name=\"update" + rs.getString(1) + "\"/></td></tr>");
       } 
    

    使用 try/catch 块来查看是否存在异常。

    【讨论】:

    • @Syy :如果你知道你的一些列是整数而不是字符串,例如假设你的结果集中的第二列是整数,你应该有 rs.GetInteger(2).toString()而不是 rs.GetString(2)
    【解决方案4】:

    为什么不把变量放在请求中

    request.setAttribute("string1",rs.getString(1));
    

    然后在你的jsp中调用它

    <td><%=request.getParameter("string1")%>;
    

    【讨论】:

    • 这样不行:请求属性和参数不一样。 jstl 表达式应该优先于 scriptlet。
    • scriptlets 是一个很好的起点,因为这个 OP 听起来很新。加上它比在 out.print 中编写 html 更好
    • 最好是从好习惯入手,从一开始就忽略scriptlet。
    【解决方案5】:

    在jsp页面中不要使用连接过程和其他更新过程,尽量使用servlet或其他javabeans。使用该 servlet 的标记...如果您想更新意味着只需调用该函数,在该 servlet 中声明。 servlet 充当你的 jsp 页面的控制器。它更强大。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-01-27
      • 1970-01-01
      • 2016-03-13
      • 1970-01-01
      • 2014-09-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多