/* (non-Javadoc) * @see javax.servlet.http.HttpServlet#doGet(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse) */ protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setHeader("Content-Type", "application/x-javascript"); response.setHeader("Access-Control-Allow-Origin", "*"); response.setCharacterEncoding("utf-8"); String url = request.getRequestURI(); // System.out.println(this.diffAlg); String[] pathArray = url.split("storeinc"); url = pathArray[1]; String fullName = url; // 如果内存已经有处理过的内容,则直接返回 if (fileContentMap.containsKey(fullName)) { response.getWriter().print(fileContentMap.get(fullName)); response.getWriter().close(); return; } // System.out.println("sssssss:"+url); ArrayList<String> fileList = getFileArray(url); String baseDir = getBaseDir(url); JSONArray iArray = new JSONArray(); for (int i = 0; i < fileList.size(); i++) { // System.out.println("ssssssssssee:"+url); // url=fileList.get(i); String js = fileList.get(i); url = baseDir + js; // System.out.println("ssssssssssee:"+url); String[] urlArray = url.split("/"); int len = urlArray.length; String pathName = ""; String lastver = ""; String ver = ""; String jsFileName = ""; String verStr = ""; boolean isFull = false; if (len >= 2) { // 获取最终文件名 name-ver1_ver2.js的形式 String filename = urlArray[len - 1]; pathName = url.replace(filename, ""); String[] sArray = filename.split("-"); try { jsFileName = sArray[0]; verStr = sArray[1]; } catch (Exception ex) { System.out.print("exception ex:" + ex.toString()); } // 包含_说明请求的是增量文件 if (verStr.contains("_")) { String[] verArray = verStr.split("_"); lastver = verArray[0]; ver = verArray[1].replace(".js", ""); } else { ver = verStr.replace(".js", ""); isFull = true; } } // 分别获取新版和老版文件路径名 String fullFile = jsPath + "/" + pathName + "/" + jsFileName + "-" + ver + ".js"; String oldPath = pathName.replace(ver, lastver); String oldFile = jsPath + "/" + oldPath + "/" + jsFileName + "-" + lastver + ".js"; // System.out.println(oldFile); // System.out.println(fullFile); // 如果是全量 DiffUtil dUtil = new DiffUtil(); if (isFull) { String fullContent = dUtil.readFile(fullFile, "utf-8"); JSONObject resultFile = new JSONObject(); resultFile.put("modify", true); // resultFile.modify=true; resultFile.put("chunkSize", 12); resultFile.put("diffAlg", this.diffAlg); resultFile.put("inc", false); resultFile.put("data", fullContent); resultFile.put("js", js); // resultFile.js=fileitem.file; iArray.add(resultFile); // response.getWriter().print(fullContent); } else { if (!"lcs".equals(this.diffAlg)) { JSONObject resultFile = dUtil.makeIncDataFromFile(oldFile, fullFile, this.chunkSize); resultFile.put("js", js); resultFile.put("inc", true); // fileContentMap.put(fullName, resultFile.toJSONString()); iArray.add(resultFile); // response.getWriter().print(resultFile.toJSONString()); } else { LcsDiff lcfDiff = new LcsDiff(); JSONObject resultFile = lcfDiff.makeIncDataFromFile(oldFile, fullFile); resultFile.put("js", js); resultFile.put("inc", true); // fileContentMap.put(fullName, resultFile.toJSONString()); iArray.add(resultFile); // System.out.println(); // response.getWriter().print(resultFile.toJSONString()); } } } fileContentMap.put(fullName, iArray.toJSONString()); if (iArray.size() > 0) { response.getWriter().print(iArray.toJSONString()); } else { response.setStatus(404); response.getWriter().print(""); } // response.getWriter().print("s:"+url+" "+pathName+" "+lastver+" "+ver+" "+jsFileName); response.getWriter().close(); // TODO Auto-generated method stub }