Spring MVC的基本配置1

Spring MVC

Spring MVC介绍

  • 什么是MVC
    它是Spring框架的一部分,负责表示层
  • MVC的好处
  • MVC设计模式

引入MVC框架

  • 没有使用MVC框架时候的不足
    请求参数封装很麻烦
    结果视图耦合性强(比如xxx.jsp里边不知道有多少乱七八糟的页面)
    url和(controller里的方法)映射不方便(用注解直接填url)
    controller的实现有约束
  • MVC和SpringMVC
    MVC是一种架构,是一种设计思想
    而SpringMVC是这种架构下的MVC层的一个框架(工具类)

Spring MVC 的架构

  • MVC框架 接收请求,获取数据,分配任务,结果转向(之前在servlet做)
    高级框架的底层都是JavaEE规范(servlet、cookies、session等等)
    这里写图片描述

导包

这里写图片描述

逻辑链

web.xml中初始化DispatcherServlet,并且用init-param说明spring的配置文件,告诉Servlet去这里创建Bean,

在web.xml配置核心控制器DispatcherServlet

<?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_3_1.xsd"
         version="3.1"
         metadata-complete="true">
    <!--你要调用的核心控制器的id 和全类名DispatcherServlet-->
    <servlet>
        <servlet-name>springmvcservlet</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <!--初始化参数,将applicationContext.xml传给contextConfigLocation-->
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>classpath:applicationContext.xml</param-value>
        </init-param>
    </servlet>

    <!--你要调用的核心控制器的id和能够访问到这个servlet的url-->
    <servlet-mapping>
        <servlet-name>springmvcservlet</servlet-name>
        <url-pattern>*.do</url-pattern>
    </servlet-mapping>

</web-app>

在Springmvc.xml(src文件夹里的xml文件,沿用之前的applicationContext.xml)配置Spring mvc依赖的Bean

代码见上边

实现请求处理类,并且配置访问URL

这里写图片描述

  • 浏览器中输入了hello.do,由于已经配置了BeanNameUrlHandlerMapping,它会帮你找到hello.do对应的handler
    而handler是如何实现的呢?
  • 继承org.springframework.web.servlet.mvc.Controller,重写方法
@Controller
public class FirstController implements org.springframework.web.servlet.mvc.Controller {
    @Autowired
    Service myservice;
    public void test(){
        System.out.println("haha12345");
    }

    @Override
    public ModelAndView handleRequest(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) throws Exception {
        System.out.println("haha12345");
        return null;
    }
}

撸一遍逻辑

  • 先在web.xml中配核心servlet——DispatcherServlet;
  • 用户输入URL,DispatcherServlet接收到以后转向里边配置好的contextConfigLocation,转向它的value(applicationContext.xml),获得spring的BeanContainer的控制权,可以获得Bean;
  • 实例化applicationContext.xml中的bean,其中的HandlerMapping根据你输入的url转向名叫url的bean(这个bean继承了controller类,并且重写了handleRequest方法),并且通过HandlerAdaper找到对应的handler方法进行处理;
  • HandlerAdaper把ModelAndView传给核心,核心给ViewResolver进行视图解析、View进行数据填充,最后把生成的结果保存咋response里边返回给用户。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章