SpringMVC进阶(三)——控制器

    在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的属性名称对应即可。

    

评论 14
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值