2012年终总结----spring mvc

今年在工作中使用到了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:这篇文章只是在总结.没有结合其他部分的东西进行一个系统的讲解.在其他文章中会有系统的介绍.

 

 

 

 

 

 

1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值