2.1 注解开发入门案例
修改springmvc的 配置文件
把前面的项目复制一份,修改一个DispatchServlet-Servlet.xml配置文件
|
<!-- 1.配置注解扫描位置 --> <context:component-scan base-package="com.gyf.backoffice.web.controller"/>
<!-- 2. 配置处理器映射,通过注解来查找 --> <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping"/> <!-- 3.配置注解处理适配器来执行控制器的方法 --> <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter"/>
<!-- 配置springmvc视图解析器 视图解析器解析的视频路径为:前缀 + 后缀 --> <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="prefix" value="/WEB-INF/views"/> <property name="suffix" value=".jsp"/> </bean> |
把UserController修改下
|
|
修改Tomcat运行的jdk版本
因为3.2的springmvc注解与jdk1.8不兼容,跑tomat时会报错,如图
|
|
解决办法1:升级spring到4.0的版本
解决办法2:修改Tomcat运行的jdk版本
|
|
测试注解配置的访问
|
|
MVC:annotation-driven
|
代化mvc配置文件 |
|
|
2.2 RequestMapping讲解
配置请求路径映射路径
写法:
|
@RequestMapping(“list”) @RequestMapping(“/list.do”) @RequestMapping(value=”/list.do”) @RequestMapping(value = "/list3",method=RequestMethod.POST) 只能使用POST方法 @RequestMapping(value = "/list3",method=RequestMethod.Get) 只能使用GET方法 |
|
|
自定义根路径
可以控制器上添加一个RequestMapping,如图
|
|
|
|
2.3接收请求参数
封装参数分析
参数类型有:基本类型,int,String等等基本类型, Pojo类
Struts2参数:基于属性封装,在action会添加属性,提供set方法。
Springmvc参数封装:基于方法进行封装。
接收int,String,Date,数组类型
|
在views/user中提供一个form表单 |
|
|
|
在UserController提供一个用户注册的方法 |
|
|
接收pojo类型
|
创建一个pojo User类型 |
|
|
|
配置一个注册方法 |
|
|
|
springmvc接收参数时不需要像struts那样,在表单标签添加user.username这第一个东西 |
|
|
接收包装类型参数
|
把User写成一个类的属性 |
|
|
|
添加一个注册方法 |
|
|
|
修改form表单 |
|
|
接收集合List类型参数
|
在User扩展中添加一个集合 |
|
|
|
添加一个注册 的方法,参数写UserExt |
|
|
|
表单 |
|
|
接收集合Map类型参数
|
UserExt上添加一个Map |
|
|
|
添加一个注册方法 |
|
|
|
表单 |
|
|
2.4 Spring与Struts的区别【面试题】
实现机制:
Struts2是基于过滤器实现的。
Springmvc基于servlet实现。
运行速度:
Servlet比过滤器快。
Struts2是多例
每一次请求,都会创建一个Action对象
请求来了以后,struts2创建多少个对象:ActionContext,valuestack,UAction,ActionSuport,ModelDriven
Springmvc是单例。
同一个Controller请求,只会创建一个Controller
参数封装来分析:
Struts基于属性进行封装,Action有参数属性。
Springmvc基于方法封装,参数是写在Controller的方法。