zoukankan      html  css  js  c++  java
  • SpringMVC框架(2)

    1.在Controller获得请求参数

    Controller是一个接口。

    //实现该接口的类获得控制器功能
    
    public  interface  Controller{
    
    //处理请求且但返回一个模型与视图对象
    
    ModelAndView  handleRequet(HttpServletRequest vsr1,HttpServletResponse vsr2)   throw
    
    }

    但是实现接口Controller定义控制器是一个比较古老的办法。缺点是:一个控制器中只有一个办法,如果要用多个办法的时候就得需要定义多个Controller;定义方式比较麻烦

    使用注解@Controller

    @Controller注解类型用于Spring类的实例是一个控制器

    Spring可以使用扫描机制来找到应用程序中所有基于注解的控制器类,为了保证Spring能找到你的控制器,需要在配置文件中声明组建扫描

    <!--自动扫描指定的包,下面的所有的注解交给IOC容器管理-->
    <context:component-scan base-package = "com.KL.controller"/>

    增加一个Controller Test2,使用注解实现:

    //@COntroller注解的类会自动添加到spring上下文中
    @Controller
    
    public class ControllerTest2{
    
    //映射访问路径
    @RequestMapping("/t2")
    
    public String index(Model model){
    
    //spring MVC 会自动实例化一个model对象用于向视图中传值
    
    model.addAttrubute("msg","ControllerTest2");
    
    //返回视图位置
    
    return  "test";
    
    }
    
    }

    控制器与视图之间是弱耦合,注解方式是平时我们使用最多的方式。

    RequestMapping

    @Requestmaping

    @RequestMapping注解用于映射url到控制器或 一个特定的处理程序的方法。用于类或方法上。用于类上的话,表示类上的所有请求的方法都是以该地址作为父路径。

    RestFul风格

    RestFul就是一个资源定位及资源操作的风格,不是标准和协议,只是一种风格。所以我们可以基于这种风格可以设计的软件更加的简洁,更有层次,更有实现缓存等机制

    功能:

    可以使用POST,GET,PUT,DELETE  资源的不同操作

    测试:

    1.新建一个类RestFulController

    @Controller
    
    public vlass RestFulController{
    
    }

    2.我们可以在SpringMVC中使用@PathVariable注解:让方法参数的值对应绑定到一个URL模板变量上。

    @Controller
    public class RestFulController {
     
        //映射访问路径
        @RequestMapping("/commit/{p1}/{p2}")
        public String index(@PathVariable int p1, @PathVariable int p2, Model model){
            
            int result = p1+p2;
            //Spring MVC会自动实例化一个Model对象用于向视图中传值
            model.addAttribute("msg", "结果:"+result);
            //返回视图位置
            return "test";
            
        }
        
    }

    使用路径变量的好处:使路径变得更加简洁,获得参数更加方便,框架会自动类型转换,通过路径变量的类型可以拘束访问参数,如果类型不一样,访问不到对应的请求方法。

    使用method属性指定请求类型

    用于约束请求的类型,可以收窄请求范围。指定请求谓词的类型如GET,POST,HEAD,OPTIONS,PUT,PATCH,DELETE,TRACE

    //映射访问路径,必须是POST请求
    @RequestMapping(value = "/hello",method = {RequestMethod.POST})
    public String index2(Model model){
        model.addAttribute("msg", "hello!");
        return "test";
    }

    所有的地址栏请求默认都会是HTTP GET类型的

    方法级别的注解变体:组合注解

     @GetMapping
    @PostMapping
    @PutMapping
    @DeleteMapping
    @PatchMapping

    @GetMapping 是一个组合注解,平时使用的会比较多!

    它所扮演的是 @RequestMapping(method =RequestMethod.GET) 的一个快捷方式。

  • 相关阅读:
    Algs4-1.3.44文本编辑器的缓冲区
    Algs4-1.3.42复制栈
    Algs4-1.3.41复制队列采用for方式实现
    Algs4-1.3.39环形缓冲区
    Algs4-1.3.40前移编码
    Algs4-1.3.38删除第k个元素-数组实现
    安全测试的一些漏洞和测试方法
    Java内存自动回收,为什么会有内存泄露?
    三款主流静态源代码安全检测工具比较
    Fortify源码安全检测工具
  • 原文地址:https://www.cnblogs.com/lixiaoxu695022762/p/15054934.html
Copyright © 2011-2022 走看看