JAVA网页设计JSP显现内容缓存技能
用winrar打包j2ee的程序和用IDE打包应用程序是一样的。按照你的想法,你是不是也希望服务器都整合由一家公司提供呢?js|缓存|技能|显现前段工夫做本人社区的论坛,在jive的基本上做一个页面显现一切论坛的帖子,能够称之为总版,仿照Forum类的接口做个SuperForum而且完成Cachable,不外由于这个页面革新量对照年夜,固然被Cache了,我仍是想举措举行页面的缓存,感到用jsp发生的html静态内容当缓存,页面会见速率应当有所进步。
起首想到的一种举措,是接纳java.net的URLConnection把服务器上的jsp抓过去做缓存,不外我以为如许做太见外了,本人服务器上的工具,为什么要用HTTP往会见.因而想别的一个举措,把jsp的out对象的输入把持到本人但愿的中央.好比输入到静态文件,又大概保留玉成局的字符串变量.如许的话,扫瞄就不必要实行jsp,只是扫瞄该html了.仅仅在数占有更新的时分举行一次update操纵,把jsp从头输入为html.
我以为,扫瞄事务比数据拔出或更新产生的次数多的时分.无妨尝尝这个举措来进步页面会见速率.
整件事变有点像把jsp看成模板,天生静态的html页面.
将以下代码写进web-xml
<filter>
<filter-name>FileCaptureFilter</filter-name>
<filter-class>com.junjing.filter.FileCaptureFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>FileCaptureFilter</filter-name>
<url-pattern>/latest.jsp</url-pattern>
</filter-mapping>
latest.jsp是我要cache的页面
java源码代码以下
/***STARTFileFileCaptureFilter.java*/
packagecom.junjing.filter;
importjavax.servlet.*;
importjavax.servlet.http.*;
importjava.io.*;
publicclassFileCaptureFilterimplementsFilter
{
privateStringprotDirPath;
publicvoidinit(FilterConfigfilterConfig)
throwsServletException
{
protDirPath=filterConfig.getServletContext().getRealPath("/");
}
publicvoiddoFilter(ServletRequestrequest,ServletResponseresponse,FilterChainchain)
throwsIOException,ServletException
{
StringfileName=protDirPath+"forum/lastest.html";
PrintWriterout=response.getWriter();
FileCaptureResponseWrapperresponseWrapper=newFileCaptureResponseWrapper((HttpServletResponse)response);
chain.doFilter(request,responseWrapper);
//fillresponseWrapperup
Stringhtml=responseWrapper.toString();
//失掉的html页面了局字符串
//responseWrapper.writeFile(fileName);
//dumpthecontents写成html文件,也能够保留在内存
//responseWrapper.writeResponse(out);
//backtobrowser
//responseWrapper.sendRedirect("lastestThread.jsp");
}
publicvoiddestroy(){}
}
/***ENDFileFileCaptureFilter.java*/
/***STARTFileFileCaptureResponseWrapper.java*/
packagecom.junjing.filter;
importjavax.servlet.*;
importjavax.servlet.http.*;
importjava.io.*;
publicclassFileCaptureResponseWrapper
extendsHttpServletResponseWrapper
{
privateCharArrayWriteroutput;
publicStringtoString()
{
returnoutput.toString();
}
publicFileCaptureResponseWrapper(HttpServletResponseresponse)
{
super(response);
output=newCharArrayWriter();
}
publicPrintWritergetWriter()
{
returnnewPrintWriter(output);
}
publicvoidwriteFile(StringfileName)
throwsIOException
{
FileWriterfw=newFileWriter(fileName);
fw.write(output.toCharArray());
fw.close();
}
publicvoidwriteResponse(PrintWriterout)
{
out.print(output.toCharArray());
}
}
/***ENDFileFileCaptureResponseWrapper.java*/
附件源代码
不外接纳resin服务器的话,以上代码会生效。由于resin没有完成getWriter办法,而是接纳getOutputStream取而代之,以是必需修正些代码来投合resin运转情况:
/***STARTFileFileCaptureResponseWrapper.java*/
packagecom.junjing.filter;
importjavax.servlet.*;
importjavax.servlet.http.*;
importjava.io.*;
publicclassFileCaptureResponseWrapper
extendsHttpServletResponseWrapper
{
privateCharArrayWriteroutput;
publicStringtoString()
{
returnoutput.toString();
}
publicFileCaptureResponseWrapper(HttpServletResponseresponse)
{
super(response);
output=newCharArrayWriter();
}
publicPrintWritergetWriter()
{
returnnewPrintWriter(output);
}
publicvoidwriteFile(StringfileName)
throwsIOException
{
FileWriterfw=newFileWriter(fileName);
fw.write(output.toString());
fw.close();
}
publicServletOutputStreamgetOutputStream()
throwsjava.io.IOException
{
returnnewServletOutputStream();
}
publicvoidwrite(intb)
throwsIOException
{
output.write(b);
}
publicvoidwrite(byteb[])
throwsIOException
{
output.write(newString(b,"GBK"));
}
publicvoidwrite(byteb[],intoff,intlen)
throwsIOException
{
output.write(newString(b,off,len));
}
};
}
publicvoidwriteResponse(PrintWriterout)
{
out.print(output.toCharArray());
}
}
/***ENDFileFileCaptureResponseWrapper.java*/
为什么外国人还要写那些框架进行代码封装,他们不就是为了别人使用时可以更简单么!如果要达到一个企业级项目的不用框架是很难的。小一些的项目还行,大的光是MVC模式的设计的编码量就够大的了。还有性能方面,单轮windows,这个工具是微软写的,。 当然你也可以参加一些开源项目,一方面可以提高自己,另一方面也是为中国软件事业做贡献嘛!开发者在互联网上用CVS合作开发,用QQ,MSN,E-mail讨论联系,天南海北的程序员分散在各地却同时开发同一个软件,是不是很有意思呢? 你一定会高兴地说,哈哈,原来成为Java高手就这么简单啊!记得Tomjava也曾碰到过一个项目经理,号称Java很简单,只要三个月就可以学会。 学Java必读的两个开源程序就是Jive和Pet Store.。 Jive是国外一个非常著名的BBS程序,完全开放源码。论坛的设计采用了很多先进的技术,如Cache、用户认证、Filter、XML等,而且论坛完全屏蔽了对数据库的访问,可以很轻易的在不同数据库中移植。论坛还有方便的安装和管理程序,这是我们平时编程时容易忽略的一部份(中国程序员一般只注重编程的技术含量,却完全不考虑用户的感受,这就是我们与国外软件的差距所在)。 Sun公司看见Oak在互联网上应用的前景,于是改造了Oak,于1995年5月以Java的名称正式发布。Java伴随着互联网的迅猛发展而发展,逐渐成为重要的网络编程语言。 至于JDBC,就不用我多说了,你如果用java编过存取数据库的程序,就应该很熟悉。还有,如果你要用Java编发送电子邮件的程序,你就得看看Javamail 了。 当然你也可以参加一些开源项目,一方面可以提高自己,另一方面也是为中国软件事业做贡献嘛!开发者在互联网上用CVS合作开发,用QQ,MSN,E-mail讨论联系,天南海北的程序员分散在各地却同时开发同一个软件,是不是很有意思呢? 你一定会高兴地说,哈哈,原来成为Java高手就这么简单啊!记得Tomjava也曾碰到过一个项目经理,号称Java很简单,只要三个月就可以学会。 Jive的资料在很多网站上都有,大家可以找来研究一下。相信你读完代码后,会有脱胎换骨的感觉。遗憾的是Jive从2.5以后就不再无条件的开放源代码,同时有licence限制。不过幸好还有中国一流的Java程序员关注它,外国人不开源了,中国人就不能开源吗?这里向大家推荐一个汉化的Jive版本—J道。Jive(J道版)是由中国Java界大名 鼎鼎的banq在Jive 2.1版本基础上改编而成, 全中文,增加了一些实用功能,如贴图,用户头像和用户资料查询等,而且有一个开发团队在不断升级。你可以访问banq的网站 多重继承(以接口取代)等特性,增加了垃圾回收器功能用于回收不再被引用的对象所占据的内存空间,使得程序员不用再为内存管理而担忧。在 Java 1.5 版本中,Java 又引入了泛型编程(Generic Programming)、类型安全的枚举、不定长参数和自动装/拆箱等语言特性。 你就该学一学Servlet了。Servlet就是服务器端小程序,他负责生成发送给客户端的HTML文件。JSP在执行时,也是先转换成Servlet再运行的。虽说JSP理论上可以完全取代Servlet,这也是SUN推出JSP的本意,可是Servlet用来控制流程跳转还是挺方便的,也令程序更清晰。接下来你应该学习一下Javabean了,可能你早就看不管JSP在HTML中嵌Java代码的混乱方式了,这种方式跟ASP又有什么区别呢? 应用在电视机、电话、闹钟、烤面包机等家用电器的控制和通信。由于这些智能化家电的市场需求没有预期的高,Sun公司放弃了该项计划。随着1990年代互联网的发展 设计模式是高级程序员真正掌握面向对象核心思想的必修课。设计模式并不是一种具体"技术",它讲述的是思想,它不仅仅展示了接口或抽象类在实际案例中的灵活应用和智慧 你现在最缺的是实际的工作经验,而不是书本上那些凭空想出来的程序。 是一种使用者不需花费很多时间学习的语言 在全球云计算和移动互联网的产业环境下,Java更具备了显著优势和广阔前景。 Pet Store.(宠物店)是SUN公司为了演示其J2EE编程规范而推出的开放源码的程序,应该很具有权威性,想学J2EE和EJB的朋友不要 错过了。 关于设计模式的资料,还是向大家推荐banq的网站 http://www.jdon.com/,他把GOF的23种模式以通俗易懂的方式诠释出来,纯Java描述,真是经典中的经典。 Pet Store.(宠物店)是SUN公司为了演示其J2EE编程规范而推出的开放源码的程序,应该很具有权威性,想学J2EE和EJB的朋友不要 错过了。 是一种使网页(Web Page)产生生动活泼画面的语言
页:
[1]
2