3.2 AJAX发布帖子 显示帖子详情

文章目录

  • AJAX发布帖子 显示帖子详情
    • 1、引入fastjson包
    • 2、编写方法获取JSON字符串
    • 增加插入帖子的方法
      • 编写DiscussPostMapper
      • 编写DiscussPostService
      • 编写DiscussPostController
    • 处理js
  • 显示帖子详情
    • 增加通过id查询帖子的方法
    • 在帖子标题上增加访问详情页面的链接
    • 处理discuss-detail页面



AJAX发布帖子 显示帖子详情

3.2 AJAX发布帖子 显示帖子详情_第1张图片

1、引入fastjson包



    com.alibaba
    fastjson
    1.2.79

2、编写方法获取JSON字符串

  • code 编号
  • msg 提示信息
  • map 业务数据
  • 首先创立JSON对象 然后把code,msg传入,map遍历传入
  • 返回得到JSON 字符串
  • 重载两个方法
//获取Json字符串
public  static String getJSONString(int code, String msg, Map map)
{
    JSONObject jsonObject=new JSONObject();
    jsonObject.put("code",code);
    jsonObject.put("msg",msg);
    if(map!=null)
    {
        for(String key:map.keySet())
        {
            jsonObject.put(key,map.get(key));
        }
    }
    return jsonObject.toJSONString();
}
public  static String getJSONString(int code, String msg)
{

    return getJSONString(code,msg,null);
}
public  static String getJSONString(int code,  Map map)
{

    return getJSONString(code,null,map);
}

增加插入帖子的方法

编写DiscussPostMapper


    insert into discuss_post ()
    values(#{user_id}, #{title}, #{content}, #{type},  #{status}, #{create_time}, #{comment_count}, #{score})


编写DiscussPostService

  //增加帖子
    public int addDiscussPost(DiscussPost discussPost)
    {
        if(discussPost==null)
        {
            throw new IllegalArgumentException("帖子参数不能为空");
        }
        //转义帖子中的标签
        discussPost.setTitle(HtmlUtils.htmlEscape(discussPost.getTitle()));
        discussPost.setContent(HtmlUtils.htmlEscape(discussPost.getContent()));

        //过滤敏感词
        discussPost.setTitle(sensitiveFilter.filter(discussPost.getTitle()));
        discussPost.setContent(sensitiveFilter.filter(discussPost.getContent()));
        return discussPostMapper.insertDiscussPost(discussPost);
    }

编写DiscussPostController

//发布帖子
@RequestMapping(value = "/discuss/add",method = RequestMethod.POST)
@ResponseBody
public String addDiscussPost(String title,String content)
{
    User user = hostHolder.getUser();
    if(user==null)
    {
        return CommunityUtil.getJSONString(403,"您还没有登录,请先登录!");
    }
    DiscussPost discussPost=new DiscussPost();
    discussPost.setUserId(user.getId());
    discussPost.setTitle(title);
    discussPost.setContent(content);
    discussPost.setCreateTime(new Date());
    discussPostService.addDiscussPost(discussPost);
    //报错的情况之后统一处理
    return CommunityUtil.getJSONString(0,"发布成功!");

}

处理js

采用jquery发送异步请求

$.post(有三个参数 1、访问路径 2、 提交数据 3、 回调函数 服务器做出响应 把返回的数据传给data

把字符串转为js对象 浏览器转化为js对象处理

点击发布的时候调用方法 publish()

通过id获取标题和内容

data 保存回调函数处理服务器响应完毕后返回的结果

成功了刷新页面 判断JSON返回的code是否等于0

$(function(){
   $("#publishBtn").click(publish);
});

function publish() {
   //隐藏立即发布按钮
   $("#publishModal").modal("hide");

   //获取标题和内容
   var title=$("#recipient-name").val();
   var content=$("#message-text").val();
   //发送异步请求   post方式
   $.post(
      CONTEXT_PATH+"/discuss/add",
      {"title":title,"content":content},
      function (data) {
         data=$.parseJSON(data);
         //在提示框中显示返回信息
         $("#hintBody").text(data.msg);
         //显示提示框  2秒后消失
         $("#hintModal").modal("show");
         setTimeout(function(){
            $("#hintModal").modal("hide");
            //刷新页面
            if(data.code==0){
               window.location.reload();
            }

         }, 2000);

      }
   );
   
}

显示帖子详情

增加通过id查询帖子的方法

编写DiscussPostMapper,DiscussPostService,DiscussPostController

//根据id查询帖子
@RequestMapping(value = "/discuss/detail/{discussPostId}",method = RequestMethod.GET)
public String getDiscussPost(@PathVariable("discussPostId") int id, Model model)
{
    DiscussPost discussPost = discussPostService.selectPostById(id);
    model.addAttribute("post",discussPost);

    //通过userid查找对应的用户
    User user = userService.queryUserById(discussPost.getUserId());
    model.addAttribute("user",user);

    return "/site/discuss-detail";

}

在帖子标题上增加访问详情页面的链接


处理discuss-detail页面

-处理静态资源的访问路径

-复用index.html的header

-显示标题,作者,发布时间,帖子正文等内容

发布于 2019-04-15 15:32:18

你可能感兴趣的:(仿牛客论坛学习笔记,ajax,json,前端,spring,boot)