将用户列表改为动态
目前创建的login.jsp有一个缺陷,假设在数据库后台T_USER表中添加其他的用户时,因为用户名下拉框是静态的代码,新创建的用户并不会出现在页面中,因此有必要将用户名列表改为动态的代码,用数据库表T_USER的记录动态产生下拉框的数据。
我们通过UserList.ava类来完成这个工作,在工程中创建UserList.java,其代码如下:
代码清单 5 UserList.java
| 1. package bookstore; 2. import java.sql.*; 3. 4. public class UserList 5. { 6. //获取HTML下拉框的用户列表代码 7. public static String getUserListHTML() { 8. Connection conn = null; 9. StringBuffer sBuf = new StringBuffer(); 10. try { 11. conn = DBConnection.getConnection(); 12. PreparedStatement pStat = conn.prepareStatement( 13. "select USER_ID,USER_NAME from T_USER"); 14. ResultSet rs = pStat.executeQuery(); 15. while (rs.next()) { 16. sBuf.append("<option value='" + rs.getString("USER_ID") + "'>" + 17. rs.getString("USER_NAME") + "</option>\n"); 18. } 19. return sBuf.toString(); 20. } catch (SQLException ex) { 21. ex.printStackTrace(); 22. return ""; 23. } finally { 24. try { 25. if (conn != null) { 26. conn.close(); 27. conn = null; 28. } 29. } catch (SQLException ex1) { 30. } 31. } 32. } 33. } |
![]() 图 7 通过CodeInsight编写代码 |
| 1. <%@page contentType="text/html; charset=GBK" import="bookstore.UserList"%> 2. <html> 3. <head> 4. <title>login</title> 5. </head> 6. <body bgcolor="#ffffff"> 7. <表单 name="表单1" method="post" action="switch.jsp">用户名: 8. <select name="userId"> 9. <option value="" selected>--登录用户--</option> 10. <%=UserList.getUserListHTML()%> 11. </select> 12. 密 码:<input name="password" type="password"> 13. <input type="submit" name="Submit" value="登录"> 14. </表单> 15. </body> 16. </html> |
![]() 图 8 在JBuilder中运行login.jsp |
![]() 图 9 用IE访问JBuilder中运行的login.jsp |
| 提示: 由于编译JSP文件需要先将其转换为Servlet文件,然后再编译这个中间Servlet文件,发生错误后转定向到JSP文件中,所以编译一个JSP文件是比较耗时的,往往比编译一个Java文件要花好几倍的时间。在默认的情况下,编译一个工程时,会编译整个工程中所有的JSP,需要消耗大量的时间。所以最好取消在编译工程连带编译JSP文件的设置:通过Project->Project Properties...->Build-> 在Build设置页中取消Check JSPs for errors at build-time选项。在确实需要的时候再勾选这个选项,并在编译后及时取消这个选项。通过这样的设置将可以为你的开发赢得不少宝贵的时间。 |