jsp 转换 html




package com.servlet;  

import java.io.IOException;  

import javax.servlet.Filter;  

import javax.servlet.FilterChain;  

import javax.servlet.FilterConfig;  

import javax.servlet.ServletException;  

import javax.servlet.ServletRequest;  

import javax.servlet.ServletResponse;  

import javax.servlet.http.HttpServletRequest;  

import javax.servlet.http.HttpServletResponse;  

public class JspFilter implements Filter {  

    public void destroy() {  

        // TODO 自动生成方法存根  

    }  

    public void doFilter(ServletRequest request, ServletResponse response,  

            FilterChain chain) throws IOException, ServletException {  

        HttpServletRequest hreq = (HttpServletRequest) request;  

        HttpServletResponse hresp = (HttpServletResponse) response;  

        //String name = hreq.getRequestURL().substring(hreq.getRequestURL().lastIndexOf("/") + 1, hreq.getRequestURL().lastIndexOf("."));  

        if (hreq.getRequestURL().indexOf(".jsp") != -1 && (null == hreq.getParameter("type") || hreq.getParameter("type").equals(""))) {              

                hresp.sendRedirect(hreq.getContextPath()+"/conversion?name="+hreq.getRequestURL());  
                return ;  

        }  

        chain.doFilter(request, response);  

    }  

    public void init(FilterConfig arg0) throws ServletException {  

        // TODO 自动生成方法存根  

    }  

}  

ConversionServlet .java  

package com.servlet;  

import java.io.BufferedReader;  

import java.io.File;  

import java.io.FileOutputStream;  

import java.io.IOException;  

import java.io.InputStream;  

import java.io.InputStreamReader;  

import java.io.PrintWriter;  

import java.net.HttpURLConnection;  

import java.net.URL;  

import javax.servlet.ServletException;  

import javax.servlet.http.HttpServlet;  

import javax.servlet.http.HttpServletRequest;  

import javax.servlet.http.HttpServletResponse;  

public class ConversionServlet extends HttpServlet {  

    public ConversionServlet () {  

        super();  

    }  

    public void destroy() {  

        super.destroy(); // Just puts "destroy" string in log  

        // Put your code here  

    }  

    public void doGet(HttpServletRequest request, HttpServletResponse response)  

            throws ServletException, IOException {  

        response.setContentType("text/html");  

        PrintWriter out = response.getWriter();  

        //----获取请求的URL  

        String reqTarget = request.getParameter("name");  

        //----指定对应JSP的HTML名称  

        String name = reqTarget.substring(reqTarget.lastIndexOf("/") + 1,reqTarget.lastIndexOf("."));  
          
        //---判断是否存在对应的HTML文件  

        File file = new File(request.getRealPath("/") + name + ".html");  

          

        if (!file.exists()) {   //--------如果不存在对应的HTML文件  

            try {  

                  

                file.createNewFile();   //--------创建HTML文件  

                //-------将JSP的内容写入对应的HTML文件内  

                InputStream in;  

                StringBuffer sb = new StringBuffer("");  

            //----注意这里,不能直接访问请求的URL,如果直接访问的话,会陷入死循环  

                URL url = new java.net.URL(reqTarget.toString()+"?type=11");  

                HttpURLConnection connection = (HttpURLConnection) url  

                        .openConnection();  

                connection.setRequestProperty("User-Agent", "Mozilla/4.0");  

                connection.connect();  

                in = connection.getInputStream();  

                java.io.BufferedReader breader = new BufferedReader(  

                        new InputStreamReader(in, "GBK"));  

                String currentLine;  

                FileOutputStream fos = new FileOutputStream(file);  

                while ((currentLine = breader.readLine()) != null) {  

                    sb.append(currentLine);  

                    fos.write(currentLine.getBytes());  

                }  

                if (null != breader)  

                    breader.close();  

                if (null != fos)  

                    fos.close();  

                //---------------转到与JSP对应的HTML页  

                response.sendRedirect(request.getContextPath()+"/"+name + ".html");  

            } catch (Exception e) {  

                e.printStackTrace();  

            }  

        }else{  

            //----------如果存在指定的HTML,直接跳转到指定的HTML页  

            response.sendRedirect(request.getContextPath()+"/"+name + ".html");  

        }  

    }  

    public void doPost(HttpServletRequest request, HttpServletResponse response)  

            throws ServletException, IOException {  

        doGet(request, response);  

    }  

    public void init() throws ServletException {  

        // Put your code here  

    }  

}  

web.xml  

   <servlet>  
    <servlet-name>ChangeHtml</servlet-name>  
    <servlet-class>com.servlet.ChangeHtml</servlet-class>  
      </servlet>  
<servlet-mapping>  
    <servlet-name>ChangeHtml</servlet-name>  
    <url-pattern>/changeHtml</url-pattern>  
</servlet-mapping>  
   <filter>  
    <filter-name>jspfilter</filter-name>  
    <filter-class>com.servlet.JspFilter</filter-class>  
</filter>  
<filter-mapping>  
    <filter-name>jspfilter</filter-name>  
    <url-pattern>*.jsp</url-pattern>  
</filter-mapping>  
<servlet>  
    <servlet-name>conversion</servlet-name>  
    <servlet-class>com.servlet.ConversionServlet </servlet-class>  
</servlet>  
<servlet-mapping>  
    <servlet-name>conversion</servlet-name>  
    <url-pattern>/conversion</url-pattern>  
</servlet-mapping>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值