初学javaweb+mybatis练习宠物管理系统小项目

完整动物商店小项目实现

整体项目要求

  1. 实现前后端数据的交互
  2. 实现用户的登录和注册
  3. 能够实现宠物库的内容的查询和展示
  4. 能够完成宠物的添加、修改、删除、排序操作

涉及知识

掌握Maven项目的创建配置、mybatis的配置使用、前端基础知识、servlet请求等
整个项目构成
在这里插入图片描述

在这里插入图片描述

第一步 创建Maven项目

选择javaweb项目

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ktlsQOZE-1627442638697)(C:\Users\24670\AppData\Roaming\Typora\typora-user-images\image-20210727172122639.png)]

第二步 导入依赖项

在项目 pom.xml中进行配置

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-BEcAeeG8-1627442638699)(C:\Users\24670\AppData\Roaming\Typora\typora-user-images\image-20210727172201632.png)]

第三步 创建相对应的数据创建对应的表并创建对应的实体类

注意:驼峰是命名法与数据库的属性名的命名规则

ej:实体属性 uName ==> 数据库属性名 u_name

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-y6oKZ7G5-1627442638700)(C:\Users\24670\AppData\Roaming\Typora\typora-user-images\image-20210727172852640.png)]

创建实体类

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Fb5l8n6A-1627442638703)(C:\Users\24670\AppData\Roaming\Typora\typora-user-images\image-20210728105221364.png)]

第四步 编辑mapper接口 配置mybatis实现数据库的增删改查

可以参考上篇博文

编辑mybatis-configs.xml 配置文件 添加到resources目录中

在这里插入图片描述

  1. 编辑mybatis-configs.xml 配置文件 添加到resources目录中

    目的:连接数据源(对应的数据库)、配置命名规则、配置映射文件的位置

  2. 创建对应的接口 mapper 文件 定义操作方法

  3. 创建对应接口的mapper.xml配置文件 实现具体的接口方法。(见博客)

第五步 创建数据库工具类 dao类

调用mapper中的方法,进一步连接前端实现数据与数据库的互动

调用接口方法 步骤:

创建会话工厂、创建会话、获得映射接口对象、调用接口方法 (如下)

//实现用户的登录查找

//创建会话工厂创建器
static SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();

public static boolean userLink(String user, String password){
    //创建工厂
    try {
        SqlSessionFactory factory = builder.build(Resources.getResourceAsStream("mybatis-configs.xml"));
        //创建会话
        SqlSession sqlSession = factory.openSession();
        //获得映射接口对象
        UserMapper mapper = sqlSession.getMapper(UserMapper.class);
        //调用接口
        List<User> users= mapper.selectUserExist(user,password);
        //提交语句
        sqlSession.commit();
        return !users.isEmpty();
    } catch (Exception e) {
        e.printStackTrace();
    }
    return false;
}

第六步 创建servlet类 实现前后端数据的交互

例用户登录的实现 具体步骤

  1. 创建servlet类 继承 父类 HttpServlet
  2. 实现父类的 doGet doPost方法
  3. HttpServletRequest , HttpServletResponse 请求响应页面内容
  4. 读取内容,传入到需要的参数
  5. 调用dao类方法 实现具体功能
/**
 * 用户登录 交互类
 */
// 注册对应的页面
@WebServlet("/login.do")
public class UserServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        req.setCharacterEncoding("UTF-8");
        resp.setCharacterEncoding("UTF-8");

        //设置相应数据的内
        resp.setContentType("text/html;charset=utf-8");

        // 获取用户请求的参数
        String username = req.getParameter("username");
        String password = req.getParameter("password");
        req.setAttribute("username","3030");

        // 调用接口方法 实现用户的查询 返回一个boolean型参数
        if( UserDao.userLink(username,password)){

            // 跳转主界面
            req.getRequestDispatcher("success.do").forward(req,resp);
        }else{
            // 跳转失败界面
            req.getRequestDispatcher("faile.jsp").forward(req,resp);
        }
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        doGet(req, resp);
    }

前端方面注意事项

servlet页面注册 一定一定 要对应jsp页面(见下图)

否则基本报错 404 某个页面没有访问…之类的问题(本次实践中出现最多的问题)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2foVBwAH-1627442638706)(C:\Users\24670\AppData\Roaming\Typora\typora-user-images\image-20210728110530941.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-SLCBd4Zq-1627442638707)(C:\Users\24670\AppData\Roaming\Typora\typora-user-images\image-20210728110543711.png)]

在前端利用table实现数据库的信息的展示方法

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
要是用内嵌标签 需要提前声明

