----------------------
android培训、java培训、期待与您交流! ----------------------
今天完成了web程序设计课程的最后一个实验——简单的图书管理系统。
本系统要求设计一个通用的基于浏览器/服务器的简单图书管理系统,实现用户的注册和登陆,以及图书的查询与借阅。
这个程序从整体的思路上并不难,只是实现表单向servlet传值,从数据库访问数据,servlet进行数据验证,将最终结果显示于JSP页面即可。
但是这个看似不难的程序却让我费尽了心思才完成。(这反映出平时代码量积累得太少的问题)
再次,我将出现的问题记录下来,以供以后学习甚至于工作之时参考与提醒!
第一、忘记导入需要的jar包
可能在别人看来比较弱智的问题,就是我经常忘记导入链接数据库所需要的jar包。在这个实验中,开始的时候我是用mysql数据库,而一开始我也想到了导入jar包。后来由于实验的要求,我换用了sqlserver2005,之后我就忘记导入jar包了。找了半天错误却没有找到。后来还是别人提示我的我才注意到了。
解决方案:
1、由于以后的web项目中避免不了使用数据库,所以在建立项目的时候要养成建立项目即导入jar包的习惯。
2、注意平时异常方面的积累,在碰到经常碰到的异常的时候要注意,以便以后出现一样的异常能够迅速找到解决方案。
第二、sql语句
可以这么说,做了这么几次试验,让我话费时间最多的就是sql语句。在学习数据库的时候,一直没有记那些DDL和DML语句,总是感觉这些应该是数据库管理员才需要做的事情,其实根本就不是这么一回事儿,在编写软件的时候,这些语句对于一个合格的程序员来说应该顺理成章的就写对,而不是要查找书才能写出来。而且,不能的数据库,其sql语句也有不同,熟悉常用数据库的常用语句对于提供编写代码的速度非常重要。
解决方案:
熟记常用数据库的常用sql语句。
第三、ps.executeQuery()和ps.executeUpdate()
众所周知,这两个代码的功能都是执行sql语句。但是ps.executeQuery()要求返回一个结果集,而ps.executeUpdate()不要求返回结果集。所以在执行查询等语句的时候要使用
ps.executeQuery()语句,而如果使用删除,修改等语句的时候则使用ps.executeUpdate()语句。
第四、从servlet中向JSP传递参数。
传递参数不止可以传递String类型的变量,而且可以传递自定义类型的变量。
例如:req.setAttribute("bookinfo",book.toString()) ;
req.getRequestDispatcher(pathSuccess).forward(req,resp) ;
第五、标准的连接数据库操作
我感觉连接数据库操作的步骤是固定的,只要是用JDBC来连接数据库就这样做是最好的。
首先要建立一个Util包:
public final class JDBCUtils { private static String url = "jdbc:sqlserver://localhost:1433;databaseName=test"; private static String user = "sa"; private static String password = "123456"; private JDBCUtils() { } static { try { Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver"); } catch (ClassNotFoundException e) { throw new ExceptionInInitializerError(e); } } public static Connection getConnection() throws SQLException { return DriverManager.getConnection(url, user, password); } public static void free(ResultSet rs, Statement st, Connection conn) { try { if (rs != null) rs.close(); } catch (SQLException e) { e.printStackTrace(); } finally { try { if (st != null) st.close(); } catch (SQLException e) { e.printStackTrace(); } finally { if (conn != null) try { conn.close(); } catch (SQLException e) { e.printStackTrace(); } } } } }
然后再*DaoImp中就可以调用Util包中的方法即可。
----------------------
android培训、java培训、期待与您交流! ----------------------