SpringMVC框架-----1

目录

1.什么是MVC

2. 什么是SpringMVC框架

3.为什么要使用SpringMVC框架

4.如何使用SpringMVC框架

5.SpringMVC的运行流程

6.如何在controller接受请求的参数

6.1.接受少量的参数

 6.2.接受多个参数

 6.3 接收的参数含有日期类型

7.处理静态资源


1.什么是MVC

MVC就是一个分层架构模式:

SpringMVC框架-----1_第1张图片

SpringMVC框架-----1_第2张图片

2. 什么是SpringMVC框架

springMVC它是spring框架的一个分支,该springMVC框架主要完成的功能是:接收浏览器的请求响应,对数据进行处理,然后返回页面进行显示 可以把它理解为和Servlet干的工作是一样的。

3.为什么要使用SpringMVC框架

 SpringMVC框架-----1_第3张图片

4.如何使用SpringMVC框架

(1)创建一个maven-web工程

SpringMVC框架-----1_第4张图片

 注意: 用原来的web.xml文件替换现在的web.xml文件

maven-web工程中的webapp下的WEB-INF下的web.xml版本(2.3版本)太低,可能会出现意料之外的错误,所以我们可以web.xml文件里面的内容全部替换成如下代码(4.0版本)

 

(2)引入springmvc的依赖

 
   
      org.springframework
      spring-webmvc
      5.2.15.RELEASE
   

 

(3) 注册DispatcherServlet到web.xml文件上




    
    
        DispatcherServlet
        org.springframework.web.servlet.DispatcherServlet
        
        
            contextConfigLocation
            
            classpath:springmvc.xml
        
    
    
    
        DispatcherServlet
        /
    

(4) 创建我们的springmvc配置文件

SpringMVC框架-----1_第5张图片



    
    

(5)创建一个controller类        务必加@Controller,不然不能识别该类为处理类

@Controller    //该注解标记该类为处理层类----类似@WevServlet
public class HelloController {
    @RequestMapping(value="/hello01")   //把请求路径映射到该方法
    public String hello(){
        System.out.println("业务处理");
        return "hello.jsp";
    }
}

这里如果报500,说明没有指定加载的springMVC.xml配置文件的路径 

我们的DispatcherServlet默认加载的springmvc配置文件目录为:WEB-INF/[servlet-name]-servlet.xml,除了将springmvc.xml放到这个路径下,我们也可以在web.xml中指定我们要加载的springmvc.xml配置文件。
 

SpringMVC框架-----1_第6张图片

解决办法:(1)在WEB-INF下创建DispatcherServlet.xml  

                (2)在web.xml中添加springmvc的配置文件

SpringMVC框架-----1_第7张图片

1.1.引入依赖 spring-webmvc
2.注册DispatcherServlet到web.xml文件。需要指定加载的springmvc配置文件的路径
tomcat启动时会加载servlet
3.创建springmvc的配置文件。 
4.创建一个类,在类上加上@Controller  并且在方法上加上@RequestMapping注解

5.SpringMVC的运行流程

SpringMVC框架-----1_第8张图片

第一步:用户发送请求到前端控制器(DispatcherServlet)。

第二步:前端控制器请求 HandlerMapping 查找 Handler,可以根据 xml 配置、注解进行查找。

第三步: 处理器映射器 HandlerMapping 向前端控制器返回 Handler

第四步:前端控制器调用处理器适配器去执行 Handler

第五步:处理器适配器执行 Handler

第六步:Handler 执行完成后给适配器返回 ModelAndView

第七步:处理器适配器向前端控制器返回 ModelAndView

    ModelAndView 是SpringMVC 框架的一个底层对象,包括 Model 和 View

第八步:前端控制器请求试图解析器去进行视图解析

    根据逻辑视图名来解析真正的视图。

第九步:试图解析器向前端控制器返回 view

第十步:前端控制器进行视图渲染

    就是将模型数据(在 ModelAndView 对象中)填充到 request 域

第十一步:前端控制器向用户响应结果

 

 

6.如何在controller接受请求的参数

之前:

       request.getParamter("name")----这种接受参数的问题,麻烦。类型都是String.需要手动转型。

6.1.接受少量的参数

譬如:删除,只需要接id

只需要给定方法的参数,参数必须要求和请求的参数名称一致。

SpringMVC框架-----1_第9张图片

常见错误:

400:参数(类型)错误

SpringMVC框架-----1_第10张图片

 6.2.接受多个参数

譬如: 表单提交。

封装一个实体类来接受这些参数:

SpringMVC框架-----1_第11张图片

发现接受的参数值乱码:---只能添加过滤器

解决办法:

(1)自己创建编码过滤器. jdk1.8一定要重写init和destory方法 1.9以后可以不写

 先引入javax-servlet-api依赖

    
      javax.servlet
      javax.servlet-api
      4.0.1
    
package com.wzh.filter;

import javax.servlet.*;
import javax.servlet.annotation.WebFilter;
import java.io.IOException;

/**
 * @ProjectName: SpringMVC0607
 * @Package: com.wzh.filter
 * @ClassName: EncodingFilter
 * @Author: 王振华
 * @Description:
 * @Date: 2022/6/7 21:00
 * @Version: 1.0
 */
@WebFilter(filterName = "filter",urlPatterns = "/*")
public class EncodingFilter implements Filter {
    public void init(FilterConfig filterConfig) throws ServletException {

    }

    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
        servletRequest.setCharacterEncoding("utf-8");
        servletResponse.setCharacterEncoding("utf-8");
        filterChain.doFilter(servletRequest,servletResponse);
    }

    public void destroy() {

    }
}

(2)springmvc提供了一个编码过滤器.

SpringMVC框架-----1_第12张图片

 SpringMVC框架-----1_第13张图片

html乱码:

SpringMVC框架-----1_第14张图片

 6.3 接收的参数含有日期类型

SpringMVC框架-----1_第15张图片

不能把String类型转化为date类型

解决办法:

在时间类型的属性上添加一个注解:@DateTimeFormat(pattern = "yyyy-MM-dd")

 //yyyy年  MM:月 dd日  24小时制    HH:mm:ss
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    private Date birthday;//出生日期

在springmvc配置文件上开启注解驱动  

 
   

SpringMVC框架-----1_第16张图片

7.处理静态资源

什么是静态资源: 比如: css, js, img,html

SpringMVC框架-----1_第17张图片

 SpringMVC框架-----1_第18张图片

无法加载图片: 原因:springmvc的前端控制器DispatcherSerlvet也把静态资源拦截器。放行静态资源  

解决方案:

    
    

总结

springmvc框架----作用:自动接受参数和封装参数。等价于servlet. 它是model和view之间的一座桥梁。
如何搭建springmvc框架,
  (1)spring-webmvc依赖.
   (2) 注册DispatcherServlet类到web.xml容器中。
   (3) springmvc配置文件
       (1)controller的扫描
       (2)注解的驱动.
       (3)静态文件的放行。必须在开启注解驱动的基础上否则无效。
springmvc接受请求参数.
   参数个数比较少: 直接在controller层方法处,写参数名称即可。
   参数比较多: 封装到一个实体类上,并在方法处写实体类对象。
   日期类型: @DateTimeFormat(pattern="yyyy-MM-dd"); 接受时间格式的参数


静态资源放行

编码过滤器: 防止接受参数时的乱码

你可能感兴趣的:(SpringMVC框架,spring,mvc)