springmvc中非注解处理器Handler的开发

通过上一篇springmvc的原理学习后。

不同的处理器适配器(HandlerAdapter)执行实现不同规则接口的处理器(Handler),所以开发Handler对应于HandlerAtapter

1. SimpleControllerHandlerAdapter(处理器适配器)执行实现Controller接口处理器(Handler)

DemoController 实现

public class DemoController implements Controller {

	@Override
	public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) throws Exception {
		
		System.out.println("我是dispatch1下handler");
		
		// 调用service层处理数据,为简单demo,这里使用静态数据
		List list = new ArrayList();
		list.add(new User((long) 1,"zhangsan"));
		list.add(new User((long) 2,"lisi"));
		
		//创建方法返回对象
		ModelAndView modelview = new ModelAndView();
		//查看ModelAndView源码发现一个对象含有modelMap,view,HttpStatus,cleared属性
		// 将数据存储到modelMap ,该方法相当于request.setAttribute();
		modelview.addObject("list", list);
		
		//指定视图
		modelview.setViewName("/WEB-INF/jsp/demo/demo.jsp");
		
		return modelview;
	}

}

2. HttpRequestHandlerAdapter(处理器适配器)执行实现HttpRequestHandler接口的处理器(Handler)

DemoHttpRequestHandler 实现

public class DemoHttpRequestHandler implements HttpRequestHandler {

	@Override
	public void handleRequest(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		System.out.println("我是dispatch1下httprequesthandler");
		
		// 调用service层处理数据,为简单demo,这里使用静态数据
		List list = new ArrayList();
		list.add(new User((long) 1,"zhangsan"));
		list.add(new User((long) 2,"lisi"));
		
		//存放数据
		request.setAttribute("list", list);
		
		//跳转页面
		request.getRequestDispatcher("/WEB-INF/jsp/demo/demo.jsp").forward(request, response);
	}

}

3 . 前端控制器DispatchServlet的注册(可以同时存在多个DispatcheServlet)

web.xml



 
   
  
  	springmvc
  	org.springframework.web.servlet.DispatcherServlet
  	
  	
  		contextConfigLocation
  		classpath:springmvc.xml
  	
  	1
  
  
  
  
  	springmvc
  	*.do
  
  
   
  	springmvc1
  	org.springframework.web.servlet.DispatcherServlet
  	
  		contextConfigLocation
  		classpath:springmvc1.xml
  	
  	2
  
  
  	springmvc1
  	*.action
  

  
    index.jsp
  


4.  其中一个DispatchServlet对应springmvc.xml

springmvc.xml


 
      
      
        
		 
	
	
		
			
				demoContorller
				
				httpRequestHandler
			
		
	
	
	
    
    
    
   	
	
	
	
	
	 
	
	
	
	
	
    

5. 未配置各大组件时时,springmvc会默认启动org.springframework.web/servlet.DispatcherServlet.properties下所有配置

DispatcherServlet.properties

# Default implementation classes for DispatcherServlet's strategy interfaces.
# Used as fallback when no matching beans are found in the DispatcherServlet context.
# Not meant to be customized by application developers.

org.springframework.web.servlet.LocaleResolver=org.springframework.web.servlet.i18n.AcceptHeaderLocaleResolver

org.springframework.web.servlet.ThemeResolver=org.springframework.web.servlet.theme.FixedThemeResolver

org.springframework.web.servlet.HandlerMapping=org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping,\
	org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping

org.springframework.web.servlet.HandlerAdapter=org.springframework.web.servlet.mvc.HttpRequestHandlerAdapter,\
	org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter,\
	org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter

org.springframework.web.servlet.HandlerExceptionResolver=org.springframework.web.servlet.mvc.method.annotation.ExceptionHandlerExceptionResolver,\
	org.springframework.web.servlet.mvc.annotation.ResponseStatusExceptionResolver,\
	org.springframework.web.servlet.mvc.support.DefaultHandlerExceptionResolver

org.springframework.web.servlet.RequestToViewNameTranslator=org.springframework.web.servlet.view.DefaultRequestToViewNameTranslator

org.springframework.web.servlet.ViewResolver=org.springframework.web.servlet.view.InternalResourceViewResolver

org.springframework.web.servlet.FlashMapManager=org.springframework.web.servlet.support.SessionFlashMapManager

 

你可能感兴趣的:(SpringMVC)