具体实现:
         利用Filter的过滤功能把*.jsp过滤出来,判断是否存在对应的.html文件,如果不存在对应的.html文件,则将其内容读出写入指定的.html文件,再跳转到对应的.html即可。如果存在对应的.html文件,则直接跳转到对应的.html即可。
 
代码:
JspFilter.java
 
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.net.HttpURLConnection;
import java.net.URL;
 
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
 
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配置:
 
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4" 
    xmlns="http://java.sun.com/xml/ns/j2ee" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee 
    http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
  <filter>
    <filter-name>jspfilter</filter-name>
    <filter-class>com.beanutil.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.beanutil.ConversionServlet </servlet-class>
  </servlet>
 
  <servlet-mapping>
    <servlet-name>conversion</servlet-name>
    <url-pattern>/conversion</url-pattern>
  </servlet-mapping>
</web-app>