快速业务通道

深入分析Java中webwork的文件上传机制 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-18

深入分析Java中webwork的文件上传机制

时间:2011-03-06

点击上传按钮后,webwork的程序流如下:

step 1)进入ServletDispatcher.service

public void service(HttpServletRequest request, HttpServletResponse response) throws ServletException { ........ request = wrapRequest(request); ......... }

step2)进入ServletDispatcher.wrapRequest

protected HttpServletRequest wrapRequest(HttpServletRequest request) throws IOException { ........................ if (MultiPartRequest.isMultiPart(request)) { request = new MultiPartRequestWrapper(request, getSaveDir(), getMaxSize()); } return request; }

step3)进入MultiPartRequestWrapper的构造方法

public MultiPartRequestWrapper(HttpServletRequest request, String saveDir, int maxSize) throws IOException { ..................... //step3.1)获取webwork.preperties配置的parser String parser = ""; parser = Configuration.getString("webwork.multipart.parser"); // If it''s not set, use Pell if (parser.equals("")) { log.warn("Property webwork.multipart.parser not set." + " Using com.opensymphony.webwork.dispatcher.multipart.PellMultiPartRequest"); parser = "com.opensymphony.webwork.dispatcher.multipart.PellMultiPartRequest"; } // legacy support for old style property values else if (parser.equals("pell")) { parser = "com.opensymphony.webwork.dispatcher.multipart.PellMultiPartRequest"; } else if (parser.equals("cos")) { parser = "com.opensymphony.webwork.dispatcher.multipart.CosMultiPartRequest"; } else if (parser.equals("jakarta")) { parser = "com.opensymphony.webwork.dispatcher.multipart.JakartaMultiPartRequest"; } //step3.2)获取后通过反射实例化parser try { Class baseClazz = com.opensymphony.webwork.dispatcher.multipart.MultiPartRequest.class; Class clazz = Class.forName(parser); // make sure it extends MultiPartRequest if (!baseClazz.isAssignableFrom(clazz)) { addError("Class ''" + parser + "'' does not extend MultiPartRequest"); return; } // get the constructor Constructor ctor = clazz.getDeclaredConstructor(new Class[]{ Class.forName("javax.servlet.http.HttpServletRequest"), java.lang.String.class, int.class }); // build the parameter list Object[] parms = new Object[]{ request, saveDir, new Integer(maxSize) }; // instantiate it multi = (MultiPartRequest) ctor.newInstance(parms); ................................................. }

深入分析Java中webwork的文件上传机制(2)

时间:2011-03-06

step4 进入JakartaMultiPartRequest的构造方法(在webwork配置的parser是Jakarta所以进入了这个方法,如果你配置不同的parser回进入不同的parser

public JakartaMultiPartRequest(HttpServletRequest servletRequest, String saveDir, int maxSize) throws IOException { //设置保存参数 DiskFileUpload upload = new DiskFileUpload(); // we must store all uploads on disk because the ww multipart API is missing streaming // capabilities upload.setSizeThreshold(0); upload.setSizeMax(maxSize); if (saveD

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号