zoukankan      html  css  js  c++  java
  • SpriingMVC执行流程结构

     SpringMVC也叫spring web mvc,属于表现层的框架,是Spring框架的一部分。

     Spring  MVC请求流程图:

    request-------->DispatcherServler(中央调度器/前端控制器)----->
    HandlerMapping(处理器映射器)------>返回一个执行链----->将执行链转交给HandlerAdaptor(处理器适配器)----->调度Handler(处理器)----->
    ModelAndView----->先将结果交给HandlerAdaptor,然后再由HandlerAdaptor转交给 DispatcherServler--------->DispatcherServler调度ViewResolver(视图解析器)---->交给DispatcherServler------->
    寻找View---->View做出响应(response)

    关于urlpattern说法

    最好配成*.do
    不能配成/*      无法访问*.jsp等动态资源
    最好也不要配成/   无法访问静态资源
    不得不配成/
    一切源于Restful编程  rest

    不能配置为/*

    DispatcherServlet会将向动态页面请求,即向jsp页面的跳转请求也当做是一个普通的Controller请求。中央调度器会调用处理器映射器为其查找相应的处理器。当然是找不到的。jsp页面会报404错误
    结论:/*会拦截动态资源

    不得不配成/

    方案一:使用Tomcat默认的Servlet解决

    方案二:使用MVC的default-servlet-handler

    会将对静态资源的访问请求通过HandlerMapping映射到默认Servlet请求处理器DefaultServletRequestHandler对象。而该处理器调用了Tomcat的DefaultServlet来处理静态资源的访问请求。当然需要引入mvc约束

    <!--将静态资源交流系统默认的servlet处理-->
    <mvc:default-servlet-handler/>
    
    

    方式三:使用MVC的resource解决

    在Spring3.0.4之后,Spring定义了专门用于处理静态资源请求的处理器ResourceHttpRequestHandler。并且添加了<mvc:resources/>标签,专门用于解决静态资源无法访问问题。

    <!--方式三:使用SPring3之后自己提供的处理器,处理静态资源-->
    <mvc:resources mapping="/img/**" location="/img/"></mvc:resources>

    Location:静态资源所在目录
    mapping: 对资源的请求
    注意:需要Tomcat7支持

    Spring MVC环境搭配 (兼第一个案例)

    在MyEclipse中新建Web Project后,使用Spring MVC框架的步骤如下:

         (1)引入jar文件

                   下载需要的jar文件:    spring-web-3.2.13.RELEASE.jar:在web应用开发时使用Spring框架所需的核心类。

                                                        spreing-webmvc-3.2.13.RELEASE.jar:Spring MVC框架相关的所有类,包含框架的servlets,Web MVC框架,以及对控制器和视图的支持。

    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-webmvc</artifactId>
        <version>3.2.13.RELEASE</version>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-web</artifactId>
        <version>4.3.9.RELEASE</version>
    </dependency>

         (2)Spring MVC配置:

                  *在web.xml中配置Servlet,定义DispatcherServlet.

                    Spring MVC是基于Servlet的,DispatcherServlet是整个Spring MVC框架的核心,它负责截获请求并将其分派给相应的处理器处理。

                    

    <!--配置Spring MVC的核心控制器DispatcherServlet-->
    <servlet>
        <servlet-name>springmvc</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <!--初始化参数-->
    <init-param>
          <param-name>contextConfigLocation</param-name>
          <param-value>classpath:spring.xml</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>  只要tomcat一启动就将servlet创建好,并存入内存。
      </servlet>
    
      <servlet-mapping>
        <servlet-name>springmvc</servlet-name>
        <url-pattern>/</url-pattern>
      </servlet-mapping>

                  *创建Spring MVC的配置文件(springmvc-servlet.xml)

         xmlns:mvc="http://www.springframework.org/schema/mvc"
         http://www.springframework.org/schema/mvc
         http://www.springframework.org/schema/mvc/spring-mvc.xsd
      
         <!--将静态资源交流系统默认的servlet处理-->
        <!--      <mvc:default-servlet-handler/> -->
    <!--方式三:使用SPring3之后自己提供的处理器,处理静态资源-->
     <!--<mvc:resources mapping="/img/**" location="/img/"></mvc:resources>-->
         <!--处理器映射器-->
    <bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"></bean>
    
         <!--注册处理器-->
    <bean id="/hello.do" class="cn.happy.controller.Onecontriller"></bean>
    
       <!--视图解析器-->
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix" value="/WEB-INF/"></property>
        <property name="suffix" value=".jsp"></property>
    </bean>
     (3)创建Controller(处理请求的控制器)
    
          在src下创建cn.happy.controller包,并在该包下新建Onecontriller类,该类需要继承org.springframework.web.servlet.mvc.Controller;并实现返回值是ModelAndView的handleRequest方法。
    public class Onecontriller implements Controller {
        public ModelAndView handleRequest(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) throws Exception {
            ModelAndView  mv=new ModelAndView();
           mv.addObject("uname","啦啦啦啦");      // 如图二
    mv.setViewName("index"); return mv; }}
      (4)创建View
    在WEB-INF下创建一个index.jsp页面
    <body>
    <h3>人生若是无误,铅笔何需橡皮!${uname}</h3>
    <img src="${pageContext.request.contextPath}/img/1.jpg">
    </body>
  • 相关阅读:
    LeetCode
    数据流中的中位数
    二叉搜索树的第k个结点
    对称的二叉树
    按之字形顺序打印二叉树
    把二叉树打印成多行
    二叉树的下一个结点
    链表中环的入口结点
    删除链表中重复的结点
    不用加减乘除做加法
  • 原文地址:https://www.cnblogs.com/wangbenqing/p/7398841.html
Copyright © 2011-2022 走看看