【项目实战】---首页一级分类的显示

2023-05-16

在前面的博文中,小编主要简单的介绍了用户模块中的验证码程序是如何实现的,今天继续来介绍我们的项目,今天小编主要简单的介绍一下如何实现首页的一级分类的显示,比如小伙伴现在看的CSDN,如下所示,她的一级分类:


无论我们点击哪个页面,这些分类总是会出现,那么她到底是如何实现的呢?今天这篇博文,小编结合自己现在正在做的这个项目,总结一下如何实现首页一级分类的显示,希望可以帮助到有需要的小伙伴们,不足之处,小伙伴多多指教。
第一步、我们需要建立一个分类的表,以及向表中插入相关的数据,建表语句,如下所示:

CREATE TABLE `category` (  
  `cid` int(11) NOT NULL AUTO_INCREMENT,  
  `cname` varchar(255) DEFAULT NULL,  
  PRIMARY KEY (`cid`)  
) ENGINE=InnoDB AUTO_INCREMENT=11 DEFAULT CHARSET=utf8;


接着,我们在表里插入几条数据,小伙伴们,可以根据自己的情况,insert几条数据即可。
第二步、新建包action、dao、service、vo,如下所示:

第三步、在vo包里面新建类Category,编写相关代码,并且生成get和set方法,代码如下所示:

package cn.itcast.shop.category.vo;  
  
public class Category {  
      
    private Integer cid;  
    private String cname;  
    public Integer getCid() {  
        return cid;  
    }  
    public void setCid(Integer cid) {  
        this.cid = cid;  
    }  
    public String getCname() {  
        return cname;  
    }  
    public void setCname(String cname) {  
        this.cname = cname;  
    }  
      
  
}  


接着,在vo中新建一个Category.hbm.xml,编写相关代码,那么.hbm.xml作用是什么?实体与表的映射关系通过xml来描述的文件,在hibernate.cfg.xml中管理,在项目启动的守候加载到内存,hbm指的是hibernate的映射文件,映射文件也称为映射文档,用于向hibernate提供关于将对象持久化到关系数据库中的信息,持久化对象的映射定义可全部存储在同一个映射文件中,也可将每个对象的映射定义存储在独立的文件中,后一种方法较好,因为将大量持久化类的映射定义存储在一个文件中比较麻烦,建议采用每个类一个文件的方法来组织映射文档.使用多个映射文件还有一个优点:如果将所有映射定义都存储到一个文件中,将难以调试和隔离特定类的映射定义错误.映射文件的命名规则是,使用持久化类的类名,并使用扩展名hbm.xml.映射文件需要在hibernate.cfg.xml中注册,最好与领域对象类放在同一目录中,这样修改起来很方便.xxx.hbm.xml文件是hibernate中的映射文件,hbm表示是hibernate的关系映射文件,当然啦,我们也可以不这样写,只不过这样写规范一点。代码如下所示:

<?xml version="1.0" encoding="UTF-8"?>  
<!DOCTYPE hibernate-mapping PUBLIC   
    "-//Hibernate/Hibernate Mapping DTD 3.0//EN"  
    "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">  
      
<hibernate-mapping>  
    <class name="cn.itcast.shop.category.vo.Category" table="category">  
        <id name="cid">  
            <generator class="native"/>  
        </id>  
        <property name="cname"/>  
          
    </class>  
</hibernate-mapping>  


不要忘记了,需要在applicationContext中进行配置哦,如下所示:

<!-- 配置hibernate的映射文件 -->  
        <property name="mappingResources">  
            <list>  
                <value>cn/itcast/shop/category/vo/Category.hbm.xml</value>                
            </list>  
        </property>  


第三步、在action、dao、service中新建类,如下所示:


第四步、接着在applicationContext中配置,service和dao都交给spring进行管理,代码如下所示:

<!-- Service的配置 ===============================-->  
<bean id="categoryService" class="cn.itcast.shop.category.service.CategoryService">  
    <property name="categoryDao" ref="categoryDao"/>  
</bean>  
<!-- Dao的配置=================================== -->  
  
<bean id="categoryDao" class="cn.itcast.shop.category.dao.CategoryDao">  
    <property name="sessionFactory" ref="sessionFactory"/>  
</bean>  


第五步、接着,在service中注入Dao,如下所示:

package cn.itcast.shop.category.service;  
  
import java.util.List;  
  
