运用全能表单解析程序将表单数据封装成List<Map>

        在JadePool中,供应了一个万能表单解析类ProcessForm,目的是供应对ProcessVO完结刺进或更新记载的支撑。它能将尽情凌乱的表单记载,包含全部的字段,包含单记载和多记载,解析并封装成List变量,这些效果可以作为ProcessVO刺进、更新等方法的参数保管到数据库中。保管记载时,ProcessVO会自动过滤掉无效字段,只需表单中的字段名与数据库表中的字段 http://www.fpshamen.com/linked/20130324.do 名相同的数据才会保管到数据库中。当时,ProcessForm可能是世界上最无缺的表单解析东西。         ProcessForm支撑全部格式的文件上载,但不支撑大文件的上载,能满足大多数网络环境的运用。         关于文件类型的字段,除了会解析出文件的内容外,还会给出文件的相关特色,这些特色按照下面的格式命名:                 文件字段名_originfilename                 文件字段名_filename                 文件字段名_ext                 文件字段名_contenttype                 文件字段名_size         关于四种常见的图画文件(jpg|gif|png|bmp),还会计算出图画宽度、高度等信息,                 文件字段名_width                 文件字段名_height         ProcessForm支撑同步(非Ajax)和异步(Ajax)两种方法提交的表单的解析。         为了确保得到正确的解析效果,在表单描写上,运用这两个特色值:method="post"和enctype="multipart/form-data",         如果表单代表的是一条记载,对表单的字段次第没有需要;如果表单代表的是多条记载,请不要把check、radio类型的字段作为每条记载的第一个字段,如果页面确实需要check、radio类型作为第一个字段,那么在check或radio之前加一个无效的隐含字段。ProcessVO不会保管无效字段值。         关于异步方法提交的表单数据,有必要是Ajax标准格式,即xml格式。         ProcessForm运用:         同步上载的表单解析         ProcessForm form = ProcessForm.instance();         //form.setFilter("jpg|gif|png|swf");         //form.setAllowFileSize(1024000);//单个文件容许抵达1M         form.parse(request);//同步解析         Map m = form.getRecordFullInfo();//包含文件的特色         m = form.getRecord()         List v = form.getRecordList();         v = form.getRecordFullInfoList();//包含文件的附件特色         异步上载的表单解析         ProcessForm pf = ProcessForm.instance();         pf.parseXML(request, pf.IS_ECMA_UNICODE);//表单字段的值均经过escape方法的处置         pf.parseXML(request);         List v = pf.getRecordList();         一点说明:由于表单解析程序的代码恰当凌乱,如果遇到不能解析的情况,请及时告诉个人。邮箱hkm2300(at)yahoo.com.cn         对同步方法提交的记载进行解析的有些底层中间方法     /**
     * 对非ajax方法提交的记载解析。 解析 contentType = "multipart/form-data";的表单
     * 在表单中出现多条记载时,第一个元素作为新的一条记载的参看标志,有必要确保其有一个固定的称谓,所以表单中第一个元素应辟免运用checkbox复选框和radio单选按钮,以防止表的规划信息差错
     */
    private List getMultipartFormData(HttpServletRequest request) throws IOException, ServletException {
        Map recordFullInfo = null;
        List _recordFullInfoList = new ArrayList();
        int recordIndex = -1;
        itemNameSet = new HashSet();
        ServletInputStream in = request.getInputStream();
        charset = request.getCharacterEncoding();
        int allowFileSize = this.getAllowFileSize();
        byte[] buffer = new byte[allowFileSize];
        int bufferLength = 0;
        byte[] temp;
        byte[] lineByte = new byte[4096];
        String line;
        String boundary = getBoundary(request);
        String itemName = "";
        String originFileName = "";
        String fileName = "";
        String fileExt = "";
        StringBuffer sb = new StringBuffer("");
        boolean nameFlag = false;
        boolean fileFlag = false;
        int skipLine = 0;
        int i;

        try {

            while ((line = this.readLine(lineByte, in, charset)) != null) {
                if (!nameFlag  http://www.szhaoexport.com/linked/20130324.do 
posted @ 2013-03-25 05:35  chinadiy197601  阅读(425)  评论(0编辑  收藏  举报