• springweb层控制类的使用


    首先我们要知道web层主要是有接收 处理 响应的功能,在spring框架中我们怎样才能比较简便的进行前后端数据交互呢?下面让我们来一起了解了解springweb层控制类的使用!!!

    首先让我们来了解了解什么是控制类?

    Spring可以通过@Controller注解自动发现你的控制器类以及@RequestMapping注解中的请求映射,这样就为你免去了在Bean配置文件中配置它们的麻烦。

    那让我们了解了解下面的标签

    • @RestController
      类似于@service这些注解标签 表示此类是控制层类,并创建对象  
    • @RequestMapping(path="/loginCtl")用来为类和方法定义一个映射地址
      此方法在类和方法上可以使用,在类上使用,整个项目必须是唯一的,不能重复。如果是在方法上定义时,同一个类中的地址也必须是唯一的,可以使用path/value来定义地址。
      
      
      @RequestMapping(path="/loginCtl")==@RequestMapping(value="/loginCtl")

      在我们以前前端要往后端发送请求时用get/post方法进行发送,在框架中我们同时也是如此

    1.  @RequestMapping(path="/test")  没有指定请求方式,get/post都可以请求
    2.  @RequestMapping(path="/test",method = RequestMethod.POST) 指定post方法
    3.  @RequestMapping(path="/test",method = RequestMethod.POST) 指定get方法
    4.  @GetMapping(path="/login")  指定get方法
    5.  @PostMapping(path="/login") 指定post方法
    •  如果前端往后端用post方法,中文会乱码,这时候我们添加一个编码过滤器就会解决这个问题(具体怎么添加编码过滤器看springweb保姆级教学)
    • 控制器返回结果,@RestController 中包含@ResponseBody 的注解标签,所以方法返回结果默认是json格式,并将json字符串写到响应体中,返回一个对象时,必须要加入一个转json的第三方组件(具体怎么添加json组件看springweb保姆级教学)
    • 如何接收请求中的数据   

             before:使用request对象接收  req.getparameter();

    1. @RequestMapping(path="/test",method = RequestMethod.POST)//可以使用path和value进行定义
    2. @GetMapping(path="/test")
    3. public String test(HttpServletRequest request, HttpServletResponse response){
    4. System.out.println(request.getParameter("num"));
    5. return "springweb";
    6. }

             now:在框架中我们可以直接在参数表中定义形参接收,还可以帮我们进行数据类型转换

    1. @GetMapping(path="/test")
    2. //请求中的键名称与形参名一致注解被接收 不一致需要通过注解标签进行绑定
    3. public String test(Integer num, @RequestParam("user_name") String user_Name,
    4. @RequestHeader("User-Agent") String userAgent){
    5. System.out.println(num);
    6. return "springweb";
    7. }

     直接使用对象接收:在保存表单数据中,数据比较多,请求你数据类型转换会有问题,但是   spring  框架较好的解决了这个问题

    1. @GetMapping(path="/login")//get请求中文没有问题,post请求中文有乱码问题(spring提供了一个编码的过滤器)
    2. public CommonResult login(Admin admin, Integer mark) {
    3. System.out.println(admin);
    4. Admin a=loginService.login(admin);
    5. CommonResult commonResult=new CommonResult(200,"保存成功");//可以对创建方法进封装
    6. return commonResult;
    7. }
    8. //在接收日期时,需要对其进行特殊处理
    9. // @DateTimeFormat(pattern = "yyyy-MM-dd")
    10. //private Date birthday;
    • 添加跨域过滤器和拦截器(具体看springweb保姆级教学

    拦截器和过滤器的区别:

    • 过滤器是java Servlet规范中定义的,是当请求进入Servlet之前,可以对请求进行拦截,可以加入一些逻辑处理
    • 拦截器是spring框架中自己定义的功能,和过滤器位置不同
    • 拦截器值拦截进入到自己控制器中的请求,其余的不拦截

     搭建拦截器:

    1. 创建一个类实现HandlerInterceptor接口
    2. 重写接口中的preHandle()
    3. 配置拦截器

  • 相关阅读:
    v-model的修饰符
    大模型架构创新已死?
    jar 命令启动java 指定配置文件路径 jar如何启动
    【C#】项目中添加png文件时,设置其“生成操作”(Build Action)属性
    Nginx 平滑升级
    期末复习【C++】
    自动化专业之半导体行业入门指南
    Python SSL操作手册
    Nwafu-OJ-1487 Problem q C语言实习题八——ASCII字模文件
    数据库设计
  • 原文地址:https://blog.csdn.net/dfdbb6b/article/details/128186820