AbstractCommandController(抽象命令控制器)

JAVA herman 43浏览 0评论

上一章中,我就提到了抽象命令控制器:AbstractCommandController。也列举了它的一些源代码。本章将通过一个具体的实例来加深我们对它的理解。

命令控制器,可以实现该控制器来创建命令控制器,该控制器能把自动封装请求参数到一个命令对象,而且提供了验证功能。

先创建命令类(就是普通的JavaBean类/POJO)。

package com.xttblog.chapter4.model;  
public class UserModel {  
    private String username;  
    private String password;  
        //省略setter/getter  
}  

实现控制器的代码如下:

package com.xttblog.web.controller;  
//省略import  
public class MyAbstractCommandController extends AbstractCommandController {  
    public MyAbstractCommandController() {  
        //设置命令对象实现类  
        setCommandClass(UserModel.class);  
    }  
    @Override  
    protected ModelAndView handle(HttpServletRequest req, HttpServletResponse resp, Object command, BindException errors) throws Exception {  
        //将命令对象转换为实际类型  
        UserModel user = (UserModel) command;  
        ModelAndView mv = new ModelAndView();  
        mv.setViewName("abstractCommand");  
        mv.addObject("user", user);  
        return mv;  
    }  
}   

然后再再Spring配置文件中进行bean的配置。

<!— 在chapter4-servlet.xml配置处理器 -->     
<bean name="/abstractCommand"   
	class="com.xttblog.chapter4.web.controller.MyAbstractCommandController">  
	<!-- 也可以通过依赖注入 注入命令实现类 -->  
	<!-- property name="commandClass" value="com.xttblog.chapter4.model.UserModel"/-->  
</bean> 

最后我们编写jsp视图代码。

<!— WEB-INF/jsp/abstractCommand.jsp视图下的主要内容 -->     
${user.username }-${user.password }  

当我们在浏览器中输入“http://localhost:9080/springmvc-chapter4/abstractCommand?username=123&password=123”,会自动将请求参数username和password绑定到命令对象;绑定时按照JavaBean命名规范绑定;

AbstractCommandController 案例