import cn.itcast.shop.category.dao.CategoryDao;  
import cn.itcast.shop.category.vo.Category;  
  
/** 
 * 一级分类的业务层对象 
 * @author 丁国华 
 * 
 */  
public class CategoryService {  
      
    //注入CategoryDao  
    private CategoryDao categoryDao;  
  
    public void setCategoryDao(CategoryDao categoryDao) {  
        this.categoryDao = categoryDao;  
    }  
  
}  

第六步、我们开始编写业务逻辑代码,我们知道首页一级分类,所以应该是在IndexAction中注入一级分类的service,并提供set方法,代码如下所示:
package cn.itcast.shop.index.action;

import java.util.List;

import javax.swing.plaf.basic.BasicSliderUI.ActionScroller;

import cn.itcast.shop.category.service.CategoryService;
import cn.itcast.shop.category.vo.Category;

import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;
/**
 * 首页访问的Action
 * @author 丁国华
 *
 */

public class IndexAction extends ActionSupport {
	
	//注入一级分类的Service
	private CategoryService categoryService;
	
	public void setCategoryService(CategoryService categoryService) {
		this.categoryService = categoryService;
	}

}
第七步、接着,我们进行查询,在service中有一个查询的方法:

/**
 * 执行的访问首页的方法
 */
public String execute(){
	//查询所有一级分类集合
	List<Category> cList = categoryService.findAll();
	return "index";
}
接着,我们在categoryService中晚上这个方法,如下所示:

package cn.itcast.shop.category.service;

import java.util.List;

import cn.itcast.shop.category.dao.CategoryDao;
import cn.itcast.shop.category.vo.Category;

/**
 * 一级分类的业务层对象
 * @author 丁国华
 *
 */
public class CategoryService {
	
	//注入CategoryDao
	private CategoryDao categoryDao;

	public void setCategoryDao(CategoryDao categoryDao) {
		this.categoryDao = categoryDao;
	}

	//业务层查询所有一级分类的方法
	public List<Category> findAll() {
		return categoryDao.findAll();
	}
	
	
	

}
第八步、接着,编写dao里面的方法,代码如下所示:

package cn.itcast.shop.category.dao;

import java.util.List;

import org.springframework.orm.hibernate3.support.HibernateDaoSupport;

import cn.itcast.shop.category.vo.Category;

/**
 * 一级分类的持久层对象
 * @author Flower
 *
 */

public class CategoryDao extends HibernateDaoSupport {
	
	
	//Dao层的查询所有一级分类的方法
	public List<Category> findAll() {
		String hql ="from Category";
		List<Category> list = this.getHibernateTemplate().find(hql);
		return list;
		
	}

}
接着,我们需要将一级分类的数据显示到页面,怎么显示呢?我们可以通过值栈,我们可以把数据存到值栈里面,然后使用迭代标签,把数据显示到页面,这是一种方法,我们知道,一级分类呢,在每一个页面上都有,我们可以把他存入到session里面,后续的查询,我们可以不通过数据库进行查询,编写代码:
package cn.itcast.shop.index.action;

import java.util.List;

import javax.swing.plaf.basic.BasicSliderUI.ActionScroller;

import cn.itcast.shop.category.service.CategoryService;
import cn.itcast.shop.category.vo.Category;

import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;
/**
 * 首页访问的Action
 * @author Flower
 *
 */

public class IndexAction extends ActionSupport {
	
	//注入一级分类的Service
	private CategoryService categoryService;
	
	public void setCategoryService(CategoryService categoryService) {
		this.categoryService = categoryService;
	}


	/**
	 * 执行的访问首页的方法
	 */
	public String execute(){
		//查询所有一级分类集合
		List<Category> cList = categoryService.findAll();
		//将一级分类存到session里面
		ActionContext.getContext().getSession().put("cList",cList);
		return "index";
	}

}
接着,我们接着,在jsp页面进行迭代,如下所示:
<div class="span24">
	<ul class="mainNav">
		<li><a href="${ pageContext.request.contextPath }/index.action">首页</a> |</li>
		<s:iterator var="c" value="#session.cList">
			<li><a href="./蔬菜分类.htm"><s:property value="#c.cname"/></a> |</li>
		</s:iterator>

	</ul>
</div>
最后,我们来看一下效果,如下所示:

