另一种表单封装的参数的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;
- }
- }
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;
- }
- }