求教如何在服务器将jsp文件转换成html文件并保存?

解决方案 »

  1.   

    写个Servlet来实现就可以了
    import java.net.*;
    import java.io.*;
    import java.text.*;
    import java.util.*;
    import javax.servlet.*;
    import javax.servlet.http.*;
    import com.ora.jsp.util.StringFormat;/**
     * This servlet is intended only for learning about JSP. It returns
     * the JSP file corresponding to the path passed as pathInfo in a form 
     * that shows the unprocessed JSP and HTML elements. If it wasn't for
     * Internet Explorer, all this servlet would have to do would be to
     * set the Content-Type to "text/plain" and send the file. But Internet
     * Explorer believes it knows better than the application developer,
     * so it bluntantly ignores this header and treats any response that
     * contains HTML elements as "text/html", and therefore renders all
     * HTML elements and ignores the JSP elements. To work around this, the
     * servlet sends the response as "text/html", with all special HTML
     * characters converted to the corresponding HTML character entities.
     * <p>
     * Note! Do not install this servlet on a production server. Doing so
     * may be a security risk, since the source of any file can be delivered
     * to the client, revealing things like database account names and passwords.
     *
     * @version 2.0
     * @author Hans Bergsten, Gefion software
     */
    public class JSPSourceServlet extends HttpServlet {    /**
         * Handles a GET request by sending the contents of the resource
         * specified by the servlet path to the client.
         *
         * @param req an HttpServletRequest
         * @param res an HttpServletResponse
         * @exception IOException
         */
        public void doGet(HttpServletRequest req, HttpServletResponse res) 
                throws IOException {
            // Get the pathInfo
            String path = req.getPathInfo(); 
            
            // Check for invalid characters in the path. For files under
    // WEB-INF, only accept tag files
            if (path.indexOf("..") != -1 || 
        (path.toUpperCase().indexOf("WEB-INF") != -1) && 
        !path.endsWith(".tag")){
                res.sendError(HttpServletResponse.SC_FORBIDDEN,
                    "Illegal characters found in path " + path);
                return;
            }        sendFile(path, res);
        }    /**
         * Copies the "in" reader to the "out" writer.
         *
         * @param in a BufferedReader
         * @param out a PrintWriter
         */
        private void copyFile(BufferedReader in, PrintWriter out)
                throws IOException {
            int chars;
            char[] buf = new char[4096];
            while ((chars = in.read(buf, 0, buf.length)) != -1) {
                out.write(buf, 0, chars);
                out.flush();
            }
        }
        
        /**
         * Sends the contents of a file to the client.
         *
         * @param pathInfo the file URI
         * @param res an HttpServletResponse
         * @exception IOException
         */
        private void sendFile(String path, HttpServletResponse res) 
    throws IOException {
            URL file = getServletContext().getResource(path);
            if (file == null) { 
                res.sendError(HttpServletResponse.SC_NOT_FOUND,
                    path + " not found.");
                return;
            }
            
            res.setStatus(HttpServletResponse.SC_OK);
            /* 
     * Use "text/html" and convert HTML characters to
             * character entities, to fool IE as explained above
     */
            res.setContentType("text/html");
            PrintWriter out = res.getWriter();
            // Add HTML header
            out.println("<html><head><title>" + path + "</title></head>");
            out.println("<body><pre>");
            
            // Read the file and convert it
            BufferedReader in = 
        new BufferedReader(new InputStreamReader(file.openStream()));
            StringWriter rawText = new StringWriter();
            copyFile(in, new PrintWriter(rawText));
            in.close();
            out.write(StringFormat.toHTMLString(rawText.toString()));
            
            // Add HTML footer
            out.println("</pre></body></html>");
            out.close();
        }
    }
      

  2.   

    好像不行啊 String path = req.getPathInfo(); 这句话返回null值 
    能不能解释下这个程序
      

  3.   

    先生成个HTML文件,然后读取JSP文件的内容,写入到你先前生成的HTML中