JavaWeb评论功能实现步骤及代码

2023-11-01

文章目录


前言

评论功能是后端要写常见的功能之一,一般性的网站也都会包含这一功能。像是购物网站、视频网站下方都会有用户评论的功能。

 

一、分析功能

首先要分析功能:1.用户登录点击商品后可查看所有普通用户的评论。

                             2.用户可以添加评论,发送到评论区。

                             3.用户可以删除该用户写的评论。(不能删除其他人的评论)

二、实现功能

1.建评论表

外键约束:user_id关联user表、motorcycle_id关联商品表(motorcycle)。

 然后创建实体类。

2.Dao层、service层核心代码实现

查询评论:

String sql="select c.id, c.user_id,c.motorcycle_id,c.motorcycle_comment,u.username from comment c left join user u on c.user_id=u.id where c.motorcycle_id=?";

添加评论: 

String sql = "insert into comment(user_id,motorcycle_id,motorcycle_comment) values(?,?,?)"

删除评论:

String sql = "delete from comment where id=?";

 service层直接调用,不做处理。

clist = cDao.getMotorcycleComment(motorcycleId);

 3.servlet层编写核心代码

将查询结果放到request域里。

List<Comment> clist=commentService.getMotorcycleComment(id);
//        for (Comment c:clist
//             ) {
//            System.out.println(c);
//        }
        request.getSession().setAttribute("MotorcycleId", id);
        request.setAttribute("clist", clist);

调用删除后重定向到详情页。 

 commentService.deleteComment(commentId);
        resp.sendRedirect("/motorcycle_detail?id="+motorcycleId);

添加也是,添加完后重定向到商品详情页。 

CommentService commentService=new CommentService();
        int userId= Integer.parseInt(req.getParameter("userId"));
        int motorcycleId= Integer.parseInt(req.getParameter("motorcycleId"));
        String motorcycleComment=req.getParameter("comment");

        commentService.addComment(userId,motorcycleId,motorcycleComment);
//        req.getRequestDispatcher("/motorcycle_detail?id="+motorcycleId).forward(req, resp);
        resp.sendRedirect("/motorcycle_detail?id="+motorcycleId);

 4.jsp核心代码

 


 三、展示效果图

效果查看

添加一条后

 数据库变化:新增一条信息

 点击删除:发现已经没有该评论。

 刷新数据库后:

 

总结

效果展示完成。实现起来不算难,但要明白其中的外键约束关系,明白其中的逻辑。代码不是很多,大家快练起来~

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

