java web 评论及回复系统

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java web 评论及回复系统相关的知识,希望对你有一定的参考价值。

只是一个评论系统 类似论坛,但要结合三大框架,要在数据库里存储留言即回复,可查询,帮忙写一下思路, DAO Service及其 impl 要怎么写 action 怎么写 说说具体流程思路就可以,答得好可追加

因为用户和评论是一对多关系,首先需要两张表:1.用户表
2.评论表

struts获取前台传入的 用户名(或者登陆后从session获取)、评论时间、评论内容组成为类型为Comment的对象c,调用一个service层的方法service.save(Comment c)来进行事务处理(事务织入等在xml配置,简单的话也可以不配置)。
service层的方法为save(Comment c)
commentDao.save(c);//调用了数据访问层的save方法

dao层开始调用hibernate的save语句,将对象c持久化。

至于你说的impl,是基于抽象编程,降低耦合度。如serviceImpl类的方法要严格遵循service接口的方法体。
参考技术A 评论肯定是基于文章的,文章肯定有唯一的ID。
这样的话,可以让评论全部关联到这个ID上。

随便写写,代码不能运行,参考即可。
public class Comment Long id; Article article;//文章 User user;//用户 Date date;//时间 String content;//内容public class CommentService void addComment(Article article, User user, String content); void updateComment(Comment comment); void deleteComment(Comment commnet); List<Comment> findCommentByArticle(Article article); List<Comment> findCommentByUser(User user);public class AddCommentAction private Long articleId; private Long userId; private String content; public String execute() Article article = articleService.getArticle(articleId); User user = userService.getUser(userId); commentService.addComment(article, user, comment); return SUCCESS;
以上回答你满意么?追问

满意啊,这个回答我原来看过,这是你写的么??!

参考技术B 项目框架实现SSH,如果不会可上网找教程,有很多的。
DAO使用herbernet实现增删改查
service是接口,impl是接口的实现类。service调用dao的方法,可使用spring的注解,或者配置文件依赖注入,不懂可上网了解。action使用struts获取前台表单传入值,调用service方法,即可。
其中涉及的ssh框架知识可上网找教程慢慢了解。
记得采纳哦
参考技术C ssh -数据库 设计多对一 多条评论对应一条记录
bean 会写吧
dao 抽象类封装crud
impl 实现crud
service调用dao的方法
action就很简单了,只需要处理请求
注意的是要会写配置文件

Django使用Ajax实现页面无刷新评论回复功能

虽然Django本身自带Form可以提交表单,但在Django中结合Jquery使用Ajax,可以让Django开发的应用发挥更好的用户体验,同时可以降低服务器的负担。普通提交表单方式需要刷新整个页面才可以将评论显示出来,而使用Ajax提交评论之后,可以在页面无刷新的情况下显示出来。

首先是model:

class Replay(models.Model):
content = models.TextField()
post = models.ForeignKey(Post)
replay_time = models.DateTimeField(u‘回复时间‘,editable=False)
replay_user = models.CharField(max_length=30,editable=True)
def __unicode__(self):
return self.replay_time

 

客服端Form表单:

<form id="user_content" method = ‘post‘ enctype="multipart/form-data">
<textarea cols="40" id="id_content" name="content" rows="10"></textarea>
<input id=‘put‘ type="submit" value = "提交" />
</form>

表单很简单,只列出了核心代码。

关键部分,提交评论的JS代码:

<script>
$(function() {
$("#user_content").submit(function(){
var content = $("#id_content").val();
$.ajax({
type:"post",
dataType:"json",
url:"/replays/{{post_id}}/",
data: {
‘content‘: content,
},
success: function(data){
$(‘#user_content‘)[0].reset();
var newcomment = "<li class=\"contents\">" +
"<div class=\"name\">你:</div>"+
"<div class=\"neir\">"+"<p>"+data.content+"</p>"+"</div>"+
"<div class=\"geceng\"></div>"+
"<div class=\"time\">回复时间:刚刚</div>"+
"<div class=\"geceng\"></div>"+
                                  "</li>"

$(".con").append(newcomment);
}
});
return false;
});
});

</script>

 

Django的模板:

<div id = "comm">
<ul class = ‘con‘>
{% for replay in replays %}
<div class=‘cont‘>
<div class=‘contents‘>
<div class=‘name‘>
{%if replay.replay_user %}
{{replay.replay_user}}:</br>
{%else%}
匿名:</br>
{%endif%}
</div>
<div class=‘neir‘>
<pre>{{ replay.content }}</pre>
</div>
<div class=‘time‘>
回复时间:{{replay.replay_time|date:"Y-m-d"}}
</div></div></div>
{% endfor %}
</ul>
</div>

其中class = ’con’ 这个类,我的目的就是在这个类下面添append一个div,这个div里面的内容就是最新评论的内容。

Django的views;

@csrf_exempt
def replays(req,post_id):
if req.is_ajax():
content = req.POST.get(‘content‘,None)
if content:
item=Post.objects.get(id=post_id)
Replay.objects.create(content=content,post=item,replay_time=datetime.datetime.today(),replay_user= req.COOKIES.get(‘username‘,‘‘))#将评论写进数据库
return HttpResponse(json.dumps({"content":content}))
else:
form = ReplayForm()
post_id=post_id
replays = Post.objects.get(id=post_id).replay_set.all()#一条帖子的所有评论
num = int(len(replays))
title = Post.objects.get(id=post_id).title
content = Post.objects.get(id=post_id).content
username = req.COOKIES.get(‘username‘,‘‘)
return render_to_response(‘replays.html‘,{
‘content‘:content,
‘post_id‘:post_id,
‘num‘:num,
‘title‘:title,
‘replays‘:replays,
‘username‘:username,
‘form‘:form,
},context_instance=RequestContext(req))

整个Ajax的流程是这样的:

    1. 用户在Textarea里面输入内容,然后点击提交按钮,触发submit事件,触发return false,页面禁止刷新。

    2. 之后获取Textarea里面的内容传给变量content。

    3. 然后就是传送数据,在ajax函数里面定义传输的方式:post,数据类型:json,url(这里填写的url要对应到相应的views函数),data我这里面只有content。

    4. ajax传送到服务器端,然后服务器端进行接收,这里replays函数将content存储在数据库中,然后返回一个HttpResponse响应,里面content作为json数据类型。

    5. 这时ajax执行success:$(‘#user_content‘)[0].reset()是将表单内容清空,防止用户重复提交表单,我将回复的内容赋值给变量newcomment,这是一个html的语句,$(".con").append(newcomment):我将这个html语句写在一个指定的位置,就实现了页面无刷新提交。

整个过程就是这样的。

 

转自:http://www.mamicode.com/info-detail-473954.html

以上是关于java web 评论及回复系统的主要内容,如果未能解决你的问题,请参考以下文章

Java单表实现评论回复功能

myql 查询树形表结果:说说说说的述评评论的回复

模仿qq空间或朋友圈发布动态评论动态回复评论删除动态或评论的功能(上)

JAVA设计评论列表数据格式

JAVA设计评论列表数据格式

评论系统的实施(Facebook赞)