日期:2014-05-17 浏览次数:20766 次
/* * To change this template, choose Tools | Templates * and open the template in the editor. */ package servlets; import java.io.ByteArrayOutputStream; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.OutputStreamWriter; import java.io.PrintWriter; import javax.servlet.RequestDispatcher; import javax.servlet.ServletContext; import javax.servlet.ServletException; import javax.servlet.ServletOutputStream; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponseWrapper; /** * * @author Administrator */ public class ToHtmlPath extends HttpServlet { /** * Processes requests for both HTTP <code>GET</code> and <code>POST</code> methods. * @param request servlet request * @param response servlet response */ protected void processRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { } @Override public void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html;charset=UTF-8"); PrintWriter out = response.getWriter(); String url =""; String name =""; ServletContext servletContext = getServletContext(); final String CONTEXT_PATH=servletContext.getRealPath("/"); String file_name = request.getParameter("file_name");// 你要访问的jsp文件,如news.jsf。 file_name=file_name+".jsp"; //目前只设置了jsp页面的生成。 // file_name如:fileDetail.jsf?fileId=56.要是有参数, 只有一个参数。并且以参数名作为文件名。 String build_name = request.getParameter("build_name");// 要保存的文件名。如index; 可以没有这个参数。 String path = request.getParameter("path"); // 你要访问的jsp文件路径。如news。可以没有这个参数。 String real_path = request.getParameter("real_path");// 你要保存的文件路径,如html-news.注意可以没有这个参数。 if (build_name==null || build_name.equals("")) { int a = 0; a = file_name.indexOf("=") + 1; build_name = file_name.substring(a); if (build_name.indexOf(".")>0) { build_name = file_name.substring(0, file_name.indexOf(".")); } } // 下面构造要访问的页面。 if (path ==null || path.equals("")) { url = "/"+ file_name;// 这是你要生成HTML的jsp文件,如 } else { url ="/" + path + File.separator + file_name;// 这是你要生成HTML的jsp文件,如 } // 下面构造要保存的文件名,及路径。 // 1、如果有real_path,则保存在real_path下。 // 2、如果有path则保存在path下。 // 3、否则,保存在根目录下。 if (real_path == null || real_path.equals("")) { if (path == null || path.equals("")) { name =CONTEXT_PATH + File.separator + build_name + ".html";// 这是生成的html文件名,如index.htm.说明: ConfConstants.CONTEXT_PATH为你的上下文路径。 } else { name =CONTEXT_PATH + File.separator + path + File.separator + build_name + ".html";// 这是生成的html文件名,如index.htm. } } else { name =CONTEXT_PATH + File.separator + real_path +File.separator + build_name + ".html";// 这是生成的html文件名,如index.htm. } // 访问请求的页面,并生成指定的文件。 RequestDispatcher dispatcher = servletContext.getRequestDispatcher(url); //对这个URL请求 final ByteArrayOutputStream byteos = new ByteArrayOutputStream(); final ServletOutputStream stream = new ServletOutputStream() { //只是处理字节流,而PrintWriter则是处理字符流,和 @Override //重写了里面的方法 public void write(byte[] data, int offset, int length) { byteos.write(data, offset, length); } @Override//重写了里面的方法 pu