SSH框架网上商城项目第9战之添加和更新商品类别功能实现

SSH框架网上商城项目第9战之添加和更新商品类别功能实现

本文介绍了如何实现网上商城项目中添加和更新商品类别的功能。我们使用SSH框架来开发此项目。在本文中,您将学习如何创建商品类别的实体类、DAO层、Service层和Action层,以及如何在网页中使用JavaScript和JQuery实现实时验证和提交表单。

创建商品类别的实体类

为了在数据库中存储商品类别数据,我们需要创建一个类来表示商品类别。创建实体类是SSH框架中的第一步。在本例中,我们创建一个名为“Category”的实体类,具有以下属性:

public class Category {
    private int id;
    private String name;
    private String description;
    // 省略 getter 和 setter 方法
}

创建商品类别的DAO层

接下来,我们需要创建DAO层。DAO层是与数据库进行交互的层。它封装了所有的数据库访问逻辑,如保存、更新、查询和删除。在本例中,我们创建一个名为“CategoryDAO”的接口,它继承了Hibernate的基本接口,并拥有如下方法:

public interface CategoryDAO extends BaseDAO<Category>{

    List<Category> queryAll();
}

然后我们创建其对应的实现,即“CategoryDAOImpl”类:

@Repository("categoryDAO")
public class CategoryDAOImpl extends BaseDAOImpl<Category> implements CategoryDAO {

    @Override
    public List<Category> queryAll() {
        String hql = "FROM Category";
        return (List<Category>) this.getHibernateTemplate().find(hql);
    }
}

创建商品类别的Service层

接下来我们需要创建Service层,这一层负责实现业务逻辑。在本例中,我们创建一个名为“CategoryService”的接口,并在其中定义逻辑:

public interface CategoryService extends BaseService<Category>{

    List<Category> queryAll();
}

实现该接口的类为“CategoryServiceImpl”:

@Service("categoryService")
@Transactional
public class CategoryServiceImpl extends BaseServiceImpl<Category> implements CategoryService {

    @Autowired
    private CategoryDAO categoryDAO;

    @Override
    public List<Category> queryAll() {
        return categoryDAO.queryAll();
    }
}

创建商品类别的Action层

Action层是前端访问后端的接口。它处理所有的请求和响应。在本例中,我们创建了一个名为“CategoryAction”的类。该类处理收到的请求并向前端响应结果。

@Controller
@RequestMapping("/category")
public class CategoryAction extends BaseAction<Category> {

    @Autowired
    private CategoryService categoryService;

    @RequestMapping("/list")
    public String list(Model model) {
        List<Category> categoryList = categoryService.queryAll();
        model.addAttribute("categoryList", categoryList);
        return "category/list.jsp";
    }
}

添加商品类别的功能实现

我们可以添加一个新的商品类别,步骤如下:

  1. 在前端页面中添加一个表单,在该表单的“action”属性中提供一个URL路径,该路径与后台的Action层中的方法相对应。

  2. 在后台的Action层中创建一个方法来处理该请求,并将表单数据传递给Service层进行处理。

@RequestMapping("/add")
public String add(HttpServletRequest request, HttpServletResponse response, Model model) {
    String name = (String) request.getParameter("name");
    String description = (String) request.getParameter("description");
    Category category = new Category();
    category.setName(name);
    category.setDescription(description);
    categoryService.save(category);
    return "redirect:/category/list";
}
  1. 在前端页面中使用JavaScript和JQuery实现实时验证表单,并在提交表单前显示验证结果。
$(document).ready(function() {

    $('#addCategoryForm').submit(function(event) {

        // 阻止表单提交
        event.preventDefault();

        // 验证表单
        var isValid = true;
        var $name = $('#name');
        var $description = $('#description');

        // 验证名称
        if ($name.val().trim() == '') {
            $name.parent().addClass('has-error');
            $name.next().text('名称不能为空').show();
            isValid = false;
        }

        // 验证描述
        if ($description.val().trim() == '') {
            $description.parent().addClass('has-error');
            $description.next().text('描述不能为空').show();
            isValid = false;
        }

        // 如果表单合法,提交表单
        if (isValid) {
            this.submit();
        }
    });

    // 失去焦点时验证
    $('#name').blur(function() {
        var $name = $(this);
        if ($name.val().trim() == '') {
            $name.parent().addClass('has-error');
            $name.next().text('名称不能为空').show();
        } else {
            $name.parent().removeClass('has-error');
            $name.next().hide();
        }
    });

    $('#description').blur(function() {
        var $description = $(this);
        if ($description.val().trim() == '') {
            $description.parent().addClass('has-error');
            $description.next().text('描述不能为空').show();
        } else {
            $description.parent().removeClass('has-error');
            $description.next().hide();
        }
    });
});

更新商品类别的功能实现

同样的,我们可以更新一个商品类别,步骤如下:

  1. 在前端页面中显示表格并为每一行的编辑按钮提供一个URL路径,该路径与后台的Action层中的方法相对应。

  2. 在后台的Action层中创建一个方法来处理该请求,并将表单数据传递给Service层进行处理。

@RequestMapping("/edit/{id}")
public String edit(@PathVariable int id, Model model) {
    Category category = categoryService.findById(id);
    model.addAttribute("category", category);
    return "category/edit.jsp";
}
  1. 在前端页面中使用JavaScript和JQuery实现实时验证表单,并在提交表单前显示验证结果。
