• SpringMVC(二)——核心类和注解


    1.DispatcherServlet

    全名是org.springframework.web.servlet.DispatcherServlet,在web配置一下就好了

    2.Controller

    控制器类上需要 实现Controller接口或者 使用@Controller注解

    注解是org.springframework.stereotype.Controller(配置文件加上context命名空间、开启扫描包)

    接口是org.springframework.web.servlet.mvc.Controller

    3.ViewResolver

    视图解析器,在springmvc-config.xml里配置,一般通过设置前后缀来显示请求访问路径,功能实现RequestMapping搭配,默认当前路径为WebContent,配置例如

        <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
             <!-- 设置前缀 -->
             <property name="prefix" value="/WEB-INF/jsp/" />
             <!-- 设置后缀 -->
             <property name="suffix" value=".jsp" />
        </bean>

    还有一个order属性,用正整数表示优先级,越小优先级越大,多个视图解析器可以判断优先级,第一个找不到会找第二个,以此类推。

    <property name="order" value="1"/>

    4.@RequestMapping注解

    请求映射,为控制器指定可以处理哪些URL请求

    在上面的视图解析器的基础上,测试效果。

    (1)标注在方法上,例如

    package com.mvc.controller;
    
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    
    import org.springframework.stereotype.Controller;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.servlet.ModelAndView;
    
    @Controller
    public class FirstController {
    
        @RequestMapping("/firstController")
        public String test() {
            System.out.println("facai1");
            return "index";
        }
    }

    效果是:访问http://localhost:8080/MVC_02/firstController会调用test()方法,在控制台输出facai1,并且跳转到/MVC_02/WEB-INF/jsp/index.jsp。这里的[index]是test()方法返回的,与视图解析器的前缀[/WEB-INF/jsp/]后缀[.jsp]拼接而成请求路径。

    (2)标注在类上,例如

    package com.mvc.controller;
    
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    
    import org.springframework.stereotype.Controller;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.servlet.ModelAndView;
    
    @RequestMapping("/hello")
    @Controller
    public class FirstController {
        @RequestMapping("/firstController")
        public String test() {
            System.out.println("facai1");
            return "index";
        }
    }

    效果是:访问http://localhost:8080/MVC_02/hello/firstController会调用test()方法,在控制台输出facai1,并且跳转到/MVC_02/WEB-INF/jsp/index.jsp。就是在方法的注解前多加一个路径,请求是通过方法处理,而不是类,所以方法上的注解必须要有,类上注解可以有。

    (3)注解的属性

    value:请求路径。

    method:设置请求方法,只有客户端发送请求方式和method一样,才能处理,请求方式有GET,POST,PUT,DELETE,写法例如method=RequestMethod.GET。

    params:用来设置客户端传到服务器的数据,支持表达式,可以是数组。写法例如params={"username","!phone","age=12","sex!=2"},表示传递的数据中,需要有username属性,不能有phone属性,age属性必须为12,sex必须不为2,否则无法处理这个请求。

    headers:设置请求头信息,所发送的请求的请求头信息一定要和header属性中设置的一样。

    (4)组合注解

    @GetMapping @PostMapping @PutMapping @DeleteMapping @PatchMapping

    化简了原来的注解的method属性,例如

    @RequestMapping(value="/test",method=RequestMethod.POST)等同

    @PostMapping(value="/test")

    (5)支持Ant风格风格

    三种匹配符号,[*]表示0-多个任意字符,[?]表示任意单个字符,[**]表示任意多层目录,写法例如

    @RequestMapping(value="/*/ant??/**/test")

    (6)支持Restful风格(占位符方式的路径)

    以前:localhost:8080/MCV_02/Rest?id=1001&name=admin

    现在:localhost:8080/MCV_02/Rest/1001/admin

        @RequestMapping("/Rest/{id}/{name}")
        public String testRest(@PathVariable("id") Integer id,@PathVariable("name")String name) {
            System.out.println("test_Restful");
            return "success";
        }

     

     

  • 相关阅读:
    jvm05
    jvm04
    jvm03
    jvm02
    jvm01
    rabbitmq-01
    lock接口认识及可重入锁的实现
    volitile的使用
    自旋锁,死锁与重入锁
    上机实验4--求序列的最大元素和最小元素
  • 原文地址:https://www.cnblogs.com/shoulinniao/p/13069101.html
Copyright © 2020-2023  润新知