springMVC简单使用

本笔记是在学习狂神说的SpringMVC时创建。

SpringMVC学习笔记

1.什么是SpringMVC?

   + Spring MVC属于SpringFrameWork的后续产品,已经融合在Spring Web Flow里面。
   + Spring 框架提供了构建 [Web](https://baike.baidu.com/item/Web/150564) 应用程序的全功能 MVC 模块。
   + 使用 Spring 可插入的 MVC 架构,从而在使用Spring进行WEB开发时,可以选择使用Spring的Spring MVC框架或集成其他MVC开发框架,如Struts1(现在一般不用),Struts 2(一般老项目使用)等等。

2.使用SpringMVC的好处

  • Lifecycle for overriding binding, validation, etc,易于同其它View框架(Tiles等)无缝集成,采用IOC便于测试。* 它是一个典型的教科书式的mvc构架,而不像struts等都是变种或者不是完全基于mvc系统的框架。

3.SpringMVC执行原理

SpringMVC的核心是DispatcherServlet中心控制器

Spring MVC框架像许多其他MVC框架一样, 以请求为驱动 , 围绕一个中心Servlet分派请求及提供其他功能 ,DispatcherServlet 是一个实际的Servlet (它继承自HttpServlet 基类)。

SpringMVC执行流程图

mvc01.png

1.用户发起请求,中心控制器接到用户请求,调用处理器映射器(HanderMapping)处理用户请求,

在通过调用HanderExecution解析用户请求查找Handler,最后返回给中心控制器。

2.中心控制器得到用户请求的Handler,调用处理器适配器,找到用户请求的Controller。

3.Controller将具体的执行信息返回给HandlerAdapter,如ModelAndView,然后返回中心控制器。

4.中心控制器在调用ViewResolver,根据Controller返回的信息生成View返回给用户。

1.第一个SpringMVC程序

  1. 搭建环境

  2. 创建Maven项目

  3. 添加wed框架支持

  4. 进行SpringMVC配置

1.在pom中添加SpringMVC依赖


       
           org.springframework
           spring-webmvc
           5.1.9.RELEASE
       
 

2.在wed.xml中进行相关配置

     
      
          DispatcherServlet
          org.springframework.web.servlet.DispatcherServlet
       
          
              contextConfigLocation
              classpath:SpringMVC-Servlet.xml
          
          
          1
      


    
        DispatcherServlet
        /
    

3.创建关联配置文件





4.在配置文件中


    
    
    
    
    
        
        
        
        
        
        
    

5.编写Controller业务代码

import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.Controller;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class controller implements Controller {

    @Override
    public ModelAndView handleRequest(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) throws Exception {
        //ModelAndView 模型和视图
        ModelAndView mv=new ModelAndView();
       //封装对象,放在ModelAndView中。Model
        mv.addObject("msg","SpringMVC-------");
        //封装要跳转的视图,放在ModelAndView中
        mv.setViewName("hello");
        return mv;
    }
}

6.在Spring容器中注册Bean


7.创建需要跳转jsp

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


    Title


  //取出封装对象中的值
   ${msg}



8.配置tomcat启动测试 得到效果


mvc02.png

2.使用注解开发SpringMVC

准备工作:

  1. 创建一个新的Maven模块

  2. 添加wed框架支持

  1. 在wed.xml中配置SpringMVC

     
            DispatcherServlet
            org.springframework.web.servlet.DispatcherServlet
            
            
                contextConfigLocation
                classpath:SpringMVC-Servlet.xml
            
            
            1
        
    
        
            DispatcherServlet
            /
        
    

    2.创建SpringMVC的配置文件

        
        
        
        
        
    
        
        
            
            
            
            
        
    
    

    3.创建controller

    package com.chao.controller;
    
    import org.springframework.stereotype.Controller;
    import org.springframework.ui.Model;
    import org.springframework.web.bind.annotation.RequestMapping;
    
    //使用注解定义类为Controller
    @Controller
    public class controller {
    
        @RequestMapping("/hello")
        public String servlet(Model model)
        {
            model.addAttribute("msg","hello---");
    
            return "hello";
        }
    }
    
    • @RequestMapping是为了映射请求路径;

    • 方法中声明Model类型的参数是为了把Action中的数据带到视图中;

    • 方法返回的结果是视图的名称hello;

4.创建jsp

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


    Title


${msg}



5.配置tomcat 启动测试


mvc03.png

3.RequestMapping

@RequestMapping

  • @RequestMapping注解用于映射url到控制器类或一个特定的处理程序方法。

    @Controller
    public class TestController {
       @RequestMapping("/hello")
       public String test(){
           return "hello";
      }
    }
    

4.RestFul 风格

概念

Restful就是一个资源定位及资源操作的风格。不是标准也不是协议,只是一种风格。

功能

资源:互联网所有的事物都可以被抽象为资源

资源操作:使用POST、DELETE、PUT、GET,使用不同方法对资源进行操作。

分别对应 添加、 删除、修改、查询。

测试

  1. 在新建一个类 RestFulController

    @Controller
    public class RestFulController {
    }
    
  2. 使用 @PathVariable 注解,让方法参数的值绑定到一个URI上。

    package com.chao.controller;
    
    import org.springframework.stereotype.Controller;
    import org.springframework.ui.Model;
    import org.springframework.web.bind.annotation.RequestMapping;
    
    
    @Controller
    public class controller {
    
        @RequestMapping("/hello")
        public String servlet(Model model)
        {
            model.addAttribute("msg","hello---");
    
            return "hello";
        }
    }
    
  3. 我们来测试请求查看下


    mvc03.png

我们来修改下对应的参数类型,再次测试

package com.chao.controller;

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;


@Controller
public class controller {

    @RequestMapping("/hello/{a}/{b}")
    public String servlet(@PathVariable int a,@PathVariable int b, Model model)
    {
        int res=a+b;
        model.addAttribute("msg",res);

        return "hello";
    }
}

mvc04.png

使用method属性指定请求类型

指定请求的类型如GET, POST, HEAD, OPTIONS, PUT, PATCH, DELETE, TRACE等

我们来测试一下:

  • 增加一个方法

    @Controller
    public class controller {
    
        @RequestMapping(value = "/hello/{a}/{b}",method = RequestMethod.POST)
        public String servlet(@PathVariable int a,@PathVariable int b, Model model)
        {
            int res=a+b;
            model.addAttribute("msg",res);
    
            return "hello";
        }
    }
    
    
  • 使用浏览器地址栏进行访问默认是Get请求,会报错405:


    mvc05.png

    将POST修改为GET就可以了;

@Controller
public class controller {

    @RequestMapping(value = "/hello/{a}/{b}",method = RequestMethod.GET)
    public String servlet(@PathVariable int a,@PathVariable int b, Model model)
    {
        int res=a+b;
        model.addAttribute("msg",res);

        return "hello";
    }
}

mvc06.png

另外,可以使用组合注解

@GetMapping
@PostMapping
@PutMapping
@DeleteMapping
@PatchMapping
@Controller
public class controller {

    @PostMapping("/hello/{a}/{b}")
    public String servlet(@PathVariable int a,@PathVariable int b, Model model)
    {
        int res=a+b;
        model.addAttribute("msg",res);

        return "hello";
    }
}

也是可以的!

mvc07.png

在实际开发中是用组合注解比较多!!!

你可能感兴趣的:(springMVC简单使用)