记录我开发鞋服行业供应链软件的历程<设计表示层>
2011-06-15 20:17
369 查看
表示层我们选用的是struts1.1,为什么选用它,而不选用spring MVC或者是struts2,没什么特别的原因,主是因为
我们熟,因为struts1.1里面的代码我们都有研究过.
直接用表示层肯定不能满足业务需求,现在任何一个系统,都可能会用大量的Ajax,所以我们进行了改写,改写重要参
考就是springside2.
1):我们把ActionForward抽象出来,进行封装,以便可以支持不同类型的数据格式,比如:jsp,json,Excel,pdf,velocity等
定义一个struts Forward接口
定义一个抽象类,实现这个接口,主要的目的是把一些公共的抽出来.
不同的类型继承抽象类,实现接口,比如:
2):因为Action是直接将页面传过来的method参数,dispatch到Manager里面调用,所以表示层,我们借鉴了struts自带的DispatchAction的原理,再结合spring,就很好的实现了这一功能。
结束语,整个技术架构记录就告一段路了,不同的人由于经历不同,知识面不同,做出的架构也可能不同,只要你懂基础,懂原理,一定是大同小异。多去钻研一些牛人的源代码,你一定会受益匪浅.
我们熟,因为struts1.1里面的代码我们都有研究过.
直接用表示层肯定不能满足业务需求,现在任何一个系统,都可能会用大量的Ajax,所以我们进行了改写,改写重要参
考就是springside2.
1):我们把ActionForward抽象出来,进行封装,以便可以支持不同类型的数据格式,比如:jsp,json,Excel,pdf,velocity等
定义一个struts Forward接口
public interface IStrutsForward { public abstract ActionForward findForward(ActionContext context); }
定义一个抽象类,实现这个接口,主要的目的是把一些公共的抽出来.
public abstract class AbstractStrutsForward implements IStrutsForward { final public static String CONTENTTYPE_TEXT = "text/plain;charset=UTF-8"; final public static String CONTENTTYPE_XML = "text/xml;charset=UTF-8"; final public static String CONTENTTYPE_HTML = "text/html;charset=UTF-8"; final public static String CONTENTTYPE_JSON = "text/x-json;charset=UTF-8"; final public static String CONTENTTYPE_PDF = "application/pdf"; final public static String CONTENTTYPE_EXCEL = "application/vnd.ms-excel"; final public static String CONTENTTYPE_download = "application/x-download"; protected Object forward = null; …… }
不同的类型继承抽象类,实现接口,比如:
public class JspForward extends AbstractStrutsForward{ public JspForward (Object forward){ super(forward); } /** * 导向struts Forward * @param context * @return * @see com.esk2.framework.web.action.IStrutsForward#findForward(com.esk2.framework.web.action.ActionContext) */ public ActionForward findForward(ActionContext context){ if(forward instanceof String){ return context.getMapping().findForward((String)forward); }else{ SystemLogger.error("Forward类型应该为String,而不是:"+forward.toString()); return context.getMapping().findForward(SysFinal.STRUTS_SYSTEM_ERROR); } } }
2):因为Action是直接将页面传过来的method参数,dispatch到Manager里面调用,所以表示层,我们借鉴了struts自带的DispatchAction的原理,再结合spring,就很好的实现了这一功能。
@Override public IStrutsForward dispatch(ActionContext context) { //从spring取到Manager Object service = this.createService(context); if (service instanceof IStrutsForward) { IStrutsForward forward = (IStrutsForward) service; return forward; } //获取Method方法 String methodStr = context.getForm().getMethod(); Object methodObj = this.createMethod(service, methodStr); if (methodObj instanceof IStrutsForward) { IStrutsForward forward = (IStrutsForward) methodObj; return forward; } try { Object args[] = { context }; Method method = (Method) methodObj; long begin=System.currentTimeMillis(); //调用Manager里面的Method方法 IStrutsForward forward = (IStrutsForward) method .invoke(service, args); long end=System.currentTimeMillis(); StringBuffer msg=new StringBuffer(); msg.append("["); msg.append(context.getRequest().getRemoteAddr()); msg.append("]"); msg.append(ClassUtils.getShortName(service.getClass())); msg.append("."); msg.append(methodStr); msg.append("(context):"); msg.append(end-begin); SystemLogger.debug(msg.toString()); return forward; } catch (Exception e) { SystemLogger.error("调用Serivce 方法出错", e); IStrutsForward forward = new JspForward( SysFinal.STRUTS_SYSTEM_ERROR); return forward; } }
结束语,整个技术架构记录就告一段路了,不同的人由于经历不同,知识面不同,做出的架构也可能不同,只要你懂基础,懂原理,一定是大同小异。多去钻研一些牛人的源代码,你一定会受益匪浅.
相关文章推荐
- 记录我开发鞋服行业供应链软件的历程<设计表示层>
- 记录我开发鞋服行业供应链软件的历程<设计系统技术架构>
- 记录我开发鞋服行业供应链软件的历程<设计代码生成工具>
- 记录我开发鞋服行业供应链软件的历程<设计业务层>
- 记录我开发鞋服行业供应链软件的历程<设计代码生成工具>
- 记录我开发鞋服行业供应链软件的历程<设计数据库层>
- 记录我开发鞋服行业供应链软件的历程<设计业务层>
- 记录我开发鞋服行业供应链软件的历程<设计系统技术架构>
- 记录我开发鞋服行业供应链软件的历程<来到一个新公司>
- 记录我开发鞋服行业供应链软件的历程<我所了解的鞋服行业>
- 记录我开发鞋服行业供应链软件的历程<组建自已的团队>
- 记录我开发鞋服行业供应链软件的历程<组建自已的团队>
- 学习HTML5开发RPG游戏第三步>基本对象设计<四>
- oracle开发之<<SQL Cookbook>>学习笔记整理:第一章 检索记录
- 14-9-11 C/C++课程设计--图书馆管理系---<time.h>中时间数据类型的学习记录
- 【Qt编程】基于Qt的词典开发系列<六>--界面美化设计
- 推荐一位大佬博客<关于记录淘淘商城开发点点滴滴>
- Android 开发过程中遇到了一个问题 小记录一下 ERROR: In <declare-styleable> BorderLinearLayout, unable to find attribu
- 面向对象系统设计与开发专题<3>__开发过程
- Django之路 - 项目实战之<教育行业CRM开发>