SpringMVC 关键介绍

SpringMVC 关键部分

  一、前端控制器 -- DispatcherServlet

  ※所有J2EE项目都是从web.xml启动,阅读或构建一个J2EE项目,都应该先找web.xml开始。

  ※任何MVC框架都需要一个入口,SpringMVC的入口是在web.xml文件中的核心分发DispatcherServlet;

  ※DispatcherServlet是前端控制器设计模式的实现,提供Spring Web MVC的集中访问点,而且负责职责的分派,而且与Spring IoC容器无缝集成,从而可以获得Spring的所有好处。DispatcherServlet默认使用WebApplicationContext作为上下文,Spring默认配置文件为/WEB-INF/[servlet名字]-servlet.xml;

<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*:mvc-config.xml</param-value>
  </init-param>
  <load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
  <servlet-name>SpringMVC</servlet-name>
  <url-pattern>/</url-pattern>
</servlet-mapping>

  二最简注解映射配置

  笔者使用的是SpringMVC4.x,不用像SpringMVC3.0 时代,配置一大堆的HandlerMapping、HandlerAdapter、Converter。

  对,没有错,你仅仅需要配置一句话:<mvc:annotation-driven/>

  <mvc:annotation-driven/>相当于注册了DefaultAnnotationHandlerMapping和AnnotationMethodHandlerAdapter两个bean,配置一些messageconverter。即解决了@Controller注解的使用前提配置。

  三、静态资源最优处理  

  如果你的DispatcherServlet拦截 *.do这样的URL,就不存在访问不到静态资源的问题,但是要多书写.do。

如果你的DispatcherServlet拦截“/”,拦截了所有的请求,同时对*.js,*.jpg的访问也就被拦截了。  

当然,想要restful风格的话,就必须采用后者,那么就动手来解决一下静态资源问题。

  方案一: 在Spring3.0.4以后版本提供了mvc:resources

  mvc:resources 的使用方法:

<mvc:resources location="/images/" mapping="/images/**"/>

<mvc:resources location="/js/" mapping="/js/**"/>