$(document).ready(function() {

    $('#editCategoryForm').submit(function(event) {

        // 阻止表单提交
        event.preventDefault();

        // 验证表单
        var isValid = true;
        var $name = $('#name');
        var $description = $('#description');

        // 验证名称
        if ($name.val().trim() == '') {
            $name.parent().addClass('has-error');
            $name.next().text('名称不能为空').show();
            isValid = false;
        }

        // 验证描述
        if ($description.val().trim() == '') {
            $description.parent().addClass('has-error');
            $description.next().text('描述不能为空').show();
            isValid = false;
        }

        // 如果表单合法,提交表单
        if (isValid) {
            this.submit();
        }
    });

    // 失去焦点时验证
    $('#name').blur(function() {
        var $name = $(this);
        if ($name.val().trim() == '') {
            $name.parent().addClass('has-error');
            $name.next().text('名称不能为空').show();
        } else {
            $name.parent().removeClass('has-error');
            $name.next().hide();
        }
    });

    $('#description').blur(function() {
        var $description = $(this);
        if ($description.val().trim() == '') {
            $description.parent().addClass('has-error');
            $description.next().text('描述不能为空').show();
        } else {
            $description.parent().removeClass('has-error');
            $description.next().hide();
        }
    });
});

以上就是添加和更新商品类别功能的实现攻略。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:SSH框架网上商城项目第9战之添加和更新商品类别功能实现 - Python技术站

(0)
上一篇 2023年6月15日
下一篇 2023年6月15日

相关文章

  • javascript中undefined与null的区别

    来详细讲解一下 JavaScript 中 undefined 与 null 的区别。 概述 JavaScript 中的 undefined 和 null 都是表示值的不存在或无效。它们两者很相似,但又有所不同。下面我们来逐个解释。 undefined undefined 代表某个变量未被定义,或者存在但没有被赋值。在以下三种情况中,变量的值将默认为 unde…

    Java 2023年5月26日
    00
  • Spring JDBC的使用详解

    下面我来介绍一下Spring JDBC的使用详解攻略。 前置条件 在使用Spring JDBC之前,需要保证以下条件得到满足: 首先需要添加Spring JDBC相关的依赖包,如spring-jdbc。 在应用程序的配置文件中,需要配置数据源。这里以MySQL数据源为例,配置好数据源的连接信息,并在配置文件中声明数据源的bean。 Spring JDBC的基…

    Java 2023年5月20日
    00
  • Spring Security学习笔记(一)

    下面是对”Spring Security学习笔记(一)”的详细讲解: 简介 本文主要介绍了Spring Security框架的一些基础知识以及相关概念的解释。包括权限认证、授权、角色、资源等内容。文章采用了markdown格式,图文并茂,易于理解。 Spring Security简介 Spring Security是Spring框架的一个子项目,主要处理基于…

    Java 2023年5月20日
    00
  • java加密算法–MD5加密和哈希散列带秘钥加密算法源码

    下面我来详细讲解Java加密算法——MD5加密和哈希散列带秘钥加密算法源码的完整攻略。 MD5加密算法 概述 MD5(Message Digest Algorithm)是一种单向的哈希算法,可以将任意长度的数据加密成一个128位的二进制串。MD5算法将数据经过多次非线性函数变换和数据干扰后,生成一个唯一的128位散列码,具有很高的安全性,被广泛应用于数据的完…

    Java 2023年5月19日
    00
  • springboot日志切面通用类实例详解

    下面我来为您详细讲解“springboot日志切面通用类实例详解”的完整攻略。 什么是日志切面通用类? 日志切面通用类是指可以在Spring Boot应用程序中用于切面编程的通用类库。通常,在实现日志记录时,我们需要在许多不同的类中编写类似的代码,这样会产生很多重复的代码。通过使用日志切面通用类,我们可以编写一些通用的代码并将其重用在整个应用程序中,这样可以…

    Java 2023年5月15日
    00
  • SpringBoot整合Swagger框架过程解析

    下面为您详细讲解“SpringBoot整合Swagger框架过程解析”的完整攻略。 什么是Swagger? Swagger是一个开源框架,旨在简化 RESTful Web 服务的开发和文档化,它可以生成能描述API的 JSON、HTML等文档。它包含了一些工具,可以帮助开发人员设计、构建、文档化和使用 RESTful Web 服务。 SpringBoot整合…

    Java 2023年5月19日
    00
  • 详解SpringBoot 快速整合MyBatis(去XML化)

    我来详细讲解“详解SpringBoot快速整合MyBatis(去XML化)”的完整攻略。 添加依赖 在 pom.xml 文件中添加如下依赖: <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-bo…

    Java 2023年5月20日
    00
  • 如何使用Java编译期注解?

    下面是关于“如何使用Java编译期注解”的完整使用攻略。 什么是编译期注解? 编译期注解是在Java编译期间处理的一种注解,它可以被编译器直接解释和处理。编译器可以识别和处理这些注解,并在编译期执行相应的操作。相比于运行时注解,编译期注解更加高效、可靠和安全。 如何使用Java编译期注解? 使用Java编译期注解需要按照以下步骤进行: 1. 定义注解类 首先…

    Java 2023年5月11日
    00
合作推广
合作推广
分享本页
返回顶部