<%@ page contentType="text/html;charset=UTF-8" language="java"  isELIgnored="false" %>

jsp的page指令的isELIgnored属性(是否忽略EL表达式)没有设置导致的,在没有设置的情况下默认为true,也就是忽略El表达式,EL表达式的内容将作为字符串.

<table  align="center" border="1" style="margin: 0px auto;width: 500px; height: auto">
    <tr>
        <td>姓名</td>
        <td>性别</td>
        <td>类型</td>
        <td>年龄</td>
        <td>价格</td>
    </tr>
    <c:forEach var = "pet" items="${pets}">
        <tr>
            <td>${pet.petName}</td>
            <td>${pet.petSex}</td>
            <td>${pet.petType}</td>
            <td>${pet.petAge}</td>
            <td>${pet.petPrice}</td>
        </tr>
    </c:forEach>
</table>

结果展示:

登录界面 实现 进入到宠物商店主页 可以进行具体的操作

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jwx2TIQ0-1627442638708)(C:\Users\24670\AppData\Roaming\Typora\typora-user-images\image-20210728111030244.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-psnjCGPn-1627442638708)(C:\Users\24670\AppData\Roaming\Typora\typora-user-images\image-20210728111820016.png)]

查询全部宠物 并 在前段展示 部分源码展示:

Servlet类

@WebServlet("/success.do")
public class PetServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        // 将集合保存到request中
        List<Pet> pets = PetDao.showAll();
        req.setAttribute("pets",pets);
        req.getRequestDispatcher("success.jsp").forward(req,resp);
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        doGet(req, resp);
    }
}

前端实现

<form action="/success.do" method="post">
<table  align="center" border="1" style="margin: 0px auto;width: 500px; height: auto">
    <tr>
        <td>姓名</td>
        <td>性别</td>
        <td>类型</td>
        <td>年龄</td>
        <td>价格</td>
    </tr>
    <c:forEach var = "pet" items="${pets}">
        <tr>
            <td>${pet.petName}</td>
            <td>${pet.petSex}</td>
            <td>${pet.petType}</td>
            <td>${pet.petAge}</td>
            <td>${pet.petPrice}</td>
        </tr>
    </c:forEach>
</table>
</form>

数据库工具类(包含 接口及配置)

接口
    List<Pet> showAllPets();
    
    
接口配置
<!--遍历-->
    <select id="showAllPets" resultType="com.strive.entity.Pet">
        select * from school.tb_pets
    </select>

工具类
/**
 * 展示全部宠物
 */
public static List<Pet> showAll(){
    List<Pet> list = new ArrayList<>();
    try {

        //获得映射接口对象
        PetMapper mapper = returnSqlSession().getMapper(PetMapper.class);
        //调用接口
        list = mapper.showAllPets();;
        //提交语句
        returnSqlSession().commit();
        return list;
    } catch (Exception e) {
        e.printStackTrace();
    }
    return null;
}
  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
基于Servlet+Mybatis+Thymeleaf的Javaweb项目的技术栈主要包括以下几个方面: 1. Servlet:Servlet是JavaWeb中的一种技术规范,用于处理HTTP请求和响应。在JavaWeb应用中,Servlet可以接收并响应来自客户端的请求,同时也可以与数据库进行交互、调用业务逻辑等。 2. MybatisMybatis是一种流行的Java持久层框架,它提供了一种优雅的方式来管理数据库访问。与传统的ORM框架不同,Mybatis将SQL语句和Java代码分离,开发者可以自由地编写SQL语句,同时也可以通过Mybatis提供的映射文件将Java对象和数据库表进行映射。 3. Thymeleaf:Thymeleaf是一种流行的Java模板引擎,它可以将HTML模板和Java代码结合起来,生成动态的Web页面。与JSP相比,Thymeleaf更加灵活、易于维护,同时也支持HTML5特性、国际化等高级功能。 除此之外,基于Servlet+Mybatis+Thymeleaf的Javaweb项目还涉及到一些其他的技术,比如: 4. 数据库:JavaWeb应用通常需要与数据库进行交互,目前常用的数据库有MySQL、Oracle、PostgreSQL等。 5. Maven:Maven是一种流行的Java项目管理工具,它可以自动化地管理项目依赖、构建过程、测试过程等。 6. Git:Git是一种流行的版本控制工具,它可以帮助开发者协同开发、管理代码变更、回滚代码等。 总之,基于Servlet+Mybatis+Thymeleaf的Javaweb项目是一个完整的JavaWeb应用,需要涉及多个技术方面才能实现。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值