今年在工作中使用到了spring的mvc,工作的单位从spring1.x开始就使用了其mvc。项目的组合方式都是围绕spring进行的,如spring mvc+hibernate。或者是直接使用spring mvc+jdbc的方式(使用spring 的jdbctemplet)再配合其他如调度框架quartz进行任务调度,第三方缓存ehcache、memecache等进行开发。看到了其简单的高效、开发的迅速。看了公司的多个项目.综合起来想写那么一篇总结。刚好进行年终盘点。呵呵

对应的源码在http://blog.csdn.net/yanghuiyu123/article/details/8513512

1、使用spring mvc的配置(非注解篇,注解篇下面进行)

web.xml中加入context监听

<listener>
        <listener-class>
            org.springframework.web.context.ContextLoaderListener
        </listener-class>
    </listener>

加入spring的控制过滤,过滤.do结尾的请求

<servlet>
    <servlet-name>framework</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <init-param>
      <param-name>contextConfigLocation</param-name>
      <param-value>
       /WEB-INF/framework-servlet.xml
      </param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
  </servlet>

<servlet-mapping>
    <servlet-name>framework</servlet-name>
    <url-pattern>*.do</url-pattern>
  </servlet-mapping>

在对应的framework-servlet.xml中加入处理映射的配置即xxx.do映射到哪个controller进行处理:

<bean id="defaultHandlerMapping" class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"/>

同时也可以加入其它的一些配置如上传文件的支持

<bean id="multipartResolver"
  class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
  <!-- 设置上传文件的最大尺寸为10MB -->
  <property name="maxUploadSize">
    <value>10485760</value>
  </property>
  </bean>

又或者是其它如国际化的支持

<bean id="messageSource" class="org.springframework.context.support.ResourceBundleMessageSource">
    <property name="basename"><value>messages</value></property>
  </bean>

到这里就可以简单的使用springmvc了.

只需要在配置文件中配置你的请求如<bean id="/jsp/user/loginController.do" class="com.xxx.UserLoginController"></bean>

当然,这里所写的类必须实现controller接口,或者继承MultiActionController基类.通常在项目中使用的是继承MultiActionController。如果想要更加的灵活那么可以继承实现AbstractController类。由于在一个处理类中会有各种操作方法,增删改查等,但是又不可能为每个方法创建一个类。所以为们引入一个方法解析器,用来解析控制类中的方法名称,这样为们就可以在需要save表单的时候只需要在/jsp/user/loginController.do后面加上一个method=save就可以调用UserLoginController中的save方法类。

<bean id="methodResover" class="org.springframework.web.servlet.mvc.multiaction.ParameterMethodNameResolver" >

<property name="paramName" value="method" />

</bean>

完整的bean为

<bean name="/jsp/user/loginController.do" class="com.xxx.UserLoginController">

<property name="methodNameResolver" ref="methodResover" />

</bean>

spring还提供了其他两种methodNameResolver:InternalPathMethodNameResolver和PropertiesMethodNameResolver但是这两种解析方法配置过于复杂。

如PropertiesMethodNameResolver需要在PropertiesMethodNameResolver配置中加入urlMapping的配置用来映射actionName。InternalPathMethodNameResolver则直接可以通过url来确定应该访问哪个方法,

如/jsp/user/save.do则访问save方法./jsp/user/xxxx.do则访问xxxx方法.

在MultiActionController中,spring提供了bind来绑定表单数据bind(request,command).

下面说说注解的使用.web.xml配置一样.只是在framework.xml中的配置不一样了。简单了很多.

加入<context:component-scan base-package="com.xxxx.xxx"/>需要扫描的路径,最好dao、service、controller分开写.

<mvc:annotation-driven />加入注解驱动器

spring 3.1之前使用

<bean class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping">  </bean>

<bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">  </bean>

注解请求映射器,用来处理@RequestMapping映射的路径及资源分配。

spring 3.1之后使用RequestMappingHandlerMapping和RequestMappingHandlerAdapter。<bean   class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping"/>

<bean   class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter"/>

加入资源解析器

<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">

<property name="prefix" value="/WEB-INF/jsp/" />

<property name="suffix" value="*" />

</bean>

随后即可用@Controller @Service @RequestMapping @Repository @Component @Resource @Autowire @scope等注解进行开发

虽然所有的组件不管是dao还是service都可以用@Component 来注册。但是为了更加清晰的表达我们的程序结构。我们用@Repository注解数据访问层用@serivice注解服务层,用@Controller注解控制层.将其他一些组件用@Component 注解。在实现过程中用@Resource 进行资源的注入。也可用spring自己的@Autowire 进行注解不过Autowire 是type注解。其只是匹配类型。@resource则是先匹配name,如果没有name再匹配类型。不过Autowire也可配合@Qualifier("beanName")来进行name匹配。@ResponseBody用来讲方法中返回的信息进行相应的格式化。如将返回的list转换为格式的数据

