码迷,mamicode.com
首页 > Web开发 > 详细

SpriingMVC执行流程结构

时间:2017-08-20 10:23:09      阅读:260      评论:0      收藏:0      [点我收藏+]

标签:初始化   web应用开发   index.jsp   apt   核心   需要   添加   结构   控制   

 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>

SpriingMVC执行流程结构

标签:初始化   web应用开发   index.jsp   apt   核心   需要   添加   结构   控制   

原文地址:http://www.cnblogs.com/wangbenqing/p/7398841.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!