关注JEECG发展历程 关注最新动态和版本, 记录JEECG成长点滴 更新日志 - 技术支持 - 招聘英才

JEECG最新版本下载 JEECG智能开发平台 - 显著提高开发效率 常见问题 - 入门视频 - 参与开源团队

商务QQ: 69893005、3102411850 商务热线(5*8小时): 010-64808099 官方邮箱: jeecgos@163.com

查看: 9303|回复: 0

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

[复制链接]
发表于 2014-12-7 12:00:55 | 显示全部楼层 |阅读模式
本帖最后由 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类注解
@Controller
public 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。如
@Controller
public class SpringDemoAction extendsAbstractAction
         publicObject execute() throws Exception {//默认方法
                   returnVelocityViewHelper.mergeVelocity("demo/springDemo.vm");
         }
具体请查看附件P3-springaction.zip/SpringDemoAction.java
4、步骤四、实现一个简易的ProcessHandler来转发映射请求到具体的Action中。
public class SpringActionProcessHandlerextends ProcessHandler
private 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实例。获取规则为类名的首字母小写作为beanname来获取。[当然后续实现name可以通过标签@Controllervalue属性进行指定]
5、步骤五、配置我们实现的ProcessHandler需要拦截的请求url匹配规则。
classpath下的t3.properties文件中定义url匹配规则,如:
t3.url.pattern.springaction=*.spring
6、步骤六、将我们实现的ProcessHandler注入到P3框架的请求链中。
配置classpath/config/applicationContext.xml文件,如:
<beanclass="com.buss.web.process.SpringActionProcessHandler">
         <propertyname="urlPattern" value="${t3.url.pattern.springaction}" />
   //这里的参数名要和第五步的参数保持一致。
</bean>
7、步骤七、运行p3-springaction项目
结果如下:
                             Welcome To P3-SpringAction
                        Action层交由Spring接管测试成功^^

8、由于附件上传文件大小的限制,实现样例代码,还不能上传。百度云盘链接地址:
链接: http://pan.baidu.com/s/1eQs1m2e 密码: 61i8
1.jpg
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表