BDF2中提供了一个类似于Spring MVC或Struts MVC的Controller(实际上Dorado7的Controller利用的就是Spring MVC实现的),但相比Spring MVC或Struts MVC,BDF2中提供的Controller功能更为简单,可控度及灵活性也更高,之前我们提到的用于在系统第一次使用初始化系统菜单时访问的http://localhost:8080/bdf2-dynamic-web-project/generate.system.menu.action地址,其中的generate.system.menu.action就是利用BDF2中Controller功能提供。
要定义一个BDF2中的Controller,我们需要编写一个IController接口的实现类,这个接口源码如下:
package com.bstek.bdf2.core.controller; import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; /** * 实现该接口,并将类注册到Spring就可以通过指定的URL访问执行其中的execute方法体 * @author Jacky.gao * @since 2013-2-21 */ public interface IController { String getUrl(); void execute(HttpServletRequest request,HttpServletResponse response) throws IOException, ServletException; boolean anonymousAccess(); boolean isDisabled(); }
这个接口定义了四个方法,第一个getUrl方法就是用于定义这个Controller访问地址的,比如之前的generate.system.menu.action,它的getUrl方法返回值就是/generate.system.menu,可以看到URL定义时要以/开头,同时后面不能添加.action;第二个方法execute就是我们业务方法执行的地方;第三个方法anonymousAccess就是这个Controller是否允许用户在未登录的情况下访问,返回true,表示允许未登录访问,否则必须要登录才能访问这个Controller;最后一个就是是否禁用这个Controller,为false就可以正常访问,否则就不能访问。
值得注意的是,Controller定义好之后,访问的地址是getUrl方法返回的字符串+"."+"action",这里的.action是BDF2 Controller访问的默认URL后缀,这个值由bdf2.controllerSuffix属性决定,这个属性值默认为action,所以我们访问Controller的地址为:getUrl方法返回的字符串+"."+"action",当然一般情况下,这个属性值是没必要修改的。
IController接口实现类编写完成之后,需要将其配置到Spring当中,变成一个标准的Spring(不要指定这个bean的ID),这样我们就可以像访问generate.system.menu.action这个Controller一样访问我们新定义的Controller了。