SpringMVC笔记(自用)

1.SpringMVC简介

  SpringMVC:是基于spring的一个框架,实际上就是spring的一个模块,专门做web开发的。理解是servlet的一个升级
  web开发底层是servlet,框架是在servlet基础上面加一些功能,让你做web开发方便。
  springMVC就是一个Spring。Spring是一个容器,ioc能够管理对象,使用,@Component、@Respository、@Service、@Controller。因此,SpringMVC也能够创建对象,放入到(SpringMVC)容器中,它存放的是控制器对象(@Controller)
  我们要做的是,使用@Controller创建控制器对象,把对象放入到springmvc容器中,把创建的对象作为控制器使用。
  这个控制器对象能接收用户的请求,显示处理结果,就当做是一个servlet使用。
  要注意的是,使用@Controller创建的实际上只是一个普通类的对象,不是Servlet。但是springmvc赋予了控制器对象一些额外的功能
  因为web开发的底层是servlet,springmvc中有一个对象是Servlet:DispatherServlet(中央调度器也叫前端控制器)
  DispatherServlet:负责接收用户的所有请求,用户把请求给了DispatherServlet,之后DispatherServlet把请求转发给了Controller对象,最后是Controller对象处理请求。请求的传递如下:

index.jsp----->DispatherServlet(Servlet)—转发,分配给–>Controller对象(@Controller注解的对象)

  所以,当我们使用springmvc框架时,所需要一个中央调度器和一个Controller对象

2.SpringMVC框架的使用

1.加入依赖

spring-webmvc依赖,简介把spring的依赖都加入到项目
jsp、servlet依赖

    <!--servlet依赖-->
    <dependency>
      <groupId>javax.servlet</groupId>
      <artifactId>javax.servlet-api</artifactId>
      <version>3.0.1</version>
    </dependency>

    <!--SpringMVC依赖-->
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-webmvc</artifactId>
      <version>5.2.5.RELEASE</version>
    </dependency>

2.在web.xml中注册springmvc框架的核心对象DispatcherServlet,以及静态资源冲突的问题

在这里插入图片描述

    <!--声明SpringMVC的核心对象,DispatcherServlet-->
    <!--
        需要在tomcat服务器启动后就创建DispatcherServlet对象的实例
        为什么要创建DispatcherServlet的实例呢?
        因为DispatcherServlet在他的创建过程中,会同时创建springmvc容器对象,读取springmvc的配置文件,把这个配置文件中的对象也创建好,
    当用户发起请求时就可以直接使用对象了。
        servlet的初始化会执行init()方法。DispatcherServlet在init()中会执行{
            //创建容器,读取配置文件
            WebApplicationContext wac=new ClassPathXmlApplicationContext("springmvc.xml");
            //把容器放入到ServletContext全局作用域中
            getServletContext().setAttribute(key,wac);
        }
    -->
    <servlet>
        <servlet-name>springmvc</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <!--自定义springmvc读取的配置文件的位置-->
        <init-param>
            <!--springmvc配置文件的位置-->
            <param-name>contextConfigLocation</param-name>
            <!--指定自定义文件的位置-->
            <param-value>classpath:springmvc.xml</param-value>
        </init-param>
        <!--
        在tomcat启动后,创建servlet对象
        load-on-startup:表示tomcat启动后创建对象的顺序。他的值是整数,数值越小,tomcat创建对象的时间越早。数值大于等于0
        -->
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>springmvc</servlet-name>
        <!--
            使用框架的时候,url-pattern可以用两种值
            1.使用扩展名方法,语法:*.xxxx,xxx是自定义的扩展名。常用的方式*.do,*.action,*.mvc等等
            http://localhost:8080/myweb/some.do
            2.使用斜杠"/"
        -->
        <url-pattern>*.do</url-pattern>
    </servlet-mapping>

如果使用“/”会出现哪些问题?
客户端请求的静态数据如html、js、图片等资源一般都会交给tomcat来进行处理

<!--tomcat的web.xml-->
    <servlet-mapping>
        <servlet-name>default</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>

如果加了"/",那么因为我们的web.xml比tocmat的优先级更高,会导致静态资源将优先交给我们的DispatcherServlet中央调度器来进行处理,进而使得静态资源404

<!--我们自己的web.xml-->
    <servlet-mapping>
        <servlet-name>springmvc</servlet-name>
			<!--
            当你的项目中使用"/",它会替代tomcat中的default。
            导致所有的静态资源都给DispatcherServlet处理,默认情况下DispatcherServlet没有处理静态资源的能力。
            没有控制器对象处理静态资源的访问。所以静态资源(html、js、图片、css)都是404
			
			我们自己的动态资源some.do还是能够继续访问的,因为我们的程序中有相关的控制器对其进行处理。
			-->
        <url-pattern>/</url-pattern>
    </servlet-mapping>

如何解决静态资源的冲突?
1)使用<mvc:default-servlet-handler>

    <!--
        第一种处理静态资源的方式:
            需要在SpringMVC的配置文件中加入<mvc:default-servlet-handler>
            原理:加入这个标签后,框架会创建控制器对象DefaultServletHttpRequestHandler(类似于我们自己的控制器)
            DefaultServletHttpRequestHandler这个对象可以接收的请求转发给tomcat的default这个servlet。
    -->
    
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值