SSM博客实战(3)--实现 RESTful 风格

avatar 2017年08月27日10:46:47 0 3558 views
博主分享免费Java教学视频,B站账号:Java刘哥 ,长期提供技术问题解决、项目定制:本站商品点此
上文介绍了分页,详情请点击 SSM博客实战(1)–实现分页效果 。

但是我们的分页效果的链接是 这样的 http://localhost:8090/ForestBlog/?nowPage=2

我们希望的是:http://localhost:8090/ForestBlog/p/2

也就是传说中的 RESTful 风格。

本文将做介绍,不足的地方,希望大家不吝赐教,在下方评论。

这里主要讲控制器的代码,其他的代码也贴一下吧。



一、业务层

1、ArticleService.java (接口)
  1. //分页显示
  2.     public void showArticleByPage(HttpServletRequest request, Model model,Integer pageNow) throws Exception;



2、ArticleServiceImpl.java (实现类)
  1. @Override
  2.     public void showArticleByPage(HttpServletRequest request, Model model,Integer pageNow) throws Exception {
  3.     //  String pageNow = request.getParameter("pageNow");
  4.         Page page = null;
  5.         List<ArticleCustom> articleList = new ArrayList<ArticleCustom>();
  6.         int totalCount = articleMapperCustom.getArticleCount();
  7.         if (pageNow != null) {
  8.         //  page = new Page(totalCount, Integer.parseInt(pageNow));
  9.             page = new Page(totalCount, pageNow);
  10.             articleList = this.articleMapperCustom.selectArticleByPage(page.getStartPos(), page.getPageSize());
  11.         } else {
  12.             page = new Page(totalCount, 1);
  13.             articleList = this.articleMapperCustom.selectArticleByPage(page.getStartPos(), page.getPageSize());
  14.         }
  15.         model.addAttribute("articleList", articleList);
  16.         model.addAttribute("page", page);
  17.     }

注意:注释部分是原来的代码,这里加了一个 从控制器 传来的 页码(pageNow)参数。




二、控制层


IndexController.java
  1. @Autowired
  2. private  HttpServletRequest request;
  3. @Autowired
  4. private ArticleService articleService;
  5. //首页显示
  6. @RequestMapping("/")
  7. public String IndexView(HttpServletRequest request, Model model) throws Exception {
  8.     //此处的articleService是注入的articleService接口的对象
  9.     articleService.showArticleByPage(request, model,null);
  10.     return "/Home/Index/index";
  11. }
  12. //分页显示
  13. @RequestMapping("/p/{pageNow}")
  14. @ResponseBody //适合RESTful
  15. public ModelAndView PageView(HttpServletRequest request, Model model, @PathVariable("pageNow") Integer pageNow) throws Exception{
  16.     articleService.showArticleByPage(request,model,pageNow);
  17.     ModelAndView modelAndView = new ModelAndView();
  18.     modelAndView.setViewName("Home/Index/index");
  19.     return modelAndView;//不会被解析为跳转路径,而是直接写入HTTP response body中
  20. }



注意:

articleService 是注入的
@Responsebody 表示该方法的返回结果直接写入 HTTP response body 中

一般在异步获取数据时使用,在使用 @RequestMapping 后,返回值通常解析为跳转路径,
加上 @Responsebody 后返回结果不会被解析为跳转路径,而是直接写入 HTTP response body 中。
比如异步获取json数据,加上 @Responsebody 后,会直接返回json数据。
@RequestBody 将 HTTP 请求正文插入方法中,使用适合的 HttpMessageConverter 将请求体写入某个对象。


三、视图层


  • 之前的 jsp 分页链接


<a href="?pageNow=2" class="btn btn-default">2</a>
  • 现在的 jsp 分页链接


<a href="${pageContext.request.contextPath}/p/2" class="btn btn-default">2</a>



是不是好看很多了呢?

当然 RESTful 风格不单单是为了好看,关于 RESTful 的内容,大家可以百度搜索一下吧。

今天就介绍到这里啦。



  • 微信
  • 交流学习,资料分享
  • weinxin
  • 个人淘宝
  • 店铺名:言曌博客咨询部

  • (部分商品未及时上架淘宝)
avatar

发表评论

avatar 登录者:匿名
匿名评论,评论回复后会有邮件通知

  

已通过评论:0   待审核评论数:0