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

SpringMVC进阶(三)——控制器

2015-09-23 15:34 357 查看
在Spring MVC中,有几种控制器,下面我们来一一介绍一下。

1.ParameterizableViewController(参数控制器)



示例:在springmvc-servlet.xml中配置映射处理器和参数控制器

<!-- 简单URL映射处理器,映射处理器之间相互独立不受影响 -->
	<bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
		<property name="mappings">
			<props>
				<prop key="/login.do">toLogin</prop>
			</props>
		</property>
	</bean>

	<!-- 如果使用参数控制器就不能用ControllerClassNameHandlerMapping类名映射处理器 -->
	<bean id="toLogin"
		class="org.springframework.web.servlet.mvc.ParameterizableViewController">
		<!-- 配置你所要跳转到视图的名称 -->
		<property name="viewName" value="login"></property>
	</bean>


执行结果如下:




2.AbstractCommandController(命令控制器)



示例:在springmvc-servlet.xml中配置映射处理器和参数控制器

<bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
		<property name="mappings">
			<props>			
				<prop key="/command.do">comm</prop>
			</props>
		</property>
	</bean>

	<!-- 命令控制器的Controller -->
	<bean id="comm" class="com.tgb.controller.CommController">
		<!-- 指定接收参数的类型 -->
		<property name="commandClass" value="com.tgb.model.Person"></property>
	</bean>


新建命令控制器:



public class CommController extends AbstractCommandController{

	@Override
	protected ModelAndView handle(HttpServletRequest arg0,
			HttpServletResponse arg1, Object arg2, BindException arg3)
			throws Exception {
		//将封装的参数转化为person对象
		Person p = (Person) arg2;
		System.out.println(p);
		Map<String, Object> map = new HashMap<String, Object>();
		map.put("person", p);
		return new ModelAndView("index",map);
	}
	
	//日期转换
	@Override
	protected void initBinder(HttpServletRequest request,
			ServletRequestDataBinder binder) throws Exception {
		binder.registerCustomEditor(Date.class, new CustomDateEditor(new SimpleDateFormat("yyyy-MM-dd"), true));
		
	}


访问结果如下:




控制台打印信息:




3.FormController(表单控制器)



示例:在springmvc-servlet.xml中配置映射处理器和参数控制器



<bean id="form" class="com.rl.controller.FormController">
		<!-- 指定接收参数的类型 -->
		<property name="commandClass" value="com.rl.model.Person"></property>
		<!-- 表单页面 -->
		<property name="formView" value="form"></property>
		<!-- 成功页面 -->
		<property name="successView" value="success"></property>
	</bean>


新建表单控制器:



public class FormController extends SimpleFormController{

	@Override
	protected void doSubmitAction(Object command) throws Exception {
		Person p = (Person) command;
		System.out.println(p);
		super.doSubmitAction(command);
	}
	
	//转化日期格式
	@Override
	protected void initBinder(HttpServletRequest request,
			ServletRequestDataBinder binder) throws Exception {
		binder.registerCustomEditor(Date.class, new CustomDateEditor(new SimpleDateFormat("yyyy-MM-dd"), true));
		
	}
}


控制台打印结果:




总结:

Spring MVC为我们提供了很好的参数封装,而struts2通过属性驱动或者模型驱动或自定义来获得参数的封装,相知之下,个人感觉SpringMVC封装的更加完善一些,在控制器类中不用提供get/set方法,只要和Model的属性名称对应即可。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: