mcl77361 发表于 2014-12-7 12:00:55

P3插件式应用开发框架——实现Action层由Spring接管

本帖最后由 mcl77361 于 2014-12-7 15:04 编辑

一、实现思路1、总体思路通过框架的contextConfigLocationSpring配置文件参数,加载Action层注解扫描配置文件,各业务Action类通过注解标签标志自身为Action,从而实现Action层注入到Spring中。获取具体Action实例,通过工具类SpringHelper.getBean即可。<context-param> <param-name>contextConfigLocation</param-name> <param-value>   classpath:config/applicationContext*.xml    classpath:config/spring-action.xml </param-value></context-param>2、注解扫描配置文件<context:component-scanbase-package="com.buss.demo.action"/>配置Action层所在的基础包,即告知Spring扫描的范围。3、业务Action类注解@Controllerpublic class SpringDemoAction extendsAbstractAction以为后续我们要模仿框架提供的一个ActionProcessHandler来实现一个简易的ProcessHandler,这里需要继承AbstractAction。当然以后我们如果自己解析请求映射,这个不是必须的。二、具体实例1、步骤一、配置web.xml,加载我们的Action层注解扫描配置文件spring-action.xml具体请查看附件P3-springaction.zip/web.xml。2、步骤二、配置我们的Action层注解扫描配置文件spring-action.xml设置Action层类的扫描范围,即告知spring具体的扫描范围。关于spring注解扫描的更多设置请参考附件 spring-2.5.6-reference.pdf具体请查看附件 P3-springaction.zip/spring-action.xml。3、步骤三、配置我们的Action层注解扫描配置文件spring-action.xml实现一个样例Action。如@Controllerpublic class SpringDemoAction extendsAbstractAction         publicObject execute() throws Exception {//默认方法                   returnVelocityViewHelper.mergeVelocity("demo/springDemo.vm");         }具体请查看附件P3-springaction.zip/SpringDemoAction.java。4、步骤四、实现一个简易的ProcessHandler来转发映射请求到具体的Action中。public class SpringActionProcessHandlerextends ProcessHandlerprivate boolean invoke(HttpServletRequest request,                            HttpServletResponseresponse, UrlRole urlRole) throws IOException {                   try{                            StringactionName = urlRole.getClassName();                            actionName= actionName.substring(actionName.lastIndexOf(".")+1);                            actionName= StrUtil.lowFirstStr(actionName);                            AbstractActionaction = (AbstractAction)SpringHelper.getBean(actionName);                            Class<?>actionClass = action.getClass();                            MethodactionMethod = actionClass.getMethod(urlRole.getMethodName());                            Objectrtn = actionMethod.invoke(action);如以上红色标示的代码,使用SpringHelper获取Action实例。获取规则为类名的首字母小写作为bean的name来获取。[当然后续实现name可以通过标签@Controller的value属性进行指定]。5、步骤五、配置我们实现的ProcessHandler需要拦截的请求url匹配规则。在classpath下的t3.properties文件中定义url匹配规则,如:t3.url.pattern.springaction=*.spring6、步骤六、将我们实现的ProcessHandler注入到P3框架的请求链中。配置classpath/config/applicationContext.xml文件,如:<beanclass="com.buss.web.process.SpringActionProcessHandler">         <propertyname="urlPattern" value="${t3.url.pattern.springaction}" />   //这里的参数名要和第五步的参数保持一致。</bean>7、步骤七、运行p3-springaction项目访问路径:http://localhost:8888/P3-springaction/demo/springDemo.spring结果如下:                            Welcome To P3-SpringAction                         Action层交由Spring接管测试成功^^
8、由于附件上传文件大小的限制,实现样例代码,还不能上传。百度云盘链接地址:
链接: http://pan.baidu.com/s/1eQs1m2e 密码: 61i8
页: [1]
查看完整版本: P3插件式应用开发框架——实现Action层由Spring接管