jsp自动生成静态页(提供思路)
首先要获取所需数据,访问模版页这里的模板页不是html而是jsp,然后执行下列操作:
package com.movo.convert; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.OutputStreamWriter; import java.net.HttpURLConnection; import java.net.URL; import java.net.URLDecoder; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class ConversionServlet extends HttpServlet { private static final long serialVersionUID = 1L; public ConversionServlet () { super(); } public void destroy() { super.destroy(); } public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html"); //获取请求的URL StringBuffer reqTargetBuf = new StringBuffer(URLDecoder.decode(request.getParameter("name"), "UTF-8")); //指定对应JSP的HTML名称 StringBuffer nameBuf = new StringBuffer(reqTargetBuf.substring(reqTargetBuf.lastIndexOf("/") + 1,reqTargetBuf.lastIndexOf("."))); if(reqTargetBuf.indexOf("?") != -1){ nameBuf.append(reqTargetBuf.toString().split("\?")[1]); } String htmlPath = new StringBuffer(request.getContextPath()).append("/").append(nameBuf).append(".html").toString(); //判断是否存在对应的HTML文件 File file = new File(new StringBuffer(request.getSession().getServletContext().getRealPath("/")).append(nameBuf).append(".html").toString()); if (!file.exists()) { //如果不存在对应的HTML文件 try { file.createNewFile(); //创建HTML文件 //将JSP的内容写入对应的HTML文件内 InputStream in = null; StringBuffer sb = new StringBuffer(); //注意这里,不能直接访问请求的URL,如果直接访问的话,会陷入死循环 if(!reqTargetBuf.toString().contains("?")){ reqTargetBuf.append("?"); }else{ reqTargetBuf.append("&"); } reqTargetBuf.append("movo=11"); URL url = new java.net.URL(reqTargetBuf.toString()); //从Internet获取网页,发送请求,将网页以流的形式读回来 HttpURLConnection connection = (HttpURLConnection) url.openConnection(); //设置客户端的User Agent以解决服务器的安全设置不接受Java程序作为客户端访问的问题 connection.setRequestProperty("User-Agent", "Mozilla/4.0"); connection.connect(); in = connection.getInputStream(); java.io.BufferedReader breader = new BufferedReader(new InputStreamReader(in, "UTF-8")); String currentLine = null; OutputStreamWriter write = new OutputStreamWriter(new FileOutputStream(file),"UTF-8"); BufferedWriter writer=new BufferedWriter(write); while ((currentLine = breader.readLine()) != null) { sb.append(currentLine); writer.write(currentLine); } if (null != breader){ breader.close(); } if (null != writer){ writer.close(); } } catch (Exception e) { e.printStackTrace(); } } //转到与JSP对应的HTML页,如果存在指定的HTML,直接跳转到指定的HTML页 response.sendRedirect(htmlPath); } public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { this.doGet(request, response); } public void init() throws ServletException {} }