SpringMVC框架详细笔记

SpringMVC的概述

SpringMVC框架详细笔记_第1张图片

 SpringMVC的入门案列

SpringMVC框架详细笔记_第2张图片

1.创建WEB项目,引入开发的jar包(引入依赖)

 war
    
    
        5.0.2.RELEASE
    

    
    
        
            org.springframework
            spring-context
            ${spring.version}
        

        
            org.springframework
            spring-web
            ${spring.version}
        

        
        
            org.springframework
            spring-webmvc
            ${spring.version}
        

        
        
            javax.servlet
            javax.servlet-api
            3.0.1
            provided
        

        
            javax.servlet.jsp
            jsp-api
            2.0
            provided
        
    

2.配置核心配置的控制器




    
    
        dispatcherServlet
        org.springframework.web.servlet.DispatcherServlet
        
        
            contextConfigLocation
            classpath:springmvc.xml
        
        
        1
    

    
        dispatcherServlet
        /
    

3.编写springmvc.xml的配置文件




    
    

    
    

    
    
        
        
    

4.编写index.jsp和HelloController控制器

4.1success.jsp页面

<%@ page contentType="text/html;charset=UTF-8" language="java" %>


    Title


SpringMVC入门案例!


 5.HelloController控制器

package com.itheima.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;

/****
 * @Author:itheima
 * @Description:
 *****/
@Controller
public class HelloController {

    /******
     * 请求地址 http://localhost:18081/hello
     * @RequestMapping(path = "/hello"):用户请求/hello的时候,由该注解所在的方法处理
     * method:过滤了用户请求提交的方式
     * method = RequestMethod.POST:用户以POST条,才能被该方法拦截处理\
     *
     *
     * params用的比较少,这里不做要求掌握。
     *      param1: 表示请求必须包含名为 param1 的请求参数
     *      !param1: 表示请求不能包含名为 param1 的请求参数
     *      param1 != value1: 表示请求包含名为 param1 的请求参数,但其值不能为 value1
     *      {“param1=value1”, “param2”}: 请求必须包含名为 param1 和param2 的两个请求参数,且 param1 参数的值必须为 value1
     *      params = {"name"}:用户请求提交,必须要传入一个name参数
     *
     *
     * headers用的比较少,这里不做要求掌握。
     *          param1: 表示请求头必须包含名为 param1 的请求头信息
     *          !param1: 表示请求头不能包含名为 param1 的请求头信息
     *          param1 != value1: 表示请求头包含名为 param1 的请求头信息,但其值不能为 value1
     *          {“param1=value1”, “param2”}: 请求必头须包含头信息 param1 和param2的两个请求头信息 ,且 param1 的值必须为 value1
     */
    @RequestMapping(path = "/hello")
    public String sayHello(){
        System.out.println("SpringMVC hello!");
        //只需要写页面的名字即可(不用写全路径,不用写后缀)
        return "success";
        //ViewResolver
        //prefix+[返回的页面名字]+suffix
    }
}

 

入门案列的执行流程

SpringMVC框架详细笔记_第3张图片

组件解析:

1.前端控制器(DispathcherServlet)

2.处理映射器(HandlerMapping)

3.处理器(Handler)

4.处理器适配器(HandlAdapter

5.视图解析器(Viem Resolver

6.视图(View)

RequestMapping注解

源码

@Target({ElementType.METHOD, ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Mapping
public @interface RequestMapping {
    String name() default "";

    @AliasFor("path")
    String[] value() default {};

    @AliasFor("value")
    String[] path() default {};

    RequestMethod[] method() default {};

    String[] params() default {};

    String[] headers() default {};

    String[] consumes() default {};

    String[] produces() default {};
}

RequestMapping注解的作用是建立请求URL和处理的方法之间的对应的关系

出现位置:

类上:

请求 URL 的第一级访问目录。此处不写的话,就相当于应用的根目录。写的话需要以/开头

他出现的目的是为了使我们的URL可以按照模块化管理:

列如:

账户模块:                                  订单模块:

/account/add                             /order/add

/account/update/                      /order/update

/account/delete                         /order/delete

.........

红色部分就是把RequsetMappding写在类上,使我们URL更加精细

访问上:请求URL的第二级访问目录。

RequestMapping注解可以作用在方法和类上

作用在类上:第一级的访问目录

作用在方法上:第二级的访问目录

细节:路径可以不编写 / 表示应用的根目录开始

细节:${ pageContext.request.contextPath }也可以省略不写

案列:

	案例:处理的请求路径是   http://localhost:8085/hello/say
	@Controller
	@RequestMapping(value = "/hello")
	public class HelloController {
	    /**
	     * 接收请求
	     * @return
	     */
	    @RequestMapping(value = "/say")
	    public String sayHello() {
	        System.out.println("Hello SpringMVC!!");
	        return "success";
	    }
	}

RequestMapping的属性

path:路径指定的请求的路径url

列如: 在HelloController方法上加了@RequestMapping(path="/hello"),而sayHello方法上加了@RequestMapping(path="/say"),此时用户可以直接访问 http://localhost:8085/hello/say 来访问该方法.

  @Controller
  @RequestMapping(path = "/hello")
  public class HelloController {
      /**
       * 此时用户访问此方法路径为 http://localhost:8085/hello/say
       * @return
       */
      @RequestMapping(value = "/say")
      public String sayHello() {
          System.out.println("Hello SpringMVC!!");
          return "success";
      }
  }

value属性和path属性是一样的

method:指定该请求的方式

我们这里写了sayHello()和sayYourName()2个方法,但他们请求路径相同,而method属性的值不一样,如果是RequestMethod.GET,则只能以方式请求,如果是RequestMethod.POST则只能以POST方式请求。

@Controller
@RequestMapping(value = "/hello")
public class HelloController {
    /**
     * 加了method = RequestMethod.GET
     * 此时此方法只接收 http://localhost:8085/hello/say 的GET提交方式请求
     * @return
     */
    @RequestMapping(value = "/say",method = RequestMethod.GET)
    public String sayHello() {
        System.out.println("Hello SpringMVC!!调用了GET方法");
        return "success";
    }

    /**
     * 加了method = RequestMethod.POST
     * 此时此方法只接收 http://localhost:8085/hello/say 的POST提交方式请求
     * @return
     */
    @RequestMapping(value = "/say",method = RequestMethod.POST)
    public String sayYourName() {
        System.out.println("Hello SpringMVC!!调用了POST方法");
        return "success";
    }
}

params:指定限制请求的参数的条件

params用的比较少,这里不做要求掌握。
param1: 表示请求必须包含名为 param1 的请求参数
!param1: 表示请求不能包含名为 param1 的请求参数
param1 != value1: 表示请求包含名为 param1 的请求参数,但其值不能为 value1
{“param1=value1”, “param2”}: 请求必须包含名为 param1 和param2 的两个请求参数,且 param1 参数的值必须为 value1

 列如:

/**
 * headers参数:
 *      "Accept":表示请求头必须包含Accept头信息
 *      "!Date":表示请求头中不能包含Date的头信息
 *      "Accept-Encoding!=zh-CN":表示请求头中Accept-Encoding头信息的值不能为zh-CN
 *      "Host=localhost:18081":表示请求头中Host的值必须为localhost:18081
 *
 * @return
 */
@RequestMapping(headers = {"Accept","!Date","Accept-Encoding!=zh-CN","Host=localhost:18081"},
                value = "/say",method = RequestMethod.GET)
public String sayHello() {
    System.out.println("Hello SpringMVC!!调用了GET方法");
    return "success";
}

 

你可能感兴趣的:(java)