2010-12-13 54 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頁面的控制器,它更強大。