public void readParams() throws IOException {
            Set<String> allParams = paramsSet();

            // Read normal non-multipart params.
            Map<String, String> parentParams = mParent.getParams();
            for (String name : allParams) {
                if (!parentParams.containsKey(name)) {
                    continue;
                }
                mParamTable.put(name, parentParams.get(name).getBytes(IOUtil.UTF8));
                //System.err.println("PARAM: " + name + "=" +  get(name));
            }

            // Then read multipart params if there are any.
            if (mParent.getHeaders().getParams("Content-Type").
                containsKey("multipart/form-data")) {
                HTTPServer.MultipartIterator iter = new HTTPServer.MultipartIterator(mParent);
                while (iter.hasNext()) {
                    HTTPServer.MultipartIterator.Part part = iter.next();
                    if (!allParams.contains(part.name)) {
                        continue;
                    }
                    mParamTable.put(part.name, readAsBytes(part));
                    //System.err.println("PARAMS(1): " + part.name + "=" + get(part.name));
                    if (allParams.contains(part.name + ".filename") && part.filename != null) {
                        // Special case for file uploading.
                        mParamTable.put(part.name + ".filename", part.filename.getBytes(IOUtil.UTF8));
                    }
                }
                mParent.consumeBody();
            }

            if (!mParamTable.containsKey("action")) {
                mParamTable.put("action", "view".getBytes(IOUtil.UTF8));
            }

            if (!mParamTable.containsKey("title")) {
                mParamTable.put("title", mPath.getBytes(IOUtil.UTF8));
            }
        }