SpringMVC_非注解(注解)的处理器映射器和适配器
2015-11-29 14:08
483 查看
1 非注解的处理器映射器和处理器适配器
非注解的处理器映射器<!-- 处理器映射器 将Bean的Name作为url进行查找,需要在配置Handler时指定beanname(就是url) --> <bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"/> <!-- 另一种处理器映射器 --> <bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping"> <property name="mappings"> <props> <prop key="/queryItem3.action">ItemsController1</prop> <prop key="/queryItem4.action">ItemsController2</prop> </props> </property> </bean>多个处理器映射器可以并存,前端控制器判断url能让哪些处理器映射器映射,就让正确的映射器处理。
非注解的处理器适配器
org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter
要求编写的Handler实现 Controller接口。
org.springframework.web.servlet.mvc.HttpRequestHandlerAdapter
要求编写的Handler实现 HttpRequestHandler接口。
package cn.minyan.controller; import java.io.IOException; import java.util.ArrayList; import java.util.List; import javax.servlet.ServletException; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.springframework.web.HttpRequestHandler; import cn.minyan.bean.Items; public class ItemsController2 implements HttpRequestHandler{ @Override public void handleRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //调用service查找数据库,查询商品列表,这里使用静态数据模拟 List<Items> itemList = new ArrayList<Items>(); Items item1 = new Items(); item1.setName("联想笔记本"); item1.setPrice(3000f); item1.setDetail("ThinkPad T430联想笔记本"); Items item2 = new Items(); item2.setName("苹果手机"); item2.setPrice(5200f); item2.setDetail("Iphone5S"); itemList.add(item1); itemList.add(item2); request.setAttribute("itemList", itemList); request.getRequestDispatcher("/WEB-INF/jsp/items/items.jsp").forward(request, response); } }//使用此方法可以通过修改response,设置响应的数据格式,比如响应json数据
response.setCharacterEncoding("utf-8"); response.setContentType("application/json;charset=utf-8"); response.getWriter().write("json串");
-------------------------------------------------------------------------------------------------------------------------------------------------------------
以下的注解的处理器映射器和处理器适配器才是开中常用的:
-------------------------------------------------------------------------------------------------------------------------------------------------------------
2 注解的处理器映射器和处理器适配器
在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注解适配器。
配置注解映射器和适配器:
<!-- 注解处理器映射器 --> <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping"/> <!-- 注解处理器适配器 --> <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter"/>
<!-- 使用 mvc:annotation-driven代替上边注解映射器和注解适配器配置 mvc:annotation-driven默认加载很多的参数绑定方法, 比如json转换解析器就默认加载了,如果使用mvc:annotation-driven不用配置上边的RequestMappingHandlerMapping和RequestMappingHandlerAdapter 实际开发时使用mvc:annotation-driven --> <!-- <mvc:annotation-driven></mvc:annotation-driven> -->
开发注解的处理器映射器和处理器适配器:
注解的映射器和注解的适配器必须配对使用
//使用Controller标识 它是一个控制器 @Controller public class ItemsController3 { //商品查询列表 //@RequestMapping实现 对queryItems方法和url进行映射,一个方法对应一个url //一般建议将url和方法写成一样 @RequestMapping("/queryItems") public ModelAndView queryItems()throws Exception{ //调用service查找 数据库,查询商品列表,这里使用静态数据模拟 List<Items> itemsList = new ArrayList<Items>(); //向list中填充静态数据 Items items_1 = new Items(); items_1.setName("联想笔记本"); items_1.setPrice(6000f); items_1.setDetail("ThinkPad T430 联想笔记本电脑!"); Items items_2 = new Items(); items_2.setName("苹果手机"); items_2.setPrice(5000f); items_2.setDetail("iphone6苹果手机!"); itemsList.add(items_1); itemsList.add(items_2); //返回ModelAndView ModelAndView modelAndView = new ModelAndView(); //相当 于request的setAttribut,在jsp页面中通过itemsList取数据 modelAndView.addObject("itemsList", itemsList); //指定视图 modelAndView.setViewName("/WEB-INF/jsp/items/itemsList.jsp"); return modelAndView; }
在spring容器中加载Handler:
<!-- 对于注解的Handler可以单个配置 实际开发中建议使用组件扫描 --> <!-- <bean class="cn.minyan.controller.ItemsController3" /> --> <!-- 可以扫描controller、service、... 这里让扫描controller,指定controller的包 --> <context:component-scan base-package="cn.minyan.controller"></context:component-scan>
相关文章推荐
- 浅谈Java基础(一)
- struts2中iterator标签的相关使用
- Eclipse 工具
- eclipse使用基础--让toolbar显示自己想要的内容
- java 获取当前路径
- 基于注解的Spring多数据源配置和使用
- 【项目实战】——Java实现伪静态——urlrewrite
- Struts2配置说明
- Spring事务的传播行为 @Transactional(转)
- SpringMVC_入门程序
- Spring MVC 中 HandlerInterceptorAdapter的使用
- Spring中Bean的生命周期
- Java - 认识 JDBC
- 1.交通聚类:编辑距离 (Levenshtein距离)Java实现
- java中的堆、栈和常量池
- cassandra client in Java——cassandra总结(五)
- 安装TestNG在eclipse中的插件
- Java集合概述
- Java中的多态(polymorphism)和动态绑定(dynamic binding)
- Java-泛型