每一年都奔走在自己热爱里

没有人是一座孤岛,总有谁爱着你

SpringMVC学习笔记(一)-概述

SpringMVC学习笔记(一)-概述

  • SpringMVC也是一个容器,使用IOC管理界面层中的控制器对象,底层基于Servlet
核心Servlet--DispatcherServlet
  • DispatcherServlet是SpringMVC框架的一个Servlet对象,负责接受请求,响应处理结果,父类为HttpServlet,也称为前端控制器(front controller)
  • 在SpringMVC中使用控制器对象代替Servlet行使其职能
  • 在servlet的init()方法中,创建SpringMVC中的容器对象
配置
  • Maven配置
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-webmvc</artifactId>
    <version>5.3.1</version>
</dependency>
  • web.xml配置

    • 默认解析WEB-INF下的<servlet-name>-servlet.xml文档,如果没有会报出初始化异常
    • 使用容器WebApplicationContext
    <servlet>
        <servlet-name>dispatcherServlet</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <!--自定义SpringMVC配置文件的路径-->
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>classpath:springmvc.xml</param-value>
        </init-param>
        <!--设置服务器启动时即创建容器,数值越小创建对象时间越小-->
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>dispatcherServlet</servlet-name>
        <!--将所有请求交予前端控制器处理,
            1.使用自定义拓展名,格式:*.xxx,例如:*.do、*.action、*.mvc等等,在存在设置的拓展名结尾时匹配成功,注意不能使用*.jsp。
            2.使用"/"	
        -->
        <url-pattern>/</url-pattern>
    </servlet-mapping>
    
  • @Controller

    • 后端控制器,放置于类上,表示创建此类的对象并放置于SpringMVC容器中
  • @RequestMapping

    • 请求映射,放置于控制器类(表示类中方法的公共地址)上或者控制器方法上,作用类比于<url-pattern>
    • 控制器中的方法的形参由于设置请求参数,返回值表示本次请求的处理结果
    • 属性:
      • value,表示请求的uri地址,唯一且以/开始,可配置多个请求拦截路径
      • RequestMethod[] method,设置请求方式,符合指定的请求方式才处理
  • ModelAndView

    • 模型和视图,代表本次请求的处理结果即数据和视图
    • 方法:
      • mv.addObject(),设置数据,在框架的后续处理中调用request.setAttribute()
      • mv.setViewName(),设置视图,值应是视图的完整路径,后续使用request.getRequestDispatcher()转发
  • SpringMVC请求的处理过程

    • 发起请求-->Tomcat接受请求-->DispatcherServlet调度(配置了拦截路径)-->分配控制器-->控制器方法处理返回结果

    • 将访问页面资源置于WEB-INF下用于控制非正常访问

    • 配置视图解析器用于简化操作(可选):

      • <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
            <!--前缀-->
            <property name="prefix" value="/WEB-INF/pages/"/>
            <!--后缀-->
            <property name="suffix" value=".jsp"/>
        </bean>
        
      • 若配置了视图解析器,此时视图的值设置为视图的逻辑名

posted @ 2020-12-13 11:03  雨下整夜~  阅读(104)  评论(0)    收藏  举报