JSP生成静态HTML页面的几种方法_第1页
JSP生成静态HTML页面的几种方法_第2页
JSP生成静态HTML页面的几种方法_第3页
JSP生成静态HTML页面的几种方法_第4页
JSP生成静态HTML页面的几种方法_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

JSPHTML2023041209:261.buildhtml.jsp<%@contentType=“text/html;charset=gb2312“import=“java.util.*,java.io.*“%><%try{Stringtitle=“ThisisTitle“;Stringcontent=“ThisisContentArea“;Stringediter=“LaoMao“;StringfilePath=““;filePath=request.getRealPath(“/“)+“test/template.htm“;//out.print(filePath+“<br>“);StringtemplateContent=““;FileInputStreamfileinputstreamnewFileInputStream(filePath);//读取模块文件intlenght=fileinputstream.available;bytebytes[]=newbyte[lenght];fileinputstream.read(bytes);fileinputstream.close;templateContent=newString(bytes);//out.print(templateContent);templateContent=templateContent.replaceAll(“###title###“,title);templateContent=templateContent.replaceAll(“###content###“,content);templateContent=templateContent.replaceAll(“###author###“,editer);//替换掉模块中相应的地方//out.print(templateContent);//Calendarcalendar=Calendar.getInstance;Stringfileame=String.valueOf(calendar.getTimeInMillis)+“.html“;fileame=request.getRealPath(“/“)+fileame;//htmlFileOutputStreamfileoutputstream=newFileOutputStream(fileame);//建立文件输出流bytetag_bytes[]=templateContent.getBytes;fileoutputstream.write(tag_bytes);fileoutputstream.close;}catch(Exceptione){out.print(e.toString);}%>2.template.htm<html><head><title>###title###</title><meta-equiv=“Content-Type“content=“text/html;charset=gb2312“><LINKhref=“../css.css“rel=stylesheettype=text/css></head><body><tablewidth=“500“border=“0“align=“center“cellpadding=“0“cellspacing=“2“><tr><tdalign=“center“>###title###</td></tr><tr><tdalign=“center“>author:###author###  </td></tr><tr><td>###content###</td></tr></table></body></html>=======================================================二、从动态页的URL猎取相应页面内容并写入到文件/*Createdon2023-3-4TochangethetemplateforthisgeneratedfilegotoWindow>Preferences>Java>CodeGeneration>CodeandComments*/package.tools.utils;importjava.io.BufferedReader;importjava.io.File;importjava.io.FileOutputStream;importjava.io.InputStream;importjava.io.InputStreamReader;importjava.io.PrintWriter;import.URLConnection;import.URL;importjava.util.Date;/**@authorAdministratorTochangethetemplateforthisgeneratedtypecommentgotoWindow>Preferences>Java>CodeGeneration>CodeandComments*/publicclassMakeHtml{privatestaticlongstar=0;privatestaticlongend=0;privatestaticlongttime=0;htmlpublicstaticStringgetHtmlCode(StringUrl){Datebefore=newDate;star=before.getTime;StringhtmlCode=““;try{InputStream in;URLurl=new.URL(Url);URLConnectionconnection=(URLConnection)url.openConnection;connection=(URLConnection)url.openConnection;connection.setRequestProperty(“User-Agent“,“Mozilla/4.0“);connection.connect;in=connection.getInputStream;java.io.BufferedReaderbreader=newBufferedReader(newInputStreamReader(in,“GBK“));StringcurrentLine;while((currentLine=breader.readLine)!=null){htmlCode+=currentLine;}}catch(Exceptione){e.printStackTrace;}finally{Dateafter=newDate;end=after.getTime;ttime=end-star;System.out.println(“执行时间:“+ttime+“秒“);}returnhtmlCode;}//存储文件publicstaticsynchronizedvoidwriteHtml(StringfilePath,Stringinfo,Stringflag){PrintWriterpw=null;try{FilewriteFile=newFile(filePath);booleanisExit=writeFile.exists;if(isExit!=true){writeFile.createNewFile;}else{if(!flag.equals(“NO“)){writeFile.delete;writeFile.createNewFile;}}pw=newPrintWriter(newFileOutputStream(filePath,true));pw.println(info);pw.close;}catch(Exceptionex){System.out.println(ex.getMessage);}finally{pw.close;}}publicstaticvoidmain(String[]args){Stringurl=“:///index.htm““:///index.htm“;writeHtml(“c:/demo.htm“,getHtmlCode(url),“NO“);}}三、利用Filter和定制Response,把效劳器返回的JSP响应输出到我们自己的ResponseHtmlimportjava.io.*;importjavax.servlet.*;importjavax.servlet..*;importjava.util.Calendar;publicclassCacheFilterimplementsFilter{ServletContextsc;FilterConfigfc;longcacheTimeout=Long.MAX_VALUE;publicvoiddoFilter(ServletRequestreq,ServletResponseres,FilterChainchain)throwsIOException,ServletException{ServletRequestrequest=(ServletRequest)req;ServletResponseresponse=(ServletResponse)res;//checkifwasaresourcethatshouldn”tbecached.Stringr=sc.getRealPath(““);Stringpath=fc.getInitParameter(request.getRequestURI);if(path!=null&&path.equals(“nocache“)){chain.doFilter(request,response);return;}path=r+path;Stringid=request.getRequestURI+request.getQueryString;FiletempDir=(File)sc.getAttribute(“javax.servlet.context.tempdir“);//getpossiblecacheStringtemp=tempDir.getAbsolutePath;Filefile=newFile(temp+id);//getcurrentresourceif(path==null){path=sc.getRealPath(request.getRequestURI);}Filecurrent=newFile(path);try{longnow=Calendar.getInstance.getTimeInMillis;//settimestampcheckif(!file.exists||(file.exists&¤t.lastModified>file.lastModified)||cacheTimeout<now-file.lastModified){Stringname=file.getAbsolutePath;name=name.substring(0,name.lastIndexOf(“/“));newFile(name).mkdirs;ByteArrayOutputStreambaos=newByteArrayOutputStream;CacheResponseWrapperwrappedResponse=newCacheResponseWrapper(response,baos);chain.doFilter(req,wrappedResponse);FileOutputStreamfos=newFileOutputStream(file);fos.write(baos.toByteArray);fos.flush;fos.close;}}catch(ServletExceptione){if(!file.exists){thrownewServletException(e);}}catch(IOExceptione){if(!file.exists){throwe;}}FileInputStreamfis=newFileInputStream(file);Stringmt=sc.getMimeType(request.getRequestURI);response.setContentType(mt);ServletOutputStreamsos=res.getOutputStream;for(inti=fis.read;i!=-1;i=fis.read){sos.write((byte)i);}}publicvoidinit(FilterConfigfilterConfig){this.fc=filterConfig;Stringct=fc.getInitParameter(“cacheTimeout“);if(ct!=null){cacheTimeout=60*1000*Long.parseLong(ct);}this.sc=filterConfig.getServletContext;}publicvoiddestroy{this.sc=null;this.fc=null;}}参考文章:使用Filter实现静态HTML缓冲(一种折中方法)缓冲是WebJSP/ServletJSPJSPHtml适合于数据不常常变化但是页面访问量特别大的站点,如闻等,通过把JSPHtml应的Html页面,从而避开解析JSP恳求,调用后台规律以

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论