java程序生成静态html_动态JSP页生成静态HTML

具体实现:

利用Filter的过滤功能把*.jsp过滤出来,判断是否存在对应的.html文件,如果不存在对应的.html文件,则将其内容读出写入指定的.html文件,再跳转到对应的.html即可。如果存在对应的.html文件,则直接跳转到对应的.html即可。

代码:

JspFilter.java

importjava.io.BufferedReader;

importjava.io.File;

importjava.io.FileOutputStream;

importjava.io.IOException;

importjava.io.InputStream;

importjava.io.InputStreamReader;

importjava.net.HttpURLConnection;

importjava.net.URL;

importjavax.servlet.Filter;

importjavax.servlet.FilterChain;

importjavax.servlet.FilterConfig;

importjavax.servlet.ServletException;

importjavax.servlet.ServletRequest;

importjavax.servlet.ServletResponse;

importjavax.servlet.http.HttpServletRequest;

importjavax.servlet.http.HttpServletResponse;

publicclassJspFilterimplementsFilter {

publicvoiddestroy() {

//TODO自动生成方法存根

}

publicvoiddoFilter(ServletRequest request, ServletResponse response,

FilterChain chain)throwsIOException, 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);

}

publicvoidinit(FilterConfig arg0)throwsServletException {

//TODO自动生成方法存根

}

}

ConversionServlet.java

importjava.io.BufferedReader;

importjava.io.File;

importjava.io.FileOutputStream;

importjava.io.IOException;

importjava.io.InputStream;

importjava.io.InputStreamReader;

importjava.io.PrintWriter;

importjava.net.HttpURLConnection;

importjava.net.URL;

importjavax.servlet.ServletException;

importjavax.servlet.http.HttpServlet;

importjavax.servlet.http.HttpServletRequest;

importjavax.servlet.http.HttpServletResponse;

publicclassConversionServletextendsHttpServlet {

publicConversionServlet () {

super();

}

publicvoiddestroy() {

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

// Put your code here

}

publicvoiddoGet(HttpServletRequest request, HttpServletResponse response)

throwsServletException, 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 =newFile(request.getRealPath("/") + name +".html");

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

try{

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

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

InputStream in;

StringBuffer sb =newStringBuffer("");

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

URL url =newjava.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 =newBufferedReader(

newInputStreamReader(in,"GBK"));

String currentLine;

FileOutputStream fos =newFileOutputStream(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");

}

}

publicvoiddoPost(HttpServletRequest request, HttpServletResponse response)

throwsServletException, IOException {

doGet(request, response);

}

publicvoidinit()throwsServletException {

// Put your code here

}

}

WEB.XML配置:

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">

jspfilter

com.beanutil.JspFilter

jspfilter

*.jsp

conversion

com.beanutil.ConversionServlet

conversion

/conversion

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值