本帖最后由 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实例。获取规则为类名的首字母小写作为bean的name来获取。[当然后续实现name可以通过标签@Controller的value属性进行指定]。 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 |