什么是springmvc
springmvc是spring框架的一个模块,springmvc和spring无需通过中间整个层进行整合,它是一个基于mvc的web框架。
springmvc与struts2的区别
- springmvc是基于方法开发的,struts2是基于类开发的。springmvc将url和controller方法映射,映射成功后springmvc生成一个Handler对象(也就是controller),对象中只包括了映射的method,方法执行结束后,形参数据销毁。
- springmvc可以进行单例开发,并且建议使用单例开发,struts2只能多例开发(struts2通过类成员变量接收数据,多个线程中的数据可能不一样,所以不能使用单例开发)。
- 经过实际的测试,struts2速度慢,是因为使用了struts标签,所以在使用struts2进行开发的时候,建议使用jstl。
springmvc框架执行流程
用入门程序来学习springmvc
springmvc运行环境
jar包下载地址(mybatis+spring(包括springmvc)所有jar包):
http://download.csdn.net/detail/jinzili777/9480604
配置前端控制器
在web.xml文件中,
1 | <!-- springmvc前端控制器 --> |
非注解的处理器映射器和适配器
在classpath下的springmvc.xml中
不使用注解的处理器适配器
此方法只能执行实现了Controller接口的Handler,下面是一个小demo
开发Handler
1 | public class ItemsController1 implements Controller { |
setViewName()方法中是转发到的jsp页面,页面这里不再赘述,在这个jsp页面可以取到request域中的itemsList。
在spring容器加载Handler
1 | <bean name="/queryItems.action" class="cn.jzl.ssm.controller.ItemsController1"></bean> |
配置不使用注解的处理器映射器1
2
3
4<!--
将bean的name作为url进行查找,需要在配置Handler时指定beanname(就是url)
-->
<bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"/>
配置视图解析器
1 | <!-- 视图解析器 |
注解的处理器映射器和适配器
在spring3.1之前使用
org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping注解映射器。
在spring3.1之后使用
org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping注解映射器。
在spring3.1之前使用
org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter注解适配器。
在spring3.1之后使用
org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter注解适配器。
配置注解映射器和适配器
1 | <!-- 注解映射器 --> |
开发注解Handler
1 | //使用Controller标识 它是一个控制器 |
@controller注解必须要加,作用标识类是一个Handler处理器。
@requestMapping注解必须要加,作用:
1、对url和Handler的方法进行映射。
2、可以窄化请求映射,设置Handler的根路径,url就是根路径+子路径请求方式
3、可以限制http请求的方法
映射成功后,springmvc框架生成一个Handler对象,对象中只包括 一个映射成功的method。
在spring容器中加载Handler
1 | <!-- 对于注解的Handler可以单个配置 --> |
配置视图解析器方法不变
使用mvc:annotation-driven
配置映射器和适配器
使用如下配置,可以代替第二种方法中注解的适配器和映射器
1 | <mvc:annotation-driven></mvc:annotation-driven> |
开发注解Handler
与第二种方法开发方法一致
配置视图解析器方法不变
小结
在学习并使用springmvc的过程中,了解其执行流程是非常重要的。在实际使用过程中会碰到各式各样的问题,也不是一篇博客或一部视频能够介绍完全的,所以学习没有捷径,只有通过一行行的代码累加、沉淀,多敲几行代码,理解就会加深几分。共勉。