另一种表单封装的参数的Controller是AbstractCommandController,在SpringMVC学习笔记(二) --- 后端控制器之CommondController、 FormController(一) 也说到了使用这种方式不是太方便,但是作为学习,还是值得看看。
先看下springmvc-servlet.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
<!-- 定义Bean -->
<bean id="registrationCommandController" class="com.wy.controller.RegistrationCommandController">
<property name="commandClass" value="com.wy.pojo.User" />
</bean>
<bean name="/simpleImplementsController.do" class="com.wy.controller.SimpleImplementsController"/>
<!-- 映射处理器 -->
<bean id="simpleUrlHandlerMapping"
class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
<property name="mappings">
<props>
<prop key="/register.do">registrationCommandController</prop>
</props>
</property>
<property name="order" value="1"></property>
</bean>
<bean id="beanNameUrlHandlerMapping"
class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping">
<property name="order" value="0"></property>
</bean>
<!-- 视图解析器策略和视图解析器 -->
<bean id="internalResourceViewResolver"
class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="viewClass"
value="org.springframework.web.servlet.view.InternalResourceView" />
<property name="prefix" value="/WEB-INF/page/" />
<property name="suffix" value=".jsp" />
</bean>
</beans>
前面的文章也提到了使用AbstractCommandController来封装表单参数是需要维护两个Controller。
SimpleImplementsController.java
package com.wy.controller;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.Controller;
/**
* 实现Controller和继承AbstractContoller功能是一样的
*
* @author Administrator
* @version Sep 17, 2011
*/
public class SimpleImplementsController implements Controller {
@Override
public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) throws Exception {
ModelAndView mav = new ModelAndView("login");//逻辑视图名称
mav.addObject("msg", "Hello World! Implements Controller");
return mav;
}
}
RegistrationCommandController.java
package com.wy.controller;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.validation.BindException;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.AbstractCommandController;
import com.wy.pojo.User;
/**
*
*
* @author Administrator
* @version 2011-10-7
*/
@SuppressWarnings("deprecation")
public class RegistrationCommandController extends AbstractCommandController{
/**
* 构造器
*/
public RegistrationCommandController(){
//也可以在spmvc-servlet.xml中定义
//<property name="commandClass" value="com.wy.pojo.User" />
setCommandClass(User.class);//为控制器类指定命名类对象
}
@Override
protected ModelAndView handle(HttpServletRequest request, HttpServletResponse response, Object command,
BindException exception) throws Exception
{
ModelAndView mav = new ModelAndView("edit");
User user = (User)command;
System.out.println(user);
return mav;
}
}
本文详细介绍了在Spring MVC中使用AbstractCommandController封装表单参数的方法,包括配置文件、相关Controller类的实现以及如何映射处理器和视图解析器策略。

被折叠的 条评论
为什么被折叠?



