SpringMVC框架-----1

本文详细介绍了SpringMVC框架的原理与使用方法,包括MVC架构模式、SpringMVC的作用、配置步骤、参数接收(少量、多个及日期类型)以及静态资源处理。通过实例展示了如何搭建SpringMVC环境,处理请求参数,并解决了乱码问题。同时,讲解了SpringMVC处理静态资源的策略,确保正确加载图片和其他静态文件。
摘要由CSDN通过智能技术生成

目录

1.什么是MVC

2. 什么是SpringMVC框架

3.为什么要使用SpringMVC框架

4.如何使用SpringMVC框架

5.SpringMVC的运行流程

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

6.1.接受少量的参数

 6.2.接受多个参数

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

7.处理静态资源


1.什么是MVC

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

2. 什么是SpringMVC框架

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

3.为什么要使用SpringMVC框架

 

4.如何使用SpringMVC框架

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

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

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

 <?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
         version="4.0">
</web-app>

(2)引入springmvc的依赖

  <dependencies>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-webmvc</artifactId>
      <version>5.2.15.RELEASE</version>
    </dependency>
  </dependencies>

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

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
         version="4.0">

    <!--默认DispactherServlet加载的springmvc配置文件:WEB-INF/[servlet-name]-servlet.xml
        能不能你指定加载的配置文件呢:可以。
    -->
    <servlet>
        <servlet-name>DispatcherServlet</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <!--加载springmvc的配置文件-->
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <!--classpath:表示编译后的路径-->
            <param-value>classpath:springmvc.xml</param-value>
        </init-param>
    </servlet>
    <!--servlet映射路径
          /: 表示所有的控制层路径 以及静态资源
          /*: 表示全部 包含jsp网页
    -->
    <servlet-mapping>
        <servlet-name>DispatcherServlet</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>
</web-app>

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

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:context="http://www.springframework.org/schema/context"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context https://www.springframework.org/schema/context/spring-context.xsd">
    <!--包扫描 扫描我们自己的控制层类所在的包或者子包-->
    <context:component-scan base-package="com.wzh.controller"/>

</beans>

(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配置文件。
 

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

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

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

5.SpringMVC的运行流程

第一步:用户发送请求到前端控制器(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

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

常见错误:

400:参数(类型)错误

 6.2.接受多个参数

譬如: 表单提交。

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

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

解决办法:

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

 先引入javax-servlet-api依赖

    <dependency>
      <groupId>javax.servlet</groupId>
      <artifactId>javax.servlet-api</artifactId>
      <version>4.0.1</version>
    </dependency>
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提供了一个编码过滤器.

 

html乱码:

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

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

解决办法:

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

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

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

 <!--开启注解驱动-->
    <mvc:annotation-driven/>

7.处理静态资源

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

 

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

解决方案:

    <!--放行静态资源:哪些资源为静态资源。css img js html-->
    <mvc:default-servlet-handler/>

总结

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"); 接受时间格式的参数


静态资源放行

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值