JavaWeb评论功能实现步骤及代码 的相关文章

  • 如何显示 RSpec 测试生成的 SQL 查询日志?

    我正在为我的 Rails 3 应用程序编写规范 我想测试数据库事务是否真的有效 如果能够看到我的应用程序在规范驱动下生成的 sql 查询 这将非常有帮助 有没有办法像在 Rails 控制台中一样查看查询 我正在使用 Rails 3 0 9
  • Java 小程序在 Mac 上闪烁

    这个问题很奇怪 问题并非在每个平台上都会发生 我在使用 MacOSX 的 Google Chrome 中出现了这种情况 但在 Safari 中却没有出现这种情况 对于使用 Windows 的朋友来说 在 Google Chrome 上运行得
  • If Else 条件的 SQLite 语法

    我正在使用 SQLite 数据库 我的表有一个名为 密码 的文本列 早些时候 为了检索我用来执行简单操作的值select from myTable询问 但现在的要求是 如果Password值不是NULL那么我需要将其显示为 是 或 否 它是
  • 使用 kryo 注册课程的策略

    我最近发现了 kryonet 库 它非常棒并且非常适合我的需求 然而 我遇到的一个问题是制定一种好的策略来注册所有可以转移的类 我知道我可以在每个对象中编写一个静态方法 该方法将返回它使用的所有类的列表 但我真的不想这样做 为了我自己的时间
  • 如何将此本机 SQL 查询转换为 HQL

    所以我有这个很长的复杂的 Native SQLQuery string hql SELECT FROM SELECT a rownum r FROM select f2 filmid f2 realisateurid f2 titre f2
  • Spring HATEOAS 和 HAL:更改 _embedded 中的数组名称

    我正在尝试使用 Spring HATEOAS 构建符合 HAL 的 REST API 经过一番摆弄后我终于开始工作了mostly正如预期的那样 示例 输出现在看起来像这样 links self href http localhost 808
  • 如何自动转换十六进制代码以将其用作 Java 中的 byte[]?

    我这里有很多十六进制代码 我想将它们放入 Java 中 而不需要向每个实体附加 0x 喜欢 0102FFAB 和我必须执行以下操作 byte test 0x01 0x02 0xFF 0xAB 我有很多很长的十六进制代码 有什么办法可以自动做
  • 膨胀类 android.support.design.widget.NavigationView 时出错

    我按照 NavigationView 的教程进行操作 但无法解决此错误消息 Error inflating class android support design widget NavigationView 教程链接 https www
  • 从复选框列表中选择循环生成的复选框中的一个复选框

    抱歉我的英语不好 在我的 ASP NET 网站上 我从 SQL 表导入软件列表 看起来像这样 但实际上要长得多 Microsoft Application Error Reporting br br Microsoft Applicatio
  • 如何限制两个表之间一对多关系中的多个数量?

    我有一个带有两个 MySql 表的 MySQL 数据库 第一个是第一个表 表 A 有一列具有唯一值 从值 从 1 到 n 在第二个表 2 表 B 中 我有两列 在第一个表中我有一个名称 在第二个我的值从 1 到 n 如果我在 中添加一个值
  • 避免 @Secured 注释的重复值

    我正在尝试使用以下方法来保护我的服务方法 Secured如下 public interface IUserService Secured ROLE ROLE1 ROLE ROLE2 ResponseEntity saveUser Creat
  • Java HashSet 是线程安全的只读吗?

    如果我通过 Collections unmodifyingSet 运行 HashSet 实例后 它是线程安全的吗 我问这个是因为 Set 文档声明它不是 但我只是执行读取操作 来自 Javadoc 请注意 此实现不是同步的 如果多个线程同时
  • 获取 Future 对象的进度的能力

    参考 java util concurrent 包和 Future 接口 我注意到 除非我弄错了 只有 SwingWorker 实现类才能启动冗长的任务并能够查询进度 这就引出了以下问题 有没有办法在非 GUI 非 Swing 应用程序 映
  • 开发者环境-如何调用/消费其他微服务

    背景 我的环境 Java Play2 MySql 我在 Play2 gt S1 S2 S3 上编写了 3 个无状态 Restful 微服务 S1 消耗来自 S2 和 S3 的数据 因此 当用户点击 S1 时 该服务会异步调用 S2 S3 合
  • java.lang.UnsatisfiedLinkError - android studio gradle 中的 NDK?

    文件夹结构 app main java jni Android mk Application mk hello jni c res 在构建 gradle apply plugin com android application androi
  • 为什么 java.util.Arraylist#clear 按照 OpenJDK 中的方式实现?

    http grepcode com file repository grepcode com java root jdk openjdk 6 b14 java util ArrayList java 473 http grepcode co
  • SQL Server 标识列值从 0 而不是 1 开始

    我遇到了一个奇怪的情况 数据库中的某些表的 ID 从 0 开始 即使 TABLE CREATE 的 IDENTITY 1 1 也是如此 对于某些表来说是这样 但对于其他表则不然 它一直有效到今天 我尝试过重置身份列 DBCC CHECKID
  • Java时区混乱

    我正在运行 Tomcat 应用程序 并且需要显示一些时间值 不幸的是 时间快到了 还有一个小时的休息时间 我调查了一下 发现我的默认时区被设置为 sun util calendar ZoneInfo id GMT 08 00 offset
  • 我怎样才能限定我不“拥有”的自动装配设置器

    要点是 Spring Batch v2 测试框架具有JobLauncherTestUtils setJob与 Autowired注解 我们的测试套件有多个Job类提供者 由于这个类不是我可以修改的东西 我不确定如何限定它自动连接的作业 每个
  • Postgresql:SERIAL 在约束 INSERT 失败时递增

    有一个像这样的简单表结构 CREATE TABLE test id INT PRIMARY KEY sid SERIAL 我注意到如果我尝试插入一行但它未通过约束测试 即主键约束 SERIAL计数器无论如何都会增加 所以下一次成功插入 si

