软件艺术思考者  
混沌,彷徨,立志,蓄势...
公告
日历
<2006年8月>
303112345
6789101112
13141516171819
20212223242526
272829303112
3456789

导航

随笔分类(86)

随笔档案(85)

搜索

  •  

最新评论

阅读排行榜

评论排行榜

 

引子:
我们以两个大型网站为例作比较:
51job和智联招聘(先声明我不是为他们作广告,仅以他们为例作技术上的比较)
51job采用的是比较“先进”的php技术,而智联用的是比较落后的asp.但我们可能会明显的感觉到51job的反应速度相比智联招聘实在是太慢了,为什么会这样?细心的人可能会察觉到了。智联虽然用的是asp,但他采用了另一种更巧妙的技术--asp生成静态页技术。所有的动态页基本上都转换成了html静态页,不用访问数据库,当然反应快了。
下面我们讨论一下jsp怎么转换成html??
首先要做一个模板。后缀不限,但一般都用*.template例子
<html>
<head>
<title>#title#</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<LINK href="../css.css" rel=stylesheet type=text/css>
</head>

<body>
<P align="center">
#title#<BR><BR><BR>
作者:#author#<BR><BR>
<BR>
#content#<BR><BR><BR><BR>
</P>
</body>
</html>
做一个处理模板的类或者jsp文件、(为说明问题我们从简单入手以一个jsp文件为例)
 filePath = request.getRealPath("/")+"WEB-INF/templates/template.htm";
 out.print(filePath);
 String templateContent="";
 FileInputStream fileinputstream = new FileInputStream(filePath);//读取模块文件
 int lenght = fileinputstream.available();
 byte bytes[] = new byte[lenght];
 fileinputstream.read(bytes);
 fileinputstream.close();
 templateContent = new String(bytes);
 out.print("以下是模板内容:<br>"+templateContent+"<br> 以下是置换以后的html内容<br><hr>");
 templateContent=templateContent.replaceAll("#title#",title);
 templateContent=templateContent.replaceAll("#author#",editer);//替换掉模块中相应的地方
 templateContent=templateContent.replaceAll("#content#",content);
 // 根据时间得文件名
 Calendar calendar = Calendar.getInstance();
 String fileame = String.valueOf(calendar.getTimeInMillis()) +".html";
 fileame = request.getRealPath("/")+fileame;//生成的html文件保存路径

 out.print(templateContent);
 FileOutputStream fileoutputstream = new FileOutputStream(fileame);//建立文件输出流
 byte tag_bytes[] = templateContent.getBytes();
 fileoutputstream.write(tag_bytes);
 fileoutputstream.close();
嗯,核心技术就是这样了,如果大家要求的性能更高,可以改用freemarker做模板。freemarker的使用方法可以参阅我的另一篇文章《Freemarker 模板工具的作用及使用

posted on 2006-07-28 14:42 智者无疆 阅读(3343) 评论(16)  编辑  收藏 所属分类: about java
评论:
  • # re: JSP生成静态页实践及其设计思想   白白 Posted @ 2006-07-28 15:59
    哇...又有新内容出来了,累了休息会儿!  回复  更多评论   

  • # re: JSP生成静态页实践及其设计思想   lalala Posted @ 2006-07-28 18:35
    你用网通的吧?上海电信打开51job速度嗖嗖的,北京网通连个美国代理服务器访问51job的速度比直接访问还快。  回复  更多评论   

  • # re: JSP生成静态页实践及其设计思想   Harry Posted @ 2006-07-31 09:29
    templateContent=templateContent.replaceAll("#title#",title);
    templateContent=templateContent.replaceAll("#author#",editer);//替换掉模块中相应的地方
    templateContent=templateContent.replaceAll("#content#",content);

    以上这些代码中, title, editor(不是editer), content从哪里来呢? 不是一样要访问数据库? 所以, 能否解释一下这句话? "智联虽然用的是asp,但他采用了另一种更巧妙的技术--asp生成静态页技术。所有的动态页基本上都转换成了html静态页,不用访问数据库,当然反应快了。"
      回复  更多评论   

  • # re: JSP生成静态页实践及其设计思想   智者无 Posted @ 2006-07-31 14:17
    我不认为访问51job速度很慢是因为我用了网通。这么大的网站就没有个网通的服务器?显然是不可能的。
    至于用美国的代理服务器访问51为什么比直接访问还快:我可以告诉你,这是因为代理访问器通常都设置一个很大的cache,访问它的时候根本不用再中转到国内服务器了。
    实际上,cache和我们的静态页技术的原则是一样的。  回复  更多评论   

  • # re: JSP生成静态页实践及其设计思想   白白 Posted @ 2006-07-31 15:41
    哦,是吗?我还是听不懂你在说什么!还是顶一下吧.  回复  更多评论   

  • # re: JSP生成静态页实践及其设计思想   jspark Posted @ 2006-08-01 10:54
    templateContent=templateContent.replaceAll("#title#",title);
    templateContent=templateContent.replaceAll("#author#",editer);//替换掉模块中相应的地方
    templateContent=templateContent.replaceAll("#content#",content);

    请问title、editor、content从那来的?不用访问数据吗  回复  更多评论   

  • # re: JSP生成静态页实践及其设计思想   CPlayer Posted @ 2006-08-01 18:32
    不错呀  回复  更多评论   

  • # re: JSP生成静态页实践及其设计思想   ljt Posted @ 2006-08-09 11:40
    感谢 一直在寻找 终于开窍  回复  更多评论   

  • # re: JSP生成静态页实践及其设计思想   一农 Posted @ 2006-08-10 22:51
    还有一种生成静态页面的方法,你在网上搜
    extends HttpServletResponseWrapper
    就可以了解到了.  回复  更多评论   

  • # re: JSP生成静态页实践及其设计思想   智者无疆 Posted @ 2006-08-11 09:27
    谢谢一农的留言。  回复  更多评论   

  • # re: JSP生成静态页实践及其设计思想   白白 Posted @ 2006-08-11 14:57
    very good!!  回复  更多评论   

  • # re: JSP生成静态页实践及其设计思想   坏男孩 Posted @ 2006-09-15 15:26
    拿走了,你要是不愿意我就删除了。  回复  更多评论   

  • # re: JSP生成静态页实践及其设计思想   xiaobai Posted @ 2006-09-15 15:37
    拿走可以,但请尊重我的劳动果实,注明出处。谢谢  回复  更多评论   

  • # re: JSP生成静态页实践及其设计思想   后学者 Posted @ 2006-10-13 18:06

    要是 内容有几个段落呢?

    怎么保证依然保持这些段落的样子,而不是搞成了一整段???  回复  更多评论   

  • # re: JSP生成静态页实践及其设计思想   **智者无疆 Posted @ 2006-10-19 15:23
    内容最终是什么样子的,除了用模板控制之外,还与替换内容的样式有关。  回复  更多评论   

  • # re: JSP生成静态页实践及其设计思想   嘿嘿 Posted @ 2006-12-27 17:50
    谢谢楼主无私的贡献  回复  更多评论   


只有注册用户登录后才能发表评论。


网站导航:
 
 
Copyright © 智者无疆 Powered by: 博客园 模板提供:沪江博客


   观音菩萨赞