Java 用JSP生成按钮故障

Java 用JSP生成按钮故障,java,html,jsp,Java,Html,Jsp,所以我对下面的JSP代码有这个问题 while(rs.next()){ out.println("<tr>"); out.println("<td>" + rs.getString(2) + "</td>"); out.println("<td> <button type='submit' value='delete' onclic

所以我对下面的JSP代码有这个问题

        while(rs.next()){
                out.println("<tr>");
                out.println("<td>" + rs.getString(2) + "</td>");
                out.println("<td> <button type='submit' value='delete' onclick = deleteObj(out, " + rs.getString(2) + ")'>HI</button> </td>");
                out.println("</tr>");
        }
while(rs.next()){
out.println(“”);
out.println(“+rs.getString(2)+”);
out.println(“尝试:

out.println(“HI”);

我看不出该代码如何呈现您链接的输出。它将呈现:

onclick=deleteObj(out,value)“>Hi
其中value是
rs.getString(2)
,当然除非
rs.getString(2)
包含:

"
fat
在这种情况下,您需要转义该引用和新行(请参阅)

您需要添加转义引号:

out.println("<td> <button type='submit' value='delete' 
  onclick = 'deleteObj(out, \"" + rs.getString(2) + "\")'>HI</button> </td>");
out.println(“HI”);
但是要小心使用此类代码。如果
rs.getString(2)
中有引号怎么办?您还需要查看以下答案:。并且更新的链接是您要使用的方法


正如其他人所指出的,这是一种非常糟糕的处理方式。您很少希望在JSP中使用Scriptlet。您希望控制器(或控制器后面的层)做这项工作的大部分。JSP只处理呈现。

您已经为onclick事件添加了end
,但没有启动
。对于非JSP代码的onclick事件,它是Servlet或Scriptlet中的Java。在这种情况下,您正在从JSP迭代数据库数据,并将它们连接到包含HTML的字符串中,而不包含任何检查或格式化,最后将其写入页面。这是反模式节…也许可以看看我的辩护中的这个LOL这是我的第一个JSP项目!:d你想用控制器后面的控制器/层来做这件事是什么意思?阅读MVC模式(适用于web应用程序)但典型的web应用程序使用以下层:处理与浏览器通信的控制器层、处理业务逻辑的服务层和处理与db通信的DAO层。最重要的是处理向客户端(JSP页面)显示数据的视图层。对象(称为数据传输对象)在这些层之间传递,以表示用户输入和来自数据库的数据。
out.println("<td> <button type='submit' value='delete' 
  onclick = 'deleteObj(out, \"" + rs.getString(2) + "\")'>HI</button> </td>");