2010-12-13 55 views
0

我遇到了一个我不太明白的问题。我使用java代码访问数据库,然后使用jsp部分,以html格式显示结果。 的代码看起来是这样的:JSP java代码+ 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>"); 

的问题是,如果我只有在表格中删除按钮,它完美的作品,但是当我添加第二个按钮时,页面不显示在任何所有。 如果有人知道发生了什么,请帮忙。

+0

和JSP在哪里? – gertas 2010-12-13 15:55:05

+0

检查你的错误日志,让我们知道错误是什么。 – Asaph 2010-12-13 15:55:17

+0

“out”是pageContext的输出,关于页面的初始化在程序开始时完成。 – Syy 2010-12-13 15:56:32

回答

4

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

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


与实际问题无关,您显示的代码实践实际上是一种不好的做法。 Java代码应该放在Java类中(由servlet控制),并且HTML代码应该在JSP中进行,而不使用out.println()。应该使用JSTL来控制页面流。例如,另请参阅this answer。这种方式可以及时发现异常并最终出现在错误页面中。

4

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

关于你的问题尝试检查生成的HTML。它应该有

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

或者检查服务器的日志,

参见

+0

这个问题据说使用java。 – Syy 2010-12-13 15:57:49

+0

@Syy yes检查给出的链接,应该如何编写jsp – 2010-12-13 15:58:48

+0

life.java:您的文本是错误的,或者是您的链接。请参考您的最后一个链接。 – 2010-12-14 10:58:02

1

环绕你:

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块查看是否有异常。

+0

@Syy:如果你知道你的一些列是Integer而不是String,例如想象你的ResultSet中的第二列是Integer,你应该有rs.GetInteger(2).toString()而不是rs.GetString(2 ) – LaGrandMere 2010-12-13 16:43:55

-1

你为什么不把变量请求

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

然后调用它在你的JSP

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

这不起作用:请求属性和参数不一样。 jstl表达式应该比scriptlet更受欢迎。 – svachon 2010-12-13 18:43:01

+0

scriptlet是一个很好的开始,因为这个OP听起来很新鲜。加上它比写入html更好。print – code511788465541441 2010-12-13 19:14:34

+1

从良好的习惯开始并忽略scriptlets甚至更好。 – 2010-12-13 22:56:51

0

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