<mvc:resources location="/css/" mapping="/css/**"/>

  说明:/images/**映射到 ResourceHttpRequestHandler进行处理,location指定静态资源的位置.可以是web application根目录下、jar包里面,这样可以把静态资源压缩到jar包中。cache-period 可以使得静态资源进行web cache

  方案二 ,使用<mvc:default-servlet-handler/>

  说明:<mvc:default-servlet-handler/>  会把"/**" url,注册到SimpleUrlHandlerMapping的urlMap中,把对静态资源的访问由HandlerMapping转到 org.springframework.web.servlet.resource.DefaultServletHttpRequestHandler 处理并返回。

  DefaultServletHttpRequestHandler使用就是各个Servlet容器自己的默认Servlet。

  方案三:激活Tomcat的defaultServlet来处理静态文件

  web.xml中书写代码如下:

<servlet-mapping>
  <servlet-name>default</servlet-name>
  <url-pattern>*.jpg</url-pattern>
  <url-pattern>*.gif</url-pattern>
  <url-pattern>*.png</url-pattern>
  <url-pattern>*.js</url-pattern>
  <url-pattern>*.css</url-pattern>
  <url-pattern>*.html</url-pattern>
</servlet-mapping> 

  说明:本人采用这种方式,Tomcat直接处理静态资源效率较高。缺点就是需要配置多个,每种文件配置一个,并且要写在DispatcherServlet的前面,让defaultServlet先拦截。

  四、视图映射配置

  这点没什么好说的,多种配置方式,直接上一种配置代码: 

<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver" p:prefix="/project/" p:suffix=".jsp" />

  五、文件上传解析器

  SpringMVC实现多文件上传的方式有两种,一种是我们经常使用的以字节流的方式进行文件上传,另外一种是使用SpringMVC包装好的解析器进行上传,这两种方式对于实现多文件上传效率上却有着很大的差距,建议采用后者。

   部分配置如下:

<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
     <property name="defaultEncoding" value="utf-8"></property>
     <property name="maxUploadSize" value="10485760000"></property>
     <property name="maxInMemorySize" value="40960"></property>
</bean>  

  说明:这边不是文件上传专栏,不详细介绍。

  六、控制器扫描

  这部分其实应该归纳在Spring部分,但是SpringMVC也是基于Bean去操作的,需要扫描一下控制器Bean。

  配置代码如下:

<context:component-scan base-package="com.demo"  use-default-filters="false">
    <context:include-filter type="annotation" expression="org.springframework.stereotype.Controller" />
</context:component-scan>
时间: 2024-08-01 10:46:58

SpringMVC 关键介绍的相关文章

SpringMVC Controller 介绍[转]

原文:http://haohaoxuexi.iteye.com/blog/1753271 SpringMVC Controller 介绍 一.简介 在SpringMVC 中,控制器Controller 负责处理由DispatcherServlet 分发的请求,它把用户请求的数据经过业务处理层处理之后封装成一个Model ,然后再把该Model 返回给对应的View 进行展示.在SpringMVC 中提供了一个非常简便的定义Controller 的方法,你无需继承特定的类或实现特定的接口,只需使用

SpringMVC Controller介绍

SpringMVC Controller 介绍 一.简介 在SpringMVC 中,控制器Controller 负责处理由DispatcherServlet 分发的请求,它把用户请求的数据经过业务处理层处理之后封装成一个Model ,然后再把该Model 返回给对应的View 进行展示.在SpringMVC 中提供了一个非常简便的定义Controller 的方法,你无需继承特定的类或实现特定的接口,只需使用@Controller 标记一个类是Controller ,然后使用@RequestMap

SpringMVC Controller介绍(转)

SpringMVC Controller 介绍 一.简介 在SpringMVC 中,控制器Controller 负责处理由DispatcherServlet 分发的请求,它把用户请求的数据经过业务处理层处理之后封装成一个Model ,然后再把该Model 返回给对应的View 进行展示.在SpringMVC 中提供了一个非常简便的定义Controller 的方法,你无需继承特定的类或实现特定的接口,只需使用@Controller 标记一个类是Controller ,然后使用@RequestMap

SpringMVC Controller 介绍

一.简介 在SpringMVC 中,控制器Controller 负责处理由DispatcherServlet 分发的请求,它把用户请求的数据经过业务处理层处理之后封装成一个Model ,然后再把该Model 返回给对应的View 进行展示.在SpringMVC 中提供了一个非常简便的定义Controller 的方法,你无需继承特定的类或实现特定的接口,只需使用@Controller 标记一个类是Controller ,然后使用@RequestMapping 和@RequestParam 等一些注

[转]SpringMVC Controller介绍及常用注解

一.简介 在SpringMVC 中,控制器Controller 负责处理由DispatcherServlet 分发的请求,它把用户请求的数据经过业务处理层处理之后封装成一个Model ,然后再把该Model 返回给对应的View 进行展示.在SpringMVC 中提供了一个非常简便的定义Controller 的方法,你无需继承特定的类或实现特定的接口,只需使用@Controller 标记一个类是Controller ,然后使用@RequestMapping 和@RequestParam 等一些注

SpringMVC Controller介绍及常用注解

一.简介 在SpringMVC 中,控制器Controller 负责处理由DispatcherServlet 分发的请求,它把用户请求的数据经过业务处理层处理之后封装成一个Model ,然后再把该Model 返回给对应的View 进行展示.在SpringMVC 中提供了一个非常简便的定义Controller 的方法,你无需继承特定的类或实现特定的接口,只需使用@Controller 标记一个类是Controller ,然后使用@RequestMapping 和@RequestParam 等一些注

SpringMVC相关介绍

基于注解的SpringMVC的相关介绍 SpringMVC是一个基于DispatcherServlet的MVC框架,每一个请求最先访问的都是DispatcherServlet,DispatcherServlet负责转发每一个Request请求给相应的Handler,Handler处理以后再返回相应的视图(View)和模型(Model),返回的视图和模型都可以不指定,即可以只返回Model或只返回View或都不返回.在使用注解的SpringMVC中,处理器Handler是基于@Controller

【转】SpringMVC Controller 介绍

转自:原文url 一.简介 在SpringMVC 中,控制器Controller 负责处理由DispatcherServlet 分发的请求,它把用户请求的数据经过业务处理层处理之后封装成一个Model ,然后再把该Model 返回给对应的View 进行展示.在SpringMVC 中提供了一个非常简便的定义Controller 的方法,你无需继承特定的类或实现特定的接口,只需使用@Controller 标记一个类是Controller ,然后使用@RequestMapping 和@RequestP

SpringMVC Controller介绍及常见注解

一.简介 在SpringMVC中,控制器Controller负责处理由DispatcherServlet分发的请求,它把用户请求的数据经过业务处理层处理之后封装成一个Model,然后再把该Model返回给对应的View进行展示.在SpringMVC中提供了一个非常简单的定义Controller的方法,你无需继承特定的类或实现特定的接口,只需使用@Controller标记一个类是Controller,然后使用@RequestMapping和@RequestParam等一些注解用以定义URL请求和C