网页首页动态设计/哈尔滨百度搜索排名优化
文章目录
- AJAX发布帖子 显示帖子详情
- 1、引入fastjson包
- 2、编写方法获取JSON字符串
- 增加插入帖子的方法
- 编写DiscussPostMapper
- 编写DiscussPostService
- 编写DiscussPostController
- 处理js
- 显示帖子详情
- 增加通过id查询帖子的方法
- 在帖子标题上增加访问详情页面的链接
- 处理discuss-detail页面
AJAX发布帖子 显示帖子详情
1、引入fastjson包
<!-- https://mvnrepository.com/artifact/com.alibaba/fastjson -->
<dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>1.2.79</version>
</dependency>
2、编写方法获取JSON字符串
- code 编号
- msg 提示信息
- map 业务数据
- 首先创立JSON对象 然后把code,msg传入,map遍历传入
- 返回得到JSON 字符串
- 重载两个方法
//获取Json字符串
public static String getJSONString(int code, String msg, Map<String,Object> 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<String,Object> map)
{return getJSONString(code,null,map);
}
增加插入帖子的方法
编写DiscussPostMapper
<insert id="insertDiscussPost" parameterType="DiscussPost" keyProperty="id">insert into discuss_post (<include refid="insertFields"></include>)values(#{user_id}, #{title}, #{content}, #{type}, #{status}, #{create_time}, #{comment_count}, #{score})
</insert>
编写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";}
在帖子标题上增加访问详情页面的链接
<a th:href="@{|/discuss/detail/${map.post.id}|}" th:utext="${map.post.title}"></a>
处理discuss-detail页面
-处理静态资源的访问路径
-复用index.html的header
-显示标题,作者,发布时间,帖子正文等内容
发布于 <b th:text="${#dates.format(post.createTime,'yyyy-MM-DD HH:MM:SS')}">2019-04-15 15:32:18</b>