小编寄语:该博文,小编主要介绍了如何在项目中实现首页一级分类的显示,总的老说,实现思路是这个样子的:
1、首先,我们需要创建表,以及在表之中插入数据。
2、新建包action、dao、service、vo。
3、在vo里面新建类Category,编写代码,两个实体Integer cid和String cname,生成get和set方法。
4、在vo中新建一个Category.hbm.xml编写相关代码。
5、在applicationContext中配置hibernate映射,映射搞定。
6、分别在action、dao、service中新建类。
7、在applicationContext中进行配置,也就是service和dao都交给spring进行管理。
8、在service中注入dao,在applicationContext中进行注入,注入sessionFactory。
9、在service和dao中进行相应的配置。
好了,今天的分享到这里就要和小伙伴们说再见了,有没有舍不得呢,在下篇博文中,小编将继续介绍项目的相关知识,敬请期待。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【项目实战】---首页一级分类的显示 的相关文章

  • c++项目实战---->QT文件日志输出

    QT说明文档 xff08 输出详细日志 xff09 span class token macro property span class token directive keyword include span span class tok
  • ASR项目实战-数据

    使用机器学习方法来训练模型 xff0c 使用训练得到的模型来预测语音数据 xff0c 进而得到识别的结果文本 xff0c 这是实现语音识别产品的一般思路 本文着重介绍通用语音识别产品对于数据的诉求 对数据的要求 训练集 相关要求 xff0c
  • 一文速学-GBDT模型算法原理以及实现+Python项目实战

    目录 前言 一 GBDT算法概述 1 决策树 2 Boosting 3 梯度提升 nbsp 使用梯度上升找到最佳参数
  • C# 项目实战(经典)

    好久没写原创了 xff0c 今天心血来潮 xff0c 打算写一篇 xff0c 关于特定的知识点之前写过很多 xff0c 今天呢就写一篇综合性的偏应用的一个小的项目实战 01 重要的知识点 本篇内容基于CM框架编写 xff0c 涉及以下知识点
  • gitlab-ci.yml 项目实战

    gitlab ci yml 文件内容 image localhost 5000 wondershare ws builder latest Cache modules in between jobs cache key npm cache
  • C#项目实战——Windows计算器的制作【实例】

    参考 C 从入门到项目实践 边学习 边练习实现 Windows计算器的制作 此次练习的计算器应用软件在Visual Studio 2019编程环境中开发 是一个简单的窗体应用程序 实现简单的计算器功能 1 系统功能描述 Windows计算器
  • 【项目实战】Nginx配置Https证书

    一 背景说明 Nginx配置https证书是常规操作 xff0c Nginx支持crt 43 key或者pem证书格式 二 具体步骤 2 1 上传证书文件 进入Nginx配置文件夹的目录 xff0c 将这两个证书文件上传至服务器的某个路径中
  • 【项目实战】spring boot中使用webSocket

    spring boot中使用webSocket 文章目录 spring boot中使用webSocket引入依赖支持配置类接口类前端连接方式前端信息发送方式 引入依赖 需要在基础的spring boot web项目项目中添加下面一个依赖 x
  • 【项目实战】pytorch载入训练好的模型并进行可视化模型预测绘图

    main函数载入模型 xff0c 加载图片 xff0c 输出结果 xff1a span class token keyword if span name span class token operator 61 61 span span c
  • 基于pytorch神经网络的工业区域用电量预测 完整代码数据

    代码讲解 工业用电量预测 时间序列预测 基于pytorch神经网络的工业用电量预测 完整代码数据 哔哩哔哩 bilibili 本博客付完整代码数据 运行截图 pip install openpyxl i https pypi tuna ts
  • 【项目实战】C语言+easyX带你实现:找方块

    每天一个编程小项目 提升你的编程能力 程序介绍 该程序是仿照最近网上的找方块游戏编写的 虽然没有仿照的一模一样 但是也实现了他的一些功能 个人觉得可玩性还是挺高的 是一个不错的娱乐放松的游戏 编写简介 该游戏的编写还是挺容易的 可以大致分为
  • MySql 根据身份证号来判别所属省份年龄及性别

    一 背景 新项目要从别的系统迁移用户表信息 老的用户表里的数据有很多不规范的数据 需要通过表里的身份证号获取用户的省份 年龄 性别 二 获取方式 1 通过身份证号获取省份 SELECT CASE LEFT sfzh 2 WHEN 11 TH
  • 如何移植和使用QJson?

    一 QJson库的下载 下载链接 http qjson sourceforge net build 二 使用Qt4 8 Mingw编译QJson 1 解压QJson master压缩包 新建一个QJson目录 将QJson master中的
  • 【超详细】SSM框架项目实战

    相关资料网盘链接 CRM客户管理系统资料 提取码 0u04 P1 CRM阶段简介 web项目开发 如何分析 设计 编码 测试 形成编程思想和编程习惯 P2 CRM的技术架构 视图层 View 展示数据 跟用户交互 html css js j
  • 实战项目:图书管理系统介绍

    本文详细的介绍了实战项目之一的图书管理系统 下载后可以直接使用 也可以直接用于毕业设计 本系统前端使用的框架是vue2 elementUI 后端使用的框架为springboot mybatis maven 数据库使用的是myql数据库 安全
  • MQTT在Android端的使用详解以及MQTT服务器搭建、Paho客户端使用

    前言 最近的项目中使用了MQTT来接收后端推送过来的一些数据 这篇文章来介绍下Android端如何集成使用 关于MQTT相关介绍将不再阐述 由于光写代码不实践的接收下数据很难验证我们写的是否正确 所以我将简单介绍下如何配置个MQTT服务端
  • 基于Tensorflow搭建卷积神经网络CNN(花卉识别)保姆及级教程

    项目介绍 TensorFlow2 X 搭建卷积神经网络 CNN 实现人脸识别 可以识别自己的人脸哦 搭建的卷积神经网络是类似VGG的结构 卷积层与池化层反复堆叠 然后经过全连接层 最后用softmax映射为每个类别的概率 概率最大的即为识别
  • 【项目实战】C语言+easyX带你实现:数字拼图游戏!来试试吧~

    每天一个编程小项目 提升你的编程能力 这是一个简易的拼图游戏 一共有 15 个数字方块 将其一行行的排列为 1 15 即可完成 游戏会记录下完成拼图的时间 我想说的是 很多时候 精彩的游戏不一定非要用图片 将游戏的功能和手感都做好 游戏一样
  • SHA-256算法实现过程

    整理一下SHA 256的实现步骤 1 定义8个32位常量 h0 0x6a09e667 h1 0xbb67ae85 h2 0x3c6ef372 h3 0xa54ff53a h4 0x510e527f h5 0x9b05688c h6 0x1f
  • 数据库CPU满载如何处理

    当数据库CPU满载时 我们首先要做的是让CPU降下来 优先保证系统的可用性 什么情况会导致数据库CPU飙升呢 QPS过高 高并发 也就是数据库承载的流量过大 慢SQL 少量或大量慢SQL占用CPU资源 拖垮了数据库 这类慢sql通常表现为

