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

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

【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
    					
										


					

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5685229.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存