一、springmvc.xml中配置方式
1 <!--注解映射器 --> 2 <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping"/> 3 <!--注解适配器 --> 4 <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter"/>
1 <!-- 使用 mvc:annotation-driven代替上边注解映射器和注解适配器配置 2 mvc:annotation-driven默认加载很多的参数绑定方法, 3 比如json转换解析器就默认加载了,如果使用mvc:annotation-driven不用配置上边的RequestMappingHandlerMapping和RequestMappingHandlerAdapter 4 实际开发时使用mvc:annotation-driven 5 --> 6 <mvc:annotation-driven></mvc:annotation-driven>
二、注解方式开发Controller实例代码
1 package cn.itcast.ssm.controller; 2 3 import java.util.ArrayList; 4 import java.util.List; 5 6 import org.springframework.stereotype.Controller; 7 import org.springframework.web.bind.annotation.RequestMapping; 8 import org.springframework.web.servlet.ModelAndView; 9 10 import cn.itcast.ssm.po.Items; 11 12 //使用Controller标识 它是一个控制器 13 @Controller 14 public class ItemsController3 { 15 16 //商品查询列表 17 //@RequestMapping实现 对queryItems方法和url进行映射,一个方法对应一个url 18 //一般建议将url和方法写成一样 19 @RequestMapping("/queryItems") 20 public ModelAndView queryItems()throws Exception{ 21 22 //调用service查找 数据库,查询商品列表,这里使用静态数据模拟 23 List<Items> itemsList = new ArrayList<Items>(); 24 //向list中填充静态数据 25 26 Items items_1 = new Items(); 27 items_1.setName("联想笔记本"); 28 items_1.setPrice(6000f); 29 items_1.setDetail("ThinkPad T430 联想笔记本电脑!"); 30 31 Items items_2 = new Items(); 32 items_2.setName("苹果手机"); 33 items_2.setPrice(5000f); 34 items_2.setDetail("iphone6苹果手机!"); 35 36 itemsList.add(items_1); 37 itemsList.add(items_2); 38 39 //返回ModelAndView 40 ModelAndView modelAndView = new ModelAndView(); 41 //相当 于request的setAttribut,在jsp页面中通过itemsList取数据 42 modelAndView.addObject("itemsList", itemsList); 43 44 //指定视图 45 //下边的路径,如果在视图解析器中配置jsp路径的前缀和jsp路径的后缀,修改为 46 //modelAndView.setViewName("/WEB-INF/jsp/items/itemsList.jsp"); 47 //上边的路径配置可以不在程序中指定jsp路径的前缀和jsp路径的后缀 48 modelAndView.setViewName("items/itemsList"); 49 50 return modelAndView; 51 52 } 53 }
三、在Spring容器中加载Controller
1 <!-- 对于注解的Handler可以单个配置 2 实际开发中建议使用组件扫描 3 --> 4 <!-- <bean class="cn.itcast.ssm.controller.ItemsController3" /> --> 5 <!-- 可以扫描controller、service、... 6 这里让扫描controller,指定controller的包 7 --> 8 <context:component-scan base-package="cn.itcast.ssm.controller"></context:component-scan>
tips:使用组件扫描器省去在spring容器配置每个controller类的繁琐。使用<context:component-scan自动扫描标记@controller的控制器类。
用到的两个注解:
- @Controller注解:声明一个控制器,组件扫描器会自动找到标有该注解的控制器,并将其声明为Spring 应用上下文中的一个Bean。
- @RequestMapping注解:@RequestMapping(value="/",method=GET),可以将其定义在方法上也可以将其定义在类上。