兰色精灵 发表于 2015-1-18 11:10:20

JAVA编程:一个在JSP下完成将静态页面转为静态的方...

认真的记,感觉很紧张根本就没有时间和能力,来对技术知识点进行思考。这样课下就只能对知识进行简单的理解,其实简单的理解就是记忆课堂上讲的知识点,js|静态|静态|页面  1.媒介
  为了能深切浅出的了解这个框架的由来,我们起首来懂得一下JSP剖析器将我们写的JSP代码转换成的JAVA文件的内容。
  上面是一个JSP文件test.jsp
<%@pagelanguage="java"contentType="text/html;charset=GB2312"%>
<%
out.write("<!--文件入手下手-->");
%>
<html>
<head>
<body>
<%="输入"%>
</body>
</head>
</html>
  经由TOMCAT转换出的JAVA文件test$jsp.java内容以下:
packageorg.apache.jsp;
importjavax.servlet.*;
importjavax.servlet.http.*;
importjavax.servlet.jsp.*;
importorg.apache.jasper.runtime.*;
publicclasstest$jspextendsHttpJspBase{
static{
}
publictestOutRedir$jsp(){
}
privatestaticboolean_jspx_inited=false;
publicfinalvoid_jspx_init()throwsorg.apache.jasper.runtime.JspException{
}
publicvoid_jspService(HttpServletRequestrequest,HttpServletResponseresponse)
throwsjava.io.IOException,ServletException{
JspFactory_jspxFactory=null;
PageContextpageContext=null;
HttpSessionsession=null;
ServletContextapplication=null;
ServletConfigconfig=null;
JspWriterout=null;
Objectpage=this;
String_value=null;
try{
if(_jspx_inited==false){
synchronized(this){
if(_jspx_inited==false){
_jspx_init();
_jspx_inited=true;
}
}
}
_jspxFactory=JspFactory.getDefaultFactory();
response.setContentType("text/html;charset=GB2312");
pageContext=_jspxFactory.getPageContext(this,request,response,
"",true,8192,true);
application=pageContext.getServletContext();
config=pageContext.getServletConfig();
session=pageContext.getSession();
out=pageContext.getOut();
//为了节俭篇幅,我删除注释器增加的正文
out.write("
");
//上一句是因为<%@pagelanguage="java"contentType="text/html;charset=GB2312"%>前面的换行发生的
out.write("<!--文件入手下手-->");
out.write("
<html>
<head>
<body>
");
out.print("输入");
out.write("
</body>
</head>
</html>
");
}catch(Throwablet){
if(out!=null&&out.getBufferSize()!=0)
out.clearBuffer();
if(pageContext!=null)pageContext.handlePageException(t);
}finally{
if(_jspxFactory!=null)_jspxFactory.releasePageContext(pageContext);
}
}
}
  从下面的代码中能够明晰的看到JSP内建的几个对象(out、request、response、session、pageContext、application、config、page)是怎样发生的,懂servlet的伴侣一看就可以分明。
  上面重点了解一下out对象,它被声明为JspWriter范例,JspWriter是一个笼统类,在包javax.servlet.jsp中能够找到它的界说。
abstractpublicclassjavax.servlet.jsp.JspWriterextendsjava.io.Writer{
finalpublicstaticintNO_BUFFER=0;
finalpublicstaticintDEFAULT_BUFFER=-1;
finalpublicstaticintUNBOUNDED_BUFFER=-2;
protectedintbufferSize;
protectedBooleanautoFlush;
protectedjavax.servlet.jsp.JspWriter(intarg1,booleanarg2);
abstractpublicvoidnewLine()throwsIOException;
abstractpublicvoidprint(booleanarg0)throwsIOException;
abstractpublicvoidprint(chararg0)throwsIOException;
abstractpublicvoidprint(intarg0)throwsIOException;
abstractpublicvoidprint(longarg0)throwsIOException;
abstractpublicvoidprint(floatarg0)throwsIOException;
abstractpublicvoidprint(doublearg0)throwsIOException;
abstractpublicvoidprint(chararg0)throwsIOException;
abstractpublicvoidprint(Stringarg0)throwsIOException;
abstractpublicvoidprint(Objectarg0)throwsIOException;
abstractpublicvoidprintln()throwsIOException;
abstractpublicvoidprintln(booleanarg0)throwsIOException;
abstractpublicvoidprintln(chararg0)throwsIOException;
abstractpublicvoidprintln(intarg0)throwsIOException;
abstractpublicvoidprintln(longarg0)throwsIOException;
abstractpublicvoidprintln(floatarg0)throwsIOException;
abstractpublicvoidprintln(doublearg0)throwsIOException;
abstractpublicvoidprintln(chararg0)throwsIOException;
abstractpublicvoidprintln(Stringarg0)throwsIOException;
abtractpublicvoidprintln(Objectarg0)throwsIOException;
abstractpublicvoidclear()throwsIOException;
abstractpublicvoidclearBuffer()throwsIOException;
abstractpublicvoidflush()throwsIOException;
abstractpublicvoidclose()throwsIOException;
publicintgetBufferSize();
abstractpublicintgetRemaining();
publicbooleanisAutoFlush();
}
  我信任当我写到这里你大概已晓得我想怎样做了。是的,来个批红判白,承继JspWriter类,然后完成其界说的虚函数,然后把out变量交换成你本人完成的类的实例就ok了。
  2.完成交换
  假定:
<%@pagelanguage="java"contentType="text/html;charset=GB2312"
import="jwb.util.HtmlIntoFile,jwb.util.TempSinglet,java.io.File"%><%
JspWriterout_bak=out;
Stringarg1="argument1";
StringfilePath="/cache/依据参数天生文件名_"+arg1+".html";
//起首判别文件是不是已存在,假如不存在则实行本页面,不然跳转到静态页面就OK了
Filef=newFile(pageContext.getServletContext().getRealPath(filePath));
if(f.exists())
{
out_bak.clear();
pageContext.forward(filePath);
System.out.println("间接转到静态页面");
return;
}
out=newHtmlIntoFile(pageContext.getServletContext().getRealPath(filePath));
out.write("<!--文件入手下手-->");
%>
<html>
<head>
<body>
<%="看吧,这就是输入被重定向到文件的完成,很复杂吧^_^"%>
</body>
</head>
</html>
<%
out.close();//封闭天生的静态文件
out_bak.clear();
pageContext.forward(filePath);
System.out.println("实行本页面后再转到静态页面");
return;
%>
  3.更新成绩
  上面就会商一下怎样更重生成静态文件,实在从下面完成中你能够看到,很复杂的就是将天生的静态文件删除便可,至于甚么时分删除,要看你的需求了。我能想到的几种情形以下:
  当用来天生页面的数据更新时
  假如不必要很供应不时的数据能够准时更新
  永久不更新

其实产生见解的过程就是训练自己发现问题,分析问题的能力。根据以上的认识我想谈下传统的学习与通过视频独立学习的优缺点:

乐观 发表于 2015-1-19 05:13:48

Java自面世后就非常流行,发展迅速,对C++语言形成了有力冲击。Java 技术具有卓越的通用性、高效性、平台移植性和安全性,广泛应用于个人PC、数据中心、游戏控制台

山那边是海 发表于 2015-1-24 06:14:27

另外编写和运行Java程序需要JDK(包括JRE),在sun的官方网站上有下载,thinking in java第三版用的JDK版本是1.4,现在流行的版本1.5(sun称作J2SE 5.0,汗),不过听说Bruce的TIJ第四版国外已经出来了,是专门为J2SE 5.0而写的。

飘飘悠悠 发表于 2015-2-2 22:33:24

是一种突破用户端机器环境和CPU

冷月葬花魂 发表于 2015-2-3 06:43:50

Jive的资料在很多网站上都有,大家可以找来研究一下。相信你读完代码后,会有脱胎换骨的感觉。遗憾的是Jive从2.5以后就不再无条件的开放源代码,同时有licence限制。不过幸好还有中国一流的Java程序员关注它,外国人不开源了,中国人就不能开源吗?这里向大家推荐一个汉化的Jive版本—J道。Jive(J道版)是由中国Java界大名 鼎鼎的banq在Jive 2.1版本基础上改编而成, 全中文,增加了一些实用功能,如贴图,用户头像和用户资料查询等,而且有一个开发团队在不断升级。你可以访问banq的网站

只想知道 发表于 2015-2-5 23:27:02

是一种使用者不需花费很多时间学习的语言

爱飞 发表于 2015-2-14 05:16:02

让你能够真正掌握接口或抽象类的应用,从而在原来的Java语言基础上跃进一步,更重要的是,设计模式反复向你强调一个宗旨:要让你的程序尽可能的可重用。

蒙在股里 发表于 2015-3-4 04:45:09

你可以去承接一些项目做了,一开始可能有些困难,可是你有技术积累,又考虑周全,接下项目来可以迅速作完,相信大家以后都会来找你的,所以Money就哗啦啦的。。。。。。

深爱那片海 发表于 2015-3-11 16:54:26

是一种语言,用以产生「小应用程序(Applet(s))

灵魂腐蚀 发表于 2015-3-19 01:49:30

你一定会高兴地说,哈哈,原来成为Java高手就这么简单啊!记得Tomjava也曾碰到过一个项目经理,号称Java很简单,只要三个月就可以学会。

再见西城 发表于 2015-3-26 23:53:08

如果要向java web方向发展也要吧看看《Java web从入门到精通》学完再到《Struts2.0入门到精通》这样你差不多就把代码给学完了。有兴趣可以看一些设计模块和框架的包等等。
页: [1]
查看完整版本: JAVA编程:一个在JSP下完成将静态页面转为静态的方...