关键词:
本节主要解决在详情页根据文章ID查找文章内容的问题。
1.根据ID查询文章数据
在上一节中,我们已经成功在detail.jsp页面获取到了来自index.jsp的文章ID。
那么,最容易想到的办法,就是直接在detail.jsp页面通过Java代码,直接查询出对应的文章数据,然后放到页面作用域就OK了。
代码:
<%
String id = request.getParameter("id");
System.out.println(id);
%>
随便在首页点击一篇文章,然后看一下效果:
果然,可以拿到首页传过来的ID了。
对应的服务程序
我们直接调用这个方法。
额,不对,等等,这个方法好像有点问题,我当初怎么会这么写来着?
因为文章的ID是唯一的,一个ID肯定对应一篇特定的文章。另外,我们不仅仅要查询文章内容,还需要文章的发布时间和分类等信息。
改一下:
/**
* 通过文章id获取文章内容
* @param id
* @return
*/
public Map<String,Object> getContentByArticleId(String id){
String sql = "select * from t_article a inner join t_category b on a.category_id = b.category_id where a.id = ?";
return DataBaseUtils.queryForList(sql,id).get(0);
}
好吧,小细节不用在意。
继续,有了后台方法,就相当于稳定了大后方。接着我们就可以直接在jsp页面调用这个后台方法了。
<%
String id = request.getParameter("id");
Map<String,Object> map = articleService.getContentByArticleId(id);
pageContext.setAttribute("article", map);
%>
内容区的数据也要全部换成动态的:
<!-- 内容区 -->
<div class='article'>
<div class='title'>${article.name}</div>
<div class='category'><span class='light-font'>分类:</span><span class='info'>${article.category_name}</span></div>
<div class='publicDate'><span class='light-font'>发布时间:</span><span class='info'>${article.create_time}</span></div>
<hr/>
<div class='content'>
${article.content}
</div>
</div>
然后,重启tomcat,在首页随便点开一篇文章,就能看到效果了。
这些数据已经不是静态的了,而是从数据库里面查询出来的。
2.评论功能后台业务实现
文章的信息查询已经没问题了,接下来,就是评论功能了,我们先把评论的后台方法都写好。
2.1 保存评论
有了之前章节的基础,这一步应该是比较简单了。首先,建立JavaBean。
package bean;
import annotation.Column;
import annotation.Table;
@Table(tableName = "t_comment")
public class Comment {
@Column(type = "varchar(100)" ,field = "id" ,primaryKey = true ,defaultNull = false)
private String id; //主键,采用UUID
@Column(type = "VARCHAR(100)", field = "user_id")
private String userId; //评论者的ID
@Column(type = "VARCHAR(600)", field = "content")
private String content; //评论内容
@Column(type = "VARCHAR(100)", field = "article_id")
private String articleId; //文章ID
@Column(type = "datetime", field = "create_time")
private String createTime;//创建时间
@Column(type = "timestamp", field = "update_time")
private String updateTime;//最后更新时间
@Column(type = "int(1)", field = "is_delete")
private Integer isDelete; // 删除状态 0未删除 1删除
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getUserId() {
return userId;
}
public void setUserId(String userId) {
this.userId = userId;
}
public String getContent() {
return content;
}
public void setContent(String content) {
this.content = content;
}
public String getCreateTime() {
return createTime;
}
public void setCreateTime(String createTime) {
this.createTime = createTime;
}
public String getUpdateTime() {
return updateTime;
}
public void setUpdateTime(String updateTime) {
this.updateTime = updateTime;
}
public Integer getIsDelete() {
return isDelete;
}
public void setIsDelete(Integer isDelete) {
this.isDelete = isDelete;
}
public String getArticleId() {
return articleId;
}
public void setArticleId(String articleId) {
this.articleId = articleId;
}
}
然后是评论服务类:
先是保存评论的方法:
/**
* 保存评论
*/
public void saveComment(Comment comment){
String sql = "insert into t_comment(id,user_id,content,article_id,create_time,is_delete) values(?,?,?,?,?,?)";
DataBaseUtils.update(sql,comment.getId(),comment.getUserId(),
comment.getContent(),comment.getArticleId(),new SimpleDateFormat("yyyy-MM-dd hh:mm:ss").format(new Date()),0);
}
测试:
测试的话,我们给《JavaScript闭包详解》这篇文章,添加一条张三的评论吧。
CommentService cs = new CommentService();
Comment comment = new Comment();
comment.setId(UUID.randomUUID().toString());
comment.setContent("很不错的文章,赞一个!");
comment.setArticleId("fb6b70ea-4023-45a3-9106-561649803805");
comment.setUserId("319600c3-550a-4f9f-80cf-deebe2376528");
cs.saveComment(comment);
System.out.println("保存成功!");
System.out.println(DataBaseUtils.queryForList("select a.content from t_comment a left JOIN t_user b "
+ "on a.user_id = b.id where a.article_id = 'fb6b70ea-4023-45a3-9106-561649803805'"));
先保存一条数据,然后再把评论信息查询出来。
效果:
这样就OK了。
2.2 查询评论
然后是查询评论的方法:
/**
* 根据文章id查询它的所有评论
* @param id
* @return
*/
public List<Map<String,Object>> getCommentsByArticleId(String id){
return DataBaseUtils.queryForList("select b.username ,a.content from t_comment a left JOIN t_user b " +
"on a.user_id = b.id where a.article_id = ?", id);
}
测试:
CommentService cs = new CommentService();
System.out.println(cs.getCommentsByArticleId("fb6b70ea-4023-45a3-9106-561649803805"));
效果:
嗯,差不多可以了。
系统v5.3.0文章推荐升级,系统后台优化
魔众文章系统致力于文章管理系统,坚持做最简单最好用的文章管理软件,让您在最短的时间内就可以上手并建成一个功能强大的网站。魔众文章系统发布v5.3.0版本,新功能和Bug修复累计20项,文章推荐升级,... 查看详情
魔众文章系统v4.0.0升级modstart,系统重构
倾情打造社交+创作兴趣部落魔众文章系统发布v4.0.0版本,新功能和Bug修复累计20项,升级ModStart,系统重构。2021年08月11日魔众文章系统发布v4.0.0版本,增加了以下20个特性:·[新功能]增加友情链接功能·[新... 查看详情
魔众文章投稿系统v1.1.0页面seo优化,系统升级调整
魔众文章投稿系统魔众文章投稿系统发布v1.1.0版本,新功能和Bug修复累计10项,页面SEO优化,系统升级调整。2021年12月08日魔众文章投稿系统发布v1.1.0版本,增加了以下10个特性:·[新功能]升级页面登录内容优... 查看详情
简单文章管理系统
花了一天的时间,对文章系统于2016-10-29进行了优化。并把Kindeditor编辑器换成了ueditor编辑器。改变了一些布局美化一些布局,和样式的调整管理中心的新建文件可以创建基于Quartz的文章。在指定时间发布但是ueditor的主题并不适... 查看详情
投稿系统v1.2.0默认文章封面内核升级优化
魔众文章投稿系统是一个多用户文章管理系统,支持用户文章投稿、文章审核,通过评论、打赏等模块可以轻松支持多种用户营销功能。魔众文章投稿系统发布v1.2.0版本,新功能和Bug修复累计13项,默认文章封面... 查看详情
如何同时实现论坛和文章管理系统
】如何同时实现论坛和文章管理系统【英文标题】:howtoimplementaforumandarticlemanagementsystemtogether【发布时间】:2011-04-2018:40:13【问题描述】:我想创建一个关于野生动物的文章管理系统,并希望有一个与每篇文章相关的论坛。我该... 查看详情
魔众文章系统v5.1.0任务调度增强,一键切换行业站
倾情打造社交+创作兴趣部落魔众文章系统发布v5.1.0版本,新功能和Bug修复累计8项,任务调度增强,一键切换行业站。2021年11月07日魔众文章系统发布v5.1.0版本,增加了以下8个特性:·[新功能]权限系统全新... 查看详情
weblogic洞若观火第8篇之发布应用系统
引言上一篇文章,主要讲解:常用的开发工具、安装开发工具、编写一套最简单的java应用系统。在前面的文章中,我们已经将把:weblogic安装、手工建域、管理节点、集群都操作、开发java应用系统等技术,都涉及到了!此篇文... 查看详情
e05:后台管理系统开发-添加文章页面ui制作(代码片段)
ReactHooks+Laravel后端博客实战阐述创建增加文章页面新建`admin\\src\\Pages\\AddArticle.js`新建`admin\\src\\static\\css\\AddArticle.css`编写标题和文章内容区域编辑`admin\\src\\Pages\\AddArticle.js`暂存按钮和发布按钮编写文章简介部分编写发布时间界... 查看详情
java精品项目源码第127期新闻发布网站系统
...s实现的值得推荐的新闻发布网站管理系统,演示视频文章末尾公众号对号查询观看即可文章目录Java精品项目源码第127期新闻发布网站系统难度指数(中高等)一、项目运行1.运行环境2.截图难度指数 查看详情
csdn博客系统
...流、动态发布。用户之间相互关注,当被关注放发布文章时,会将这篇文章推送给关注方,因为本身就是一个小项目,在实现方面就选择了适合小规模场景的RabbitMQ,为了保证系统的可用性,搭建了MQ镜像... 查看详情
基于springboot的个人博客系统(源码+数据库)
...、开发技术三、开发环境四、页面展示1.登录页面2.首页3.文章详情页面4.文章评论页面5.后台页面6.后台文件编辑页面7.后台文章管理列表页面五、文件组织结构六、数据库设计1. 文章详情表t_article2.文章评论表t_comment3.文章... 查看详情
微信啥小程序可以发公告文章
1、“公示”小程序:可以在公众号中发布公告文章,支持文字、图片、视频、文件。2、“新闻发布”小程序:可以在公众号中发布新闻文章,支持文字、图片、视频等多种格式,支持自定义样式,快速发布新闻文章。3、“小程... 查看详情
基于php和mysql的新闻发布系统——功能优化(代码片段)
前言2023年第一篇文章,祝大家在新的一年里“卯”足干劲,在技术上“兔”飞猛进!上一篇文章基于PHP和MySQL的新闻发布系统给大家介绍了制作一个新闻发布系统的主要功能的实现,在文章的末尾还提出了一些需... 查看详情
在发布前批准对实体的修改
...已经在工作,因此该部分并不重要。假设我们有一个描述文章的模型,带有标题和正文。普通用户可以修改所有字段,但在文章发布之前,必须得到管理员的批准。 查看详情
系统优化设计笔记--曹大公众号文章笔记
PS:以下整理内容发布至本人博客已通过曹大授权。如需转载,请注明出处。优化查询:核查语句慢的SQL和数据结构,分析慢的原因思考重点:1、数据结构:考虑数据容量与数据分布规律数据容量:几百万条,几千万条,几亿条... 查看详情
2020最新旅游景点展会美食节等推广文案域名防封系统
...要微信转发分享扩散的宣传推广活动。 防封原理1、文章内容和标题支持随时修改文章发布上线后,系统后台随时修改文章标题和内容,很多客户在文章发布后需要修改文章内容,系统支持随时修改。2、支持转发、分享时显... 查看详情
dede信息发布文章不需要审核方法
解决的方法:1、后台:系统设置->用户组设定->信息发布员权限给他加上“审核我发布的文档”这个权限,默认是没有这个权限的。当然上面的三个权限中的任何一个都可以。2、然后修改dede/templets/article_add.htm,把里... 查看详情