- 简介
前端页面+jdbc数据库编程,数据集从网上爬取。结构是MVC模式,jsp+servlet+JavaBean 。M是指业务模型,V是指用户界面,C则是控制器。最典型的MVC就是jsp+servlet+javabean模式。
Model:处理业务数据和业务逻辑的部分,将同时被CONTROLLER和VIEW访问,被CONTROLLER用来传输数据给到VIEW层。
View:主要都是一些ASPX页面文件,他们不包括后台代码,将一个模型中包含的某些方面的数据展现出来,而隐藏另外一些数据。视图向模型请求,以获取需要表现的数据。它也可以通过发送相应的命令,来修改模型中的数据。
Controller:是整个MVC架构的核心, 控制器充当用户和应用程序之间的连接。
- 设计
设计软件功能,每个模块划分。功能和性能,输入数据和输出数据,用到的数据类型。
画软件流程图
登陆
注册
商店页面
详细信息
结账
- 详细实现
Dao包:
用来存放对数据库的操作,商品和用户对数据的操作
baseDao:定义数据库四大常量、数据库的连接过程、数据库的关闭过程
驱动,url,用户名,密码
加载驱动,创建连接,异常抛出
关闭结果集对象rs.close();、关闭执行器对象pstmt.close()、关闭连接对象conn.close()
booksDao:定义对商品的查询删除函数:
eg:public boolean isDeleteBook(String isbn);
usersDao:定义用户登陆注册,面向接口编程,增删改查的函数,不实现
此接口实现对用户的需求的确认,面向接口编程的好处:开闭原则
接口编程:制定者(或者叫协调者),实现者(或者叫生产者),调用者(或者叫消费者)
接口编程的好处:高内聚、低耦合,提高可维护性
Impl实现包:
定义访问数据库三大对象Connection (连接)Statement (语句)ResultSet (结果集)
1) 获取Connection(连接)。
2) 利用连接创建Statement(语句)。
3) 利用Statement(语句)传入实际sql语句操作(查询,更新)数据库。
4) 关闭连接。
例如删改查:update users set name=?, pwd=? where id=?
eg:实现用户注册:
//先定义返回值 boolean ret=false; //定义数据库三大对象 Connection conn=null; PreparedStatement pstmt=null; ResultSet rs=null; //JDBC 6步操作 //1 加载驱动 //2 创建连接 conn=BaseDao.getConn(); //3 写出一个SQL String sql="insert into users(name, pwd) values(?, ?)"; try { //4 创建SQL执行器 pstmt=conn.prepareStatement(sql); //设置?的值 pstmt.setString(1, isbn); //5 执行SQL得到结果 rs=pstmt.executeQuery(); //循环遍历rs if(rs.next()) { //为对象属性赋值 //先查询数据库表 String copyright=rs.getString("COPYRIGHT"); String title=rs.getString("TITLE"); String imagefile=rs.getString("IMAGEFILE"); int editionnumber=rs.getInt("EDITIONNUMBER"); int publisherid=rs.getInt("PUBLISHERID"); double price=rs.getDouble("PRICE"); //根据查询结果为对象赋值 book.setIsbn(isbn); book.setTitle(title); book.setCopyright(copyright); book.setImagefile(imagefile); book.setEditionnumber(editionnumber); book.setPublisherid(publisherid); book.setPrice(price); } } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } finally { //6 释放资源 BaseDao.closeAll(conn, pstmt, rs); } return book; }
实体类entity包:
对数据库中的数据格式进行操作:
private String isbn; //图书编号 private String title; //书名 private int editionnumber; //版本号 private String copyright; //版权 private int publisherid; //出版社编号 private String imagefile; //图书封面 private double price; //价格
get,set方法,获取和改变成员变量的值,JavaBean规范规定只使用get/set访问成员变量
set就用:this.xx=xx, get就用:return xx
serve包:
//中文处理: request.setCharacterEncoding("gbk"); //接收客户端的请求: String xxx=request.getParameter ("uid"); //getParameter得到的都是String类型的。或者是用于读取提交的表单中的值 //调用业务层: BookDao = new BooksDaoImpl或者UsersDao = new UsersDaoImpl //转发视图 doGet(HttpServletRequest request, HttpServletResponse response) doPost(HttpServletRequest request, HttpServletResponse response)
最后根据具体的内容,redirect页面或者forward页面
WebComtent
调试,写爬虫
爬虫的搭建:
def parse
正则表达式选择爬取内容
处理爬取内容,使用item_loader.css+标题,内容,标签,存储
def start request
爬取网站,使用selenium模拟鼠标操作,点击验证码登录
解析列表中所有网址的url
pipeline
输入执行的sql语句