JBuilder2005实战JSP之登录页面
2008-02-23 07:47:46来源:互联网 阅读 ()
图 3 通过向导创建login.jsp |
·Web module:如果一个工程下有多个Web模块,你可以通过这儿指定JSP所要加入到的Web模块,因为我们的工程中只有一个webModule,所以是向导将默认设置为webModule。
·Name :键入JSP文件名,你可以键入.jsp后缀,也可以不写后缀,直接键入login就可以了。
Generate sample bean选项勾选后JBuilder将生成一个示例的Bean并在JSP中引入这个Bean。对于初学者来说,可以通过该选项查看JSP如何引用一个Bean,而Generate error page选项将自动为JSP创建一个配套的错误处理JSP文件,这里,我们不勾选它们。
直接点击Finish创建login.jsp,login.jsp文件出现在内容窗格的编译器中,如下图所示:
图 4 向导创建的JSP文件 |
JSP编译窗口的左右两边都有一个可以通过 和 按钮控制的竖栏,左边栏为放置JSP标签和HTML标签的面板,可以像可视化UI设计器中一样用拖拽方式往JSP文件中放置各种标签,如上图中,我们从面板中选择表单的HTML标签放置到login.jsp文件中。
而右边竖栏中是JSP文件中当前光标所在标签的属性编译器,如下图所示:
图 5 设置JSP标签属性编辑器 |
属性编辑器是动态的,光标移到不同的标签上,属性编辑器就显示这个标签所有可设置的属性。如上图中对应的是HTML 表单标签的属性编辑器,我们将其action属性设置为switch.jsp,指定用POST方式发送请求数据。
我们在login.jsp中提供一个用户名下拉框、一个密码输入框以及一个登录提交按钮,其代码如下:
代码清单 4 login.jsp
1. <%@page contentType="text/html; charset=GBK" %> 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. <option value="100000">姜子牙</option> 11. <option value="100001">鲍叔牙</option> 12. <option value="100002">竖牙</option> 13. </select> 14. 密 码:<input name="password" type="password"> 15. <input type="submit" name="Submit" value="登录"> 16. </表单> 17. </body> 18. </html> |
表单标签代表网页中的一个表单,表单可以包含多个组件,这些组件的数据在网页表单提交后,以HTTP协议发送给action属性所指定的JSP文件处理。表单的数据一般以POST发送,POST发送方式对数据量的大小没有限制,且保密性更强。
login.jsp的效果页面如下图所示:
图 6 login.jsp录入页面 |
实战经验: JSP文件代码包含静态和动态两部分,即一部分是HTML代码,而另一部分为JSP标签和Scriptlet代码。JSP一般是动态逻辑的网页,JBuilder对JSP标签及Scriptlet这些动态代码部分支持得非常好,你可以使用CodeInsight和TagInsight等工具快速而正确地完成编码,同时还可以对JSP进行编译调试。在JSP静态HTML代码编写及可视化设计方面,JBuilder却显得力不从心,Dreamweaver在静态代码和可视化设计方面明显优于JBuilder。 |
事情的复杂促进了分工,分工的精细促进了专业的发展,在编写JSP时,并不是一旦拥有JBuilder就别无所求了。韩信善兵、萧何善谋,如果能够将Dreamweaver和JBuilder结合起来,用Dreamweaver开发JSP的可视化部分,用JBuilder开发JSP的动态代码部分,两者互补有无,相得益彰,JSP开发工作将变得更加行云流水。
将用户列表改为动态
目前创建的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. } |