• 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 {}
    }
  • 相关阅读:
    mysql 主从复制
    通过git-bash 批量管理VMware虚拟机
    MySQL基础
    lnmp架构
    搭建yum仓库服务器
    什什么是集群?么是分布式?
    nginx介绍1
    网络抓包工具 wireshark 入门教程
    DNS原理总结及其解析过程详解
    PetaPoco中使用Exists
  • 原文地址:https://www.cnblogs.com/movosoft/p/3695931.html
Copyright © 2020-2023  润新知