第六章 课程设计
jsp有很多技术,但现在已经学习的技术,已经完全足够写一个网站。完成一个简易图书馆网站,要求如下:
1.普通读者可以随意查询书籍,可以根据书名、作者两种方式查询
2.界面自定
3.管理员登录 后可以添加、删除书籍
4.数据库至少有如下表格:book保存书籍信息,user保存管理员账号密码
5.如果有自己的想法,可以做自定义的网站
book表至少需要有以下字段:
id 类型为int 主键 自动递增
name 书名 类型为varchar 长度为50
author 作者 类型为varchar 长度为20
publisher 出版社 类型为varcahr 长度为30
user表可直接用上一章节出现的user表
步骤 | 备注 |
---|---|
安装数据库及navicate | 数据库环境准备 |
在mysql中创建数据库,然后创建表book | 创建表后先手动插入几条数据,在navicate可操作 |
在eclipse端创建类Book,属性和数据表book的字段一致 | varchar类型的字段对应字符串类型 |
在创建java类BookData,写一个根据id查询一条书本记录的函数getBookById | 就在BookData的main函数中测试一下此函数 |
在BookData里面写根据书名查询书本的函数,命名为searchBook(String name),返回List类型的数据,包含n个book对象的 | 这是一个模糊查询,例如下面的语句,会吧所有书名包含java的书查找出来: select * from book where name like "%java%" 写好后先在BookData的main函数中测试一下 |
在WebContent中创建jsp页面index.jsp和result.jsp | 页面是一个搜索框,类似百度,功能就是把输入框的内容,作为上面searchBook的参数,返回结果有可能是n本书,遍历结果并显示。 搜索框就相当于登录的简化版——它只有一个数据要发送,登录要发送两个。搜索的form表单需要一个result.jsp或者一个servlet来处理发过来的关键字,并显示所有书的信息 |
管理员登录后的操作
步骤 | 备注 |
---|---|
之前的登录页面直接拿过来使用,包括数据库的验证登录 | |
登录后进入管理页面admin.jsp | 此页面要新建,页面内容是所有书的信息,是一个table形式的表格,此处可参考result.jsp。在表格的最后一列,是修改链接,点击修改链接后,就会进入修改页面change.jsp。这个链接应该类似于这样:change.jsp?id=11,id是书的id |
change.jsp | 这个页面一开始就根据url里面id查询book,使用BookData里面的这个函数getBookById(前面已经写过),然后把book的所有字段(除了id),显示到input字段中,每个字段对应一个input字段,在最下方,有一个修改按钮。点击后把上面表单的数据发送到update.jsp |
update.jsp | 在BookData里面写一个updateBook函数,参数是一个Book对象,把Book对象的字段拼成一个update语句执行。update.jsp页面接收发送过来的所有book字段数据,然后根据这些字段创建一个Book对象,在页面中调用updateBook函数完成更新。 |
数据库更新函数示例
public static void updateUser(User user){ // 要执行的sql语句,通过字符串拼接出来 String SQLTEXT=String.format("update user set password='%s' , nickname='%s' where username='%s'",user.getPassword(),user.getNickname(),user.getUsername()); try{ // 使用上面的DBConifg类的getCon方法,建立一个连接 Connection con=DBConfig.getCon(); // 准备执行sql的实体 Statement stmt=con.createStatement(); // 执行sql,没有查询结果返回,返回结果是执行成功true或者失败false boolean rst=stmt.execute(SQLTEXT); // 后使用先关闭原则,关闭各个对象,特别是con如果不关闭,会造成连接泄露 stmt.close(); con.close(); } catch(SQLException e){ e.printStackTrace(); }}
数据库删除函数示例,删除要慎重使用
public static void deleteUser(String username){ // 要执行的sql语句,通过字符串拼接出来 String SQLTEXT=String.format("delete from user where username='%s'",username); try{ // 使用上面的DBConifg类的getCon方法,建立一个连接 Connection con=DBConfig.getCon(); // 准备执行sql的实体 Statement stmt=con.createStatement(); // 执行sql,没有查询结果返回,返回结果是执行成功true或者失败false boolean rst=stmt.execute(SQLTEXT); // 后使用先关闭原则,关闭各个对象,特别是con如果不关闭,会造成连接泄露 stmt.close(); con.close(); } catch(SQLException e){ e.printStackTrace(); }}