随机推荐

  • 算术移动和逻辑移动

    算术左移 逻辑左移 算术右移 逻辑右移有什么不同 算术左移 xff1a 末尾添0 xff1b 逻辑左移 xff1a 末尾添0 xff1b 算术右移 xff1a 左端最低位填充 xff1b 逻辑右移 xff1a 左端添0 算术左移和算术右移主
  • 素数的验证范围到数的开方

    假设范围大于数的开方 xff0c 则另个数必定小于数的开方 若两个数都大于数的开方 xff0c 则相乘必定大于这个数 所以只需要验证2到这个数的开方范围内就可以
  • CPU时间

    CPU时间 xff08 进程时间 xff09 xff1a 用户CPU时间 43 系统CPU时间 用户CPU时间 xff1a 用户态进程执行时间 系统CPU时间 xff1a 内核态进程执行时间 时钟时间 xff08 墙上时钟时间 xff09
  • 硬中断、软中断和信号

    硬中断是外部设备对CPU的中断 xff0c 软中断是中断底半部的一种处理机制 xff0c 信号则是由内核 xff08 或其他进程 xff09 对某个进程的中断 硬中断是由外部事件引起的因此具有随机性和突发性 xff1b 软中断是执行中断指令
  • CMakeLists.txt----一点儿自己的经验教训

    被CMakeLists txt坑过数次 xff08 大多是被自己蠢哭 xff09 xff0c 把用过的命令稍微记一下 注意 xff1a 中文空格等什么诡异字符 xff0c 链接库的名字不要忘记 xff0c 不要写错 好记性不如烂键盘 xff
  • docker命令之push

    1 背景 NAME docker push Push an image or a repository to the registry SYNOPSIS docker push NAME TAG DESCRIPTION Push an im
  • C标准库源码解剖(4):字符串处理函数string.h和wchar.h

    string h中包含了所有的字符串处理函数 xff0c 也包含了内存处理函数 xff0c 因为这些内存处理函数 xff08 如比如 复制 搜索 xff09 的功能与字符串处理函数功能类似 我们是用通用指针来指向内存块的 xff0c 通用指
  • VS 2019 + Clang-Format

    VS 2019配置Clang Format Clang Format选项 span class token comment 语言 None Cpp Java JavaScript ObjC Proto TableGen TextProto
  • C语言bmp图片读取写入

    一 介绍 bmp是我们常用的一种图片格式 xff0c 这里用c语言写一个程序打开 xff0c 读取像素点然后增亮 增亮公式 y 61 kx 43 b 这里用的24位的真彩bmp图片 二 实现 img bmp c span class tok
  • 树莓派设置wifi自动连接

    1 sd卡烧录好镜像 2 在boot目录创建 wpa supplicant conf 内容 span class token assign left variable ctrl interface span span class token
  • 电路城 电路方案 51单片机开发板(原理图+PCB+学习程序源文件)

    1 89C52单片机 xff0c 支持USB口或者是串口两种下载程序方式 xff1b 2 6位数码管 xff08 做动态扫描及静态显示实验 xff09 3 8位LED发光二极管 xff08 做流水灯实验 xff09 4 MAX232芯片RS
  • 信息系统开发与管理

    信息化是这个时代的主旋律 xff0c 如何执她之手 xff0c 跟上她的节拍 xff0c 不掉队 xff0c 我相信 xff0c 聪明的读者 xff0c 你的答案一定跃然于心底 一本 信息系统开发与管理 xff0c 结合学生信息管理系统 x
  • 在与SQL Server建立连接时出现与网络相关的或特定于实例的错误

    向往前一样 xff0c 学习牛腩新闻发布系统的视频 xff0c 敲代码 xff0c 打开数据库 xff0c 出现一个框框 xff0c 详细内容如下 xff1a 数据库连接不上 xff0c 所有的工作都要歇班 xff0c 捣鼓了会儿 xff0
  • Sql Server服务远程过程调用失败

    由于开发系统 xff0c 需要vs版本统一 xff0c 于是经过了昨天一整天艰苦卓绝的斗争 xff0c 小编终于成功的写在了13版本的vs xff0c 重新装上了12版本的vs xff0c 本来想着 xff0c 12版本的vs搭建成功了 x
  • Android仿淘宝购物车demo

    夏的热情渐渐退去 xff0c 秋如期而至 xff0c 丰收的季节 xff0c 小编继续着实习之路 xff0c 走着走着 xff0c 就走到了购物车 xff0c 逛过淘宝或者是京东的小伙伴都知道购物车里面的宝贝可不止一件 xff0c 对于爱购
  • Android Demo---实现从底部弹出窗口

    在前面的博文中 xff0c 小编简单的介绍了如何制作圆角的按钮以及圆角的图片 xff0c 伴着键盘和手指之间的舞步 xff0c 迎来新的问题 xff0c 不知道小伙伴有没有这样的经历 xff0c 以App为例 xff0c 点击头像的时候 x
  • 浅谈如何带领好一个团队

    实习回来之后 xff0c 小编接手了一个新的项目 xff0c 市委组织部考核项目 xff0c 听着有没有很高大上 xff0c 因为这个项目是给国家机关做的 xff0c 跟他们打交道 xff0c 小编的心情只能用两个字来形容 xff0c 呵呵
  • 为什么说slam技术不等于智能导航?

    在机器人智能移动中 xff0c SLAM发挥了无可比拟的作用 xff0c SLAM simultaneous localization and mapping 也称为CML Concurrent Mapping and Localizati
  • 情不知所起,一“网”而深

    你只看到我的程序 xff0c 却没有看到背后的代码 xff1b 你有你的选择 xff0c 我有我的坚持 xff1b 你嘲笑我假期过节不回家陪父母 xff0c 我可怜你只在家向父母衣食伸手 xff1b 你可以轻视我的道路 xff0c 我会证明
  • 【项目实战】---首页一级分类的显示

    在前面的博文中 xff0c 小编主要简单的介绍了用户模块中的验证码程序是如何实现的 xff0c 今天继续来介绍我们的项目 xff0c 今天小编主要简单的介绍一下如何实现首页的一级分类的显示 xff0c 比如小伙伴现在看的CSDN xff0c