首页 > 编程知识 正文

spring Boot RestController注解的理解,spring框架的理解

时间:2023-05-04 19:20:09 阅读:209153 作者:3407

最近在学spring Boot,就做一个@RestController学习笔记,加深印象,虽然很多人做过,也很详细,但还是想自己做一遍,加深印象,当然,个人理解,肯定有很多不严谨,甚至错误的地方,但求能有所收获就行

View可以不严谨的理解成xxx; 这里有2种形式

       1.对于有返回值的函数,return xxx,xxx是个地址,jsp访问页面的地址或者html访问页面的地址

         它将由url视图解析器解析,它被作为最终视图的url的一部分,然后和相关配置组合起来,就是最终的视图地址url,然后再按照地址进行后端的视图渲染

       2.对于void型的函数,xxx是json字符串,或者html字符流式的字符串,或者。。。。。字符串
         

 PrintWriter out=response.getWriter();           out.writer(xxx);

            2.1 .html字符流形式:

StringBuffer sbHtml = new StringBuffer(); sbHtml.append("<!doctype html><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">"); sbHtml.append("<title>支付宝即时到账交易接口</title></head><body>"+ user.getNo() +"</body></html>"); out.write(sbHtml.toString());

                         

                 将HTML的字符流输出打印到了--发送请求的浏览器端

           

           2.2.json字符串:

Map<String, Object> map = new HashMap<>(); map.put("result", "ok"); map.put("data", scoreList); printWriter.write(JSON.toJSONString(map));

                 个人理解:它本质上是html字符流,将json字符串放入了html字符流的<body></body>标签内

                   其它格式的还有xml。。。。。

     

Controller相当于dispatcherServlet(实现servlet接口)+Model(填充了数据的模型/模板类)

               @Controller执行过程

                  DispatcherServlet 分发请求,它把用户请求的数据经过业务处理层处理之后封装成一个Model ,然后再把该Model 返回给对应的View ()进行展示。。。。。。(@RequestMapping("/xxx")使得该controller能被外界进行访问,相当于servlet中的url映射,或者@WebServlet注解),,用@Controller初始化一个controller,用@RequestMapping给出它的访问路径,或者说触发路径 ,触发条件。

                @ResponseBody

                   将controller的方法返回的对象通过适当的转换器转换为指定的格式之后,写入到response对象的body区,通常用来返回JSON数据或者是XML数据,需要注意的是,在使用此注解之后不会再走视图处理器,而是直接将数据写入到输出流(InputStream(字节输入流),或者抽象类Reader(字符输入流),抽象类OutputStream(字节输出流)或者Writer(字符输出流))中,他的效果等同于通过response对象输出指定格式的数据,如: 

    //实体类User        public class User{private String UserName;private String password;get,set方法} //伪代码举例    @RequestMapping("/login")  @ResponseBody  public User login(User user){    return user;  }  那么在前台接收到的数据为:'{"userName":"xxx","pwd":"xxx"}'  效果等同于如下代码:  @RequestMapping("/login")  public void login(User user, HttpServletResponse response){    response.getWriter.write(JSONObject.fromObject(user).toString());  }

        虽然函数有return值,但加了@ResponseBody,可将其当成void型函数来理解

@RestController注解相当于@Controller + @ResponseBody 合在一起的作用。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。