SpringMVC中的处理器(Controller) & 处理器映射(handlerMapping)

SpringMVC中的处理器:
	
	1)命令处理器(CommandController):
		配置文件:
			
		处理器:
			public class MyCommandController extends AbstractCommandController {
			
				// 在默认的构造方法中注册模型
				public MyCommandController() {
					// 设置当前command对应的实体类型
					this.setCommandClass(Person.class);
					// 设置当前command的名称,设置这个名称后,在页面中可以通过这个名称来获取数据
					this.setCommandName("person"); 	
				}

				// 参数command:用来封装表单中的model
				@Override
				protected ModelAndView handle(HttpServletRequest request, HttpServletResponse response, Object command, BindException errors) throws Exception {

					Person person = (Person)command; 
					System.out.println(person);
					
					return null;
				}
			}
	
	2)表单处理器(FormController):
		配置文件:
			
				
				
				
				
			
		处理器:
			public class MyFormController extends SimpleFormController{
				public MyFormController() {
					this.setCommandClass(Person.class);
					this.setCommandName("person"); 
				}
				
				// 1,以get方式访问时,不会调用doSubmitAction方法,而是直接跳转到jsp页面。
				// 2,以post方式提交时,会自动调用doSubmitAction方法。
				@Override
				protected void doSubmitAction(Object command) throws Exception {
					Person person = (Person)command;
					System.out.println(person);
				}
			}
	
	3)向导表单处理器:
		配置文件:
			
				
					
						wizard/personInfo
						wizard/personEdu
						wizard/personWork
					
				
			
		处理器:
			public class MyWizardController extends AbstractWizardFormController {
				public MyWizardController() {
					this.setCommandClass(Person.class);
					this.setCommandName("person");		
				}

				// 完成
				@Override
				protected ModelAndView processFinish(HttpServletRequest request, ttpServletResponse response, Object command, BindException errors) throws Exception {
					Person person = (Person)command;
					System.out.println(person);
					return new ModelAndView("index");
				}
				
				// 取消,转向指定的页面重新填写
				@Override
				protected ModelAndView processCancel(HttpServletRequest request, HttpServletResponse response, Object command, BindException errors) throws Exception {
					return new ModelAndView("/wizard/personInfo");
				}
			}
	
	
	
SpringMVC中常见的处理器映射(handlerMapping):
	
	
	

	1)BeanNameUrlHandlerMapping(默认)
		配置:
		特点:通过controller的name属性访问。
	
	2)SimpleUrlHandlerMapping
		配置:
			
				
				
					
						helloController
						helloController
					
				
			
		特点:通过controller的id属性访问,支持多个url访问同一个Controller。
	
	3)ControllerClassNameHandlerMapping
		配置:
			
			
		特点:通过Controller的类名来访问。
		注意:
			1)处理器的类名、处理器的类名省略Controller后 均可访问,即:通过testController或test都可以访问。
			2)如果处理器的类名是由多个单词拼接而成,那么通过类名访问时:除了类名最后的Controller部分,其它部分的类名必须全部小写!

	说明:
		1)当配置了多个HandlerMapping时,默认按照它们配置的先后顺序来处理。
		2)可以通过HandlerMapping的order属性来设置多个HandlerMapping的处理顺序,order属性从0开始取值,数字越小,其优先级越高。
		例子:
			
			
	
	

你可能感兴趣的:(Spring)