web-crub代码构建流程
Web-crub的代码构建流程
1.1 实体类设计
首先创建实体类,对应数据库表结构。例如 Book.java ,包含书籍的基本属性。
1.2 数据访问层实现
- 创建Mapper接口:定义数据访问方法,如 BookMapper.java
- 创建Mapper实现类:实现接口方法,通过MyBatis执行SQL操作,如 BookMapperImpl.java
- 创建Mapper XML文件:定义SQL语句,如 BookMapper.xml 1.3 业务逻辑层实现
- 创建Service接口:定义业务逻辑方法,如 BookService.java
- 创建Service实现类:实现接口方法,调用Mapper层操作数据,如 BookServiceImpl.java 1.4 控制器层实现
创建Servlet:处理HTTP请求,调用Service层方法,转发到JSP视图,如 BookServlet.java 。使用 @WebServlet 注解配置URL映射。
1.5 视图层实现
创建JSP页面:展示数据,如 bookList.jsp 。
1.6 配置文件 - mybatis-config.xml :MyBatis配置
- db.properties :数据库连接配置
- log4j.properties :日志配置
2. 构建流程
由于这是一个传统的Web项目,没有使用Maven或Gradle等构建工具,构建流程如下:
-
编译Java源代码 :
- 使用IDE(如IntelliJ IDEA)的编译功能
- 或使用 javac 命令手动编译
-
资源文件复制 :
- 将编译后的 .class 文件复制到 web/WEB-INF/classes/ 目录
- 将配置文件复制到相应目录
- 将JSP文件和静态资源文件保持在原位置
-
打包部署 :
- 将整个 web 目录打包为WAR文件
- 或直接将 web 目录部署到Web服务器(如Tomcat)的 webapps 目录
3. 运行流程
-
Web服务器启动 :
- 加载Web应用,初始化Servlet容器
- 加载 web.xml 配置(虽然本项目中 web.xml 为空,因为使用了 @WebServlet 注解)
-
请求处理 :
- 客户端发送HTTP请求到 /books 路径
- BookServlet 的 service 方法被调用
- 设置请求和响应的字符编码
- 获取当前页码参数
- 调用 BookService 的 selectAllBypage 方法
-
业务逻辑处理 :
- BookServiceImpl 调用 BookMapper 的 selectAll 方法
- 封装查询结果到 PageVo 对象
-
数据访问 :
- BookMapperImpl 通过 MyBatisTool 获取SqlSession
- 执行SQL查询,获取书籍列表
- 关闭SqlSession
-
响应处理 :
- BookServlet 将 PageVo 对象设置到请求属性中
- 转发请求到 /WEB-INF/jsp/book/bookList.jsp
- JSP页面渲染数据并返回给客户端
代码开发流程建议
在开发类似的Web项目时,建议按照以下顺序从底层到上层逐步构建,这样可以确保各层之间的依赖关系清晰,避免出现因依赖未定义而导致的错误。
1. 首先准备配置文件和工具类
配置文件
- db.properties :配置数据库连接信息(URL、用户名、密码等)
- mybatis-config.xml :配置MyBatis的全局设置、数据源和Mapper扫描路径
- log4j.properties :配置日志系统(可选)
工具类
- MyBatisTool.java :封装MyBatis的SqlSession创建和关闭逻辑,为数据访问层提供支持
2. 实体层(Domain)
先定义实体类,因为其他所有层都需要使用实体类来传递和处理数据。
- Book.java :根据数据库表结构创建对应的实体类,包含属性和必要的构造方法
3. 分页工具类(可选,但建议提前创建)
如果需要分页功能,先创建分页工具类,因为服务层和控制器层会用到它。
- PageVo.java :封装分页相关的属性和逻辑
4. 数据访问层(Mapper)
数据访问层依赖实体类,负责与数据库交互。
- BookMapper.java :定义数据访问接口,声明需要的方法(如 selectAll() )
- BookMapper.xml :配置与接口方法对应的SQL语句
- BookMapperImpl.java :实现Mapper接口,调用MyBatis执行SQL操作
5. 服务层(Service)
服务层依赖数据访问层,封装业务逻辑。
- BookService.java :定义服务接口,声明业务方法(如 selectAllBypage() )
- BookServiceImpl.java :实现服务接口,调用Mapper层方法处理数据,并添加业务逻辑(如分页处理)
6. 控制器层(Servlet)
控制器层依赖服务层,处理HTTP请求和响应。
- BookServlet.java :继承HttpServlet,处理请求参数,调用服务层方法,转发到视图
7. 视图层(JSP)
视图层依赖控制器层,展示数据给用户。
- bookList.jsp :接收控制器传递的数据,展示图书列表和分页导航
开发流程说明
为什么要从底层开始?
- 依赖关系清晰 :上层依赖下层,底层先完成可以确保上层开发时不会因为依赖未定义而报错
- 便于测试 :每完成一层可以单独测试,确保功能正确后再开发上层
- 减少重构 :如果先开发上层,可能会因为底层设计不合理而需要大量修改
顺序
- 创建 db.properties 和 mybatis-config.xml 配置文件
- 实现 MyBatisTool.java 工具类
- 创建 Book.java 实体类
- 创建 PageVo.java 分页工具类
- 定义 BookMapper.java 接口
- 配置 BookMapper.xml 文件
- 实现 BookMapperImpl.java 类
- 定义 BookService.java 接口
- 实现 BookServiceImpl.java 类
- 开发 BookServlet.java 控制器
- 创建 bookList.jsp 视图

浙公网安备 33010602011771号