04_应用season框架为产品详情页增加评论功能

前端页面用静态HTML编写,嵌入JQuery和Ajax实现动态显示和提交评论。

以“发表评论”为例,season后台大致数据流动过程理解为:前端通过Ajax将评论comment的数据提交到Controller控制层,在控制层通过注解查找saveComment方法,方法中将评论对象实例化一个评论vo,依次通过工厂类ServiceFactory、服务层CommentService、工厂类DaoFactory到数据层CommentDao,通过save方法实现数据持久化。

1.IDEA中新建项目,并配置数据库

04_应用season框架为产品详情页增加评论功能_第1张图片
配置mysql.png
04_应用season框架为产品详情页增加评论功能_第2张图片
配置mysql.png

2.录入数据库信息连接数据库,用建表语句建表

04_应用season框架为产品详情页增加评论功能_第3张图片
录入数据库名等信息.png
04_应用season框架为产品详情页增加评论功能_第4张图片
连接数据库建表.png
  • 项目结构
04_应用season框架为产品详情页增加评论功能_第5张图片
工程结构.png

3.season后台:创建启动类

package com.main;
import com.season.core.spring.SeasonApplication;
import com.season.core.spring.SeasonRunner;
/** 
* Created by mwkang on 2016/12/19. 
* 启动类 
*/
public class App extends SeasonApplication {    
public static void main(String[] args) {        
SeasonRunner.run(App.class);   
}}

4.创建实体类

package com.vo;

import com.season.core.db.Pojo;
import com.season.core.db.annotation.Column;
import com.season.core.db.annotation.TableInfo;
import com.season.core.db.annotation.Transient;

import java.util.Date;

/**
 * Created by mwkang on 2016/12/19.
 * 实体类
 */
@TableInfo(tableName = Comment.tableName,pkName = "comment_id")
public class Comment extends Pojo{
    public static final String tableName = "comment";

    @Column(name = "comment_id")
    private int commentId;

    @Column(name = "product_name")
    private String productName;

    @Column(name = "comment_content")
    private String commentContent;

    @Column(name = "create_date")
    private String createDate;


    @Transient
    private String remark;

    public Comment(){}

    public String getRemark() {
        return remark;
    }

    public void setRemark(String remark) {
        this.remark = remark;
    }



    public int getCommentId() {
        return commentId;
    }

    public void setCommentId(int commentId) {
        this.commentId = commentId;
    }

    public String getProductName() {
        return productName;
    }

    public void setProductName(String productName) {
        this.productName = productName;
    }

    public String getCommentContent() {
        return commentContent;
    }

    public void setCommentContent(String commentContent) {
        this.commentContent = commentContent;
    }

    public String getCreateDate() {
        return createDate;
    }

    public void setCreateDate(String createDate) {
        this.createDate = createDate;
    }

    public Comment(int commentId, String productName, String commentContent, String createDate) {
        this.commentId = commentId;
        this.productName = productName;
        this.commentContent = commentContent;
        this.createDate = createDate;
    }

}

5.创建数据层

package com.dao;

import com.vo.Comment;
import com.season.core.db.Dao;
import org.springframework.stereotype.Repository;
import java.util.List;

/**
 * Created by DELL on 2016/12/19.
 * 数据层
 */
@Repository
public class CommentDao {
    //查询全部评论
    public List findAll(){
        return Dao.findAll(Comment.class);
    }

    //增加评论数据
    public void save(Comment vo){
        Dao.save(vo);
    }

    //删除评论数据
    public void delete(int commentId){
        Dao.deleteById(Comment.class,commentId);
    }

    //修改评论数据
    public void update(Comment vo){
        Dao.update(vo);
    }

}

6.服务层

package com.service;

import com.factory.DaoFactory;

import com.vo.Comment;
import java.util.List;

/**
 * Created by mwkang on 2016/12/19.
 * 服务层
 */
public class CommentService {
    public List findAll(){
        return DaoFactory.getCommentDAOInstance().findAll();
    }

    public void insert(Comment vo){
        DaoFactory.getCommentDAOInstance().save(vo);
    }

    public void delete(int commentId){
        DaoFactory.getCommentDAOInstance().delete(commentId);
    }

    public void update(Comment vo){
        DaoFactory.getCommentDAOInstance().update(vo);
    }


}

7.创建控制层

package com.controller;


import com.factory.ServiceFactory;
import com.vo.Comment;
import com.season.core.ActionKey;
import com.season.core.Controller;
import com.season.core.ControllerKey;

import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;

/**
 * Created by mwkang on 2016/12/19.
 * 控制层
 */
@ControllerKey("product")
public class CommentController extends Controller {

    //查询显示所有评论
    @ActionKey("findAllComments")
    public void findAllComments(){
        List all = ServiceFactory.getCommentServiceInstance().findAll();
        renderJson("comments",all);
    }

    //新增
    @ActionKey("saveComment")
    public void saveComment(){
        String content = getPara("comment");
        Comment vo = new Comment();
        vo.setCommentContent(content);
        vo.setProductName("computer");
        vo.setCreateDate(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date().getTime()));
                //new java.sql.Date(System.currentTimeMillis()));
        ServiceFactory.getCommentServiceInstance().insert(vo);
        renderJson();
    }

    //删除
    @ActionKey("delete")
    public void delete(){
        int id=getParaToInt("id");
        ServiceFactory.getCommentServiceInstance().delete(id);
    }

    //修改
    @ActionKey("update")
    public void update(){
        String changecontent = getPara("comment");
        Comment vo = new Comment();
        vo.setCommentId(getParaToInt("id"));
        vo.setCommentContent(changecontent);
        vo.setProductName("computer");
        vo.setCreateDate(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date().getTime()));
        ServiceFactory.getCommentServiceInstance().update(vo);
        renderJson();
    }


}

8.工厂类

  • DaoFactory
package com.factory;
import com.dao.CommentDao;
/** 
* Created by mwkang on 2016/12/19. 
* 工厂类 
*/
public class DaoFactory {    
public static CommentDao getCommentDAOInstance(){        
return new CommentDao();    
}}
  • ServiceFactory
package com.factory;
import com.service.CommentService;
/** 
* Created by DELL on 2016/12/19. 
* 工厂类 
*/public class ServiceFactory {    
public static CommentService getCommentServiceInstance(){       
 return new CommentService();    
}}

9.前端页面





    商品详情
    
    






冰箱

来源:来源 时间:时间



642升变频风冷对开门冰箱;优雅香槟金,时尚百搭;变频压缩机,节能静音;手机操控,智能饮食养生,低温净味系统



请发表您的评论:

10.http://localhost:8080/season/index.html 运行结果显示如下:

  • 首页
04_应用season框架为产品详情页增加评论功能_第6张图片
首页.png
  • 录入评论内容并点击发表按钮
04_应用season框架为产品详情页增加评论功能_第7张图片
录入评论内容.png
  • 发表同时刷新页面显示结果
04_应用season框架为产品详情页增加评论功能_第8张图片
显示结果.png
  • 删除操作
    点击删除
04_应用season框架为产品详情页增加评论功能_第9张图片
点击删除.png

删除成功


04_应用season框架为产品详情页增加评论功能_第10张图片
删除成功.png
  • 修改操作
    点击修改按钮,评论内容同步到录入框中,后边出现一个“确认修改”按钮


    04_应用season框架为产品详情页增加评论功能_第11张图片
    点击修改.png

点击确认修改,修改成功同时刷新当前页面

04_应用season框架为产品详情页增加评论功能_第12张图片
12修改完成.png

你可能感兴趣的:(04_应用season框架为产品详情页增加评论功能)