随机推荐

  • 关于unity3d分享功能之ShareSDK的研究续二

    关于微信分享 前面的博客也是提到了 总有一下问题 有些注意的事项再一次总结一下 注意一 微信需要开发者认证审核通过app 这个时候会有AppID和AppSecret 把这个在脚本ShareSDKDevInfo cs中替换掉 注意在面板中一样
  • 学习QT的意义以及QT平台的安装

    文章目录 前言 一 为什么要学习QT 1 学习Qt的意义 2 Qt的一些应用案例 二 Qt软件的安装 1 Qt的下载 2 具体安装环节 总结 前言 Qt 是一个1991年由Qt Company开发的跨平台C 图形用户界面应用程序开发框架 它
  • 【分析】string中size与length

    结论 没有区别 length是因为沿用C语言的习惯而保留下来的 string类最初只有length 引入STL之后 为了兼容又加入了size 它是作为STL容器的属性存在的 便于符合STL的接口规则 以便用于STL的算法 具体解释 cplu
  • Nreal for Unity SDK 发布安卓参数设置

    Getting Started with NRSDK NRSDK 原文链接 Quickstart for Android NRSDK 1 7 0 documentationhttps nrealsdkdoc readthedocs io e
  • C#学习笔记 文件操作

    获得文件和文件夹信息 NET管理文件和文件夹信息的类有如下几个 Directory和File类是两个静态类 可以静态地获取文件和文件夹的信息而无需实例化对象 这在只对某个文件或者文件夹执行一次操作的时候是很有用的 Path也是一个静态类 为
  • 智慧城市大脑3.0白皮书:城市大协同,未来可持续。

    智慧城市大脑3 0白皮书 城市大协同 未来可持续 一 中国智慧城市建设真实现状 二 中国智慧城市建设的未来 三 智慧城市 脑3 0核 价值 四 2023年 lt 智慧城市解决方案全套 gt 大合集 一 中国智慧城市建设真实现状 中国智慧城市
  • 用了MQ消息中间件后,我开始后悔了...

    V xin ruyuanhadeng获得600 页原创精品文章汇总PDF 一 前情回顾 上篇文章 为什么要使用MQ消息中间件 这几个问题必须拿下 给大家讲了讲消息中间件引入系统架构的作用 主要是解决哪些问题的 其比较常见的实践场景是 复杂系
  • 家里Wifi网速突然变慢,一招瞬间提速

    家中网速突然变慢 通常是有人蹭你家的Wifi 不用担心 我教你一招瞬间提速 这个提速妙招的原理很简单 把你家的上网设备全部管起来 没加入的一律不让蹭网 接下来跟我一起实操 查看设备信息 我家的路由器是TP LINK 型号 TL WR886N
  • 门面模式

    类图 实现 HardDrive java package com facade public class HardDrive public byte read long lba int size byte bin null read ret
  • 成功解决:把python 3.9降到python3.8

    conda install python 3 8
  • yaml value中双引号转义

    aaa bbb 由于转义 aaa的值会被输出为bbb 若想输出为 bbb 需要改成 aaa bbb
  • python程序memory error_详解解决Python memory error的问题(四种解决方案)

    昨天在用用Pycharm读取一个200 M的CSV的过程中 竟然出现了Memory Error 简直让我怀疑自己买了个假电脑 毕竟是8G内存i7处理器 一度怀疑自己装了假的内存条 下面说一下几个解题步骤 一般就是用下面这些方法了 按顺序试试
  • STM32使用USART串口调试ULN2003驱动步进电机

    传送门 STM32控制ULN2003驱动步进电机28BYJ 48最基础版 使用串口调试步进电机28BYJ 48获得需要转速 当使用STM32控制ULN2003驱动步进电机28BYJ 48时 步进电机转速变化缓慢 想要得到合适的控制速度 需要
  • 数据库设计六阶段、数据库三范式

    要进行数据库设计首先要遵守范式 进行数据库设计时有六个阶段 下面依次介绍 遵从范式 前三范式 1NF 在关系数据库中 每张表的属性应该具有原子性 解决方法 将多余的属性拆分出来 2NF 在1NF基础上 实体的属性必须完全依赖主键 不能部分依
  • 跟我一起写 Makefile(三)

    跟我一起写 Makefile 三 主要内容 Makefile 总述 一 Makefile里有什么 二 Makefile的文件名 三 引用其它的Makefile 四 环境变量 MAKEFILES 五 make的工作方式 本文来自于CSDN陈皓
  • JavaScript必须熟悉知道的基础整理(一)

    1 我们可以在下列哪个 HTML 元素中放置 Javascript 代码 答
  • C++转换构造函数(隐式构造函数)

    写C 代码的时候 经常需要进行强制类型转换 比如 int a 1 float b float a 但是只限于基本数据类型 如下做法会报错 class Complex int a 1 Complex n Complex a 可以给class定
  • Vue基础入门

    什么是vue Vue是 渐进式框架 vue min js只包含了vue最核心的内容 例如 options api 数据处理 template模板视图的解析等操作 真实项目中我们还会根据需求 导入 vuex 实现公共状态管理 vue rout
  • EasyExcel渲染单个单元格.

    目录 业务逻辑 EasyExcel的pom依赖 EasyExcel的实体类 实现easyexcel的写入拦截器 Service层代码 可能讲解能力较差 但是代码全 不会掐头掐尾 看了很多文章代码只截取局部 导致看下来都是很 业务逻辑 要根据
  • JavaWeb评论功能实现步骤及代码

    文章目录 目录 文章目录 前言 一 分析功能 二 实现功能 1 建评论表 2 Dao层 service层核心代码实现 3 servlet层编写核心代码 4 jsp核心代码 三 展示效果图 总结 前言 评论功能是后端要写常见的功能之一 一般性