jackson-core-asl-1.7.2.jar

jackson-mapper-asl-1.7.2.jar

需要以上两个包.同时在方法上加入@ResponseBody即可。

@scope设定bean的作用域如@scope(value="singleton")单例

至此spring的mvc开发已经可以进行。用spring的mvc开发是很简单的。如果再加上spring的jdbcTemplet等数据库模板整个程序就不再需要orm的介入了。

ps:这篇文章只是在总结.没有结合其他部分的东西进行一个系统的讲解.在其他文章中会有系统的介绍.

2012年终总结----spring mvc相关推荐

  1. 年终总结spring mvc 代码篇结合之前写的

    这个例子比较简单 实现的是spring mvc+jdbctemplate.下面有空会加入hibernate的实现.后续会加入quartz持久化的实现.lucene的简单用法等. web.xml < ...

  2. 2012年终总结spring mvc-----AOP

    aop面向切面编程,spring的核心为ioc容器及aop切面编程.如果切面运用得力可以帮助你少写许多代码而又不会破坏程序的结构. 在spring的aop中.到现在为止我接触到了几种拦截器的使用.运用 ...

  3. Spring MVC 学习笔记 对locale和theme的支持

    Spring MVC 学习笔记 对locale和theme的支持 Locale Spring MVC缺省使用AcceptHeaderLocaleResolver来根据request header中的 ...

  4. Spring MVC 学习总结(二)——控制器定义与@RequestMapping详解

    Spring MVC 学习总结(二)--控制器定义与@RequestMapping详解 目录 一.控制器定义 1.1.实现接口Controller定义控制器 1.2.使用注解@Controller定义 ...

  5. Spring MVC 解决日期类型动态绑定问题

    出处:http://www.cnblogs.com/crazy-fox/archive/2012/02/18/2357699.html ean 名为User,则在相同的包中存在UserEditor类可 ...

  6. spring mvc 异常统一处理方式

    spring mvc 异常统一处理方式 参考文章: (1)spring mvc 异常统一处理方式 (2)https://www.cnblogs.com/xd502djj/archive/2012/09 ...

  7. 初学spring mvc

    初学spring mvc,自己学习做了hello world小例子,步骤如下: 1:从springsource.org下载spring的包,从apache.org下载common-logging的包( ...

  8. 转转转![Spring MVC] - 500/404错误处理-SimpleMappingExceptionResolver

    参考博客: http://www.cnblogs.com/dongying/p/6129937.html http://www.cnblogs.com/rollenholt/archive/2012/ ...

  9. Spring MVC 入门

    这篇文章将教你快速地上手使用 Spring 框架. 如果你手上有一本<Spring in Action>, 那么你最好从第三部分"Spring 在 Web 层的应用--建立 We ...

最新文章

  1. LeetCode 213. 打家劫舍 II
  2. java正则表达式笔记
  3. ASP.NET 例程完全代码版(5)——通过web.config配置数据库连接池
  4. html asp:textbox,ASP .NET - TextBox 控件
  5. hibernate clob mysql_Hibernate操作Clob类型数据
  6. introduce to Installsheild X
  7. TCP发送接收数据2
  8. Same Tree - LeetCode
  9. Windows 生成ffmpeg安卓全平台so
  10. 生信技能树课程记录笔记(四)20220527
  11. Laravel框架壁纸图库图片上传下载程序源码
  12. 知识图谱+Recorder︱中文知识图谱API与工具、科研机构与算法框架
  13. request.getParameterValues()
  14. 装修首页自定义全屏视频播放效果gif动态图片制作视频教程播放代码操作设置全屏居中阿里巴巴国际站
  15. FPGA学习(第2节)-FPGA下载程序到flash+文件转换-通过.sof文件产生.jic文件
  16. table(单击行,把当行的单选按钮(radio)设为选中状态,并应用当前样式)
  17. 一个有趣的时间段重叠问题
  18. AE影视后期之跳跃音符制作
  19. 快速定位网页中元素在源代码中的位置
  20. Vue3+Quasar实现ins风格图片墙

热门文章

  1. 配置DHCPv6服务器实验详解
  2. 春节将至,“你算老吉”算不算一步好棋?
  3. 35岁前成功的黄金法则(3)-三大技巧
  4. 11-Little prince's trip to Java-偶数魔方阵之双偶魔方阵
  5. 火影忍者手游服务器维护要多久,火影忍者回归木叶多久一次 | 手游网游页游攻略大全...
  6. Vue 路由跳转的时候没有反应
  7. FLUKE DSX-602 CH设置参照的方法及注意事项
  8. 车辆美容保养APP开发方案
  9. 再谈elasticsearch 高cpu问题
  10. MySQL索引之最左匹配原则