您的位置:首页 > 编程语言 > Java开发

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>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: