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日

相关文章

  • 没有外网IDEA离线使用maven仓库的方法

    请看以下攻略: 问题背景 在没有外网的情况下,我们在使用 IDEA 进行开发时,如何使用 Maven 的依赖包? 解决方案 1. 下载 Maven 仓库依赖包 在有外网的环境下,打开 IDEA,新建一个空项目,在 pom.xml 文件中添加需要的依赖,然后将项目打包,此时 Maven 会将依赖包下载到本地仓库(默认路径为用户目录下的 .m2 目录)中。将本地…

    Java 2023年5月20日
    00
  • Java的final修饰符

    final 实例域 可以将实例域定义为 final。对于 final 域来说,构建对象时必须初始化 final 实例域,构造对象之后就不允许改变 final 实例域的值了。也就是说,必须确保在每一个构造器执行之后,final 实例域的值被设置,并且在后面的操作中,不能够再对 final 实例域进行修改。 例如,可以将 Employee 类中的 name 域声…

    Java 2023年4月25日
    00
  • SpringMVC配置404踩坑记录

    SpringMVC配置404踩坑记录 在使用SpringMVC开发Web应用程序时,我们经常会遇到404错误。本文将介绍如何在SpringMVC中配置404错误,并提供两个示例说明。 步骤一:配置web.xml 首先,我们需要在web.xml文件中配置SpringMVC的DispatcherServlet。可以通过添加以下配置来实现: <servlet…

    Java 2023年5月17日
    00
  • java导出生成word的简单方法

    下面我将详细讲解“Java导出生成Word的简单方法”。本攻略分为以下几个部分:环境准备、添加依赖、生成Word文档、示例说明、常见问题解决。 环境准备 在开始之前,需要准备以下环境: JDK1.8以上 Maven IDEA或Eclipse等开发工具 添加依赖 Java生成Word文档需要使用到Apache POI和docx4j两个依赖,将以下代码添加到po…

    Java 2023年5月26日
    00
  • Java 网络编程 —— ServerSocket 详解

    构造 ServerSocket ServerSocket 的构造方法有以下几种重载形式 ServerSocket() throws IOException ServerSocket(int port) throws IOException ServerSocket(int port, int backlog) throws IOException Serve…

    Java 2023年5月2日
    00
  • MyBatis的通俗理解:SqlSession.getMapper()源码解读

    下面是“MyBatis的通俗理解:SqlSession.getMapper()源码解读”的完整攻略。 一、背景介绍 在MyBatis中,SqlSession.getMapper()方法是一个非常重要的方法,可以获取到Mapper接口的代理对象,从而进行数据库操作。但是,为什么可以用一个接口进行数据库操作呢?这就需要了解一下MyBatis的动态代理机制。 二、…

    Java 2023年5月20日
    00
  • 详解Spring Security如何在权限中使用通配符

    要在Spring Security中使用通配符进行权限管理,需要结合使用Ant风格的路径匹配模式和正则表达式。 首先,在WebSecurityConfigurerAdapter的configure(HttpSecurity http)方法中,我们可以使用Ant风格的路径匹配模式进行权限配置,例如: http.authorizeRequests() .antM…

    Java 2023年5月20日
    00
  • Spring JdbcTemplate实现添加与查询方法详解

    下面我将详细讲解“Spring JdbcTemplate实现添加与查询方法详解”的完整攻略。 1.介绍 Spring JdbcTemplate是Spring框架中提供的一种使用JDBC进行数据库操作的工具类,它可以简化JDBC的操作,使代码更加简洁易读。Spring JdbcTemplate支持连接池技术,可以很好地处理并发请求。本攻略将详细介绍Spring…

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