/* * 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//重写了里面的方法 public void write(int b) throws IOException { byteos.write(b); } }; final PrintWriter printw; printw= new PrintWriter(new OutputStreamWriter(byteos,"UTF- 8")); //进行编码转换,当输出流从比特流转换为字符流的时候设置才是有效的。 HttpServletResponse rep = new HttpServletResponseWrapper(response) { @Override public ServletOutputStream getOutputStream() { return stream; } @Override public PrintWriter getWriter() { return printw; } }; dispatcher.include(request, rep); printw.flush(); FileOutputStream fileos = new FileOutputStream(name); // 把jsp输出的 内容写到xxx.htm //out.print(name); byteos.writeTo(fileos); fileos.close(); out.print("发布成功!"); } // <editor-fold defaultstate="collapsed" desc="HttpServlet 方法。单 击左侧的 + 号以编辑代码。"> /** * Handles the HTTP <code>GET</code> method. * @param request servlet request * @param response servlet response */ @Override protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { processRequest(request, response); } /** * Handles the HTTP <code>POST</code> method. * @param request servlet request * @param response servlet response */ @Override protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { processRequest(request, response); } /** * Returns a short description of the servlet. */ @Override public String getServletInfo() { return "Short description"; }// </editor-fold> }
以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索servlet
, request
, httpservletresponse
, response
, import
, override
, build path
, java生成html文件
Request.Param
servlet 返回静态html、servlet 生成html、jsp生成静态html页面、java生成静态html页面、php生成静态html,以便于您获取更多的相关知识。
时间: 2024-12-04 11:23:51