第六章 课程设计


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();
    }
}