栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

【JAVAWEB-Springboot的运用】第三章 控制层(Controller)的应用场景

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

【JAVAWEB-Springboot的运用】第三章 控制层(Controller)的应用场景

MVC模式

经典MVC模式中,M是指业务模型,V是指用户界面,C则是控制器,使用MVC的目的是将M和V的实现代码分离,从而使同一个程序可以使用不同的表现形式。其中,View的定义比较清晰,就是用户界面。(百度百科)
对于每个层作用以及用法相信你们应该都有一定的了解和自己的见解,下面主要是对控制层做一下常见的场景简单的代码和效果演示,便于更清晰直观的理解。

Controller 和 RestController

在这之前,希望大家对一些常用注解要有所了解。
@RestController 实际上是相当于 @Controller+@ResponseBody的组合,主要呢是跟视图解析器有些关联。加上了@ResponseBody返回就不会走视图解析器了,而是直接返回JSON,XML或自定义mediaType的数据。
除了上面的注解以外还有@RequestMapping @GetMapping @PostMapping等等,这里就不做详细赘述了。

控制层的应用场景 作为视图控制层

虽然呢,使用@RestController就不会走正常的视图解析器,但是只要我们返回ModelAndView还是可以正常返回视图的。关于ModelAndView类的用法网上有很多,这里也不做过多解释了。

  1. 新建IndexController,然后实现以下代码
    ps:关于参数注解也需要事先了解一下,这里主要是运用。
@RestController
public class IndexController {

    @GetMapping("/hello/{name}")
    public ModelAndView hello(ModelAndView model, @PathVariable String name){
        model.setViewName("hello/index");
        model.addObject("name",name);
        return model;
    }
}

另外注意我把application.properties下的项目根路径配置了一下,可以演示下效果
server.servlet.context-path=/boot
上一章的index.ftlh页面也简单做了一些更改

<#assign root=request.getContextPath()>



    
    HelloWorld!


    

Hello World!

项目根目录:${root}

<#-- 使用绝对路径,这样可以避免产生相对路径问题 --> 进入hello dj
  1. 新增视图模板hello/index.ftlh
    这里说明下,关于Freemarker模板引擎的使用,有官方文档的,这里也不做说明啦,谢谢理解,毕竟精力有限。



    
    Hello${name!}!


    

Hello ${name!}!

  1. 然后重启项目,我们打开访问地址http://localhost:8080/boot (注意我们配置了项目根路径所以要带上根路径)

    可以看到通过freemarker引擎我们可以直接获取到项目根路径

我们点击hello dj连接进入我们新写的页面

实际上我们的写的是路径参数是动态的所以 dj可以换成我们想要的任意字符比如Kitty,我们只要访问http://localhost:8080/boot/hello/Kitty即可

以上就是返回视图界面的场景应用,我们可以写很多个视图返回用于不同业务场景的视图跳转。但现在越来越多的人使用RestFul的风格方式进行开发,接口直接返回json或xml等,然后前端直接利用ajax、axios等技术进行请求调用达到前后端分离的目的。下面我们就展示一下,直接返回数据接口的案例。

作为后台接口(API)
  1. 在IndexController下增加以下代码(注意导包)
    @GetMapping("/queryList")
    public List> queryList(){
        List> list = new ArrayList<>();
        Map map;
        for(int i=0; i< 5; i++){
            map = new HashMap<>();
            map.put("no", i+1);
            map.put("name", (new String[]{"张三","李四","王五"})[i%3]);
            map.put("sex",i%2==0?"男":"女");
            list.add(map);
        }
        return list;
    }
  1. 重启项目访问http://localhost:8080/boot/queryList

    这就是直接返回接口数据,前端的话直接调用接口即可。
    下面我使用jquery ajax进行调用做一个简单调用示例。
  2. 现在我们完善以下index.ftlh(首页)的代码
<#assign root=request.getContextPath()>



    
    HelloWorld!


    

Hello World!

项目根目录:${root}

<#-- 使用绝对路径,这样可以避免产生相对路径问题 --> 进入hello dj
<#--这里只是做简单演示直接使用百度的cdn,如果没有外网环境可以直接将jquery.min.js复制到项目中直接引入静态资源(放在static下)-->
  1. 看下调用的效果

    通过ajax技术,我们就可以实现异步加载数据,从而提高用户体验。
总结

以上就是常规的控制层使用场景,怎么样不难吧,主要就是对里面的所涉及到的点如常用注解,传参方式,ajax技术等等等等,这些需要慢慢积累,逐步掌握。好啦,本章就到这里,如有错误,烦请提出指正,感谢您的阅读!

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/684680.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号