仓酷云
标题:
JAVA教程之一个完成将静态页面转为静态的计划
[打印本页]
作者:
再现理想
时间:
2015-1-18 11:16
标题:
JAVA教程之一个完成将静态页面转为静态的计划
没有那个大公司会傻了吧唧用.net开发大型项目,开发了,那等于自己一半的生命线被微软握着呢。而.net不行,限制在window系统,又是捆绑,鄙视微软之!静态|静态|页面
1.媒介
为了能深切浅出的了解这个框架的由来,我们起首来懂得一下JSP剖析器将我们写的JSP代码转换成的JAVA文件的内容。上面是一个JSP文件test.jsp<%@pagelanguage=javacontentType=text/html;charset=GB2312%><%out.write();%><%=输入%>经由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=javacontentType=text/html;charset=GB2312%>前面的换行发生的out.write();out.write(
);out.print(输入);out.write(
);}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中能够找到它的界说。
abstract
public
class
javax.servlet.jsp.JspWriterextendsjava.io.Writer
{
finalpublicstaticint
NO_BUFFER=0;
finalpublicstaticint
DEFAULT_BUFFER=-1;
finalpublicstaticint
UNBOUNDED_BUFFER=-2;
protectedint
bufferSize;
protectedBoolean
autoFlush;
protected
javax.servlet.jsp.JspWriter(
int
arg1,
boolean
arg2);
abstract
public
void
newLine()
throws
IOException;
abstract
public
void
print(
boolean
arg0)
throws
IOException;
abstract
public
void
print(
char
arg0)
throws
IOException;
abstract
public
void
print(
int
arg0)
throws
IOException;
abstract
public
void
print(
long
arg0)
throws
IOException;
abstract
public
void
print(
float
arg0)
throws
IOException;
abstract
public
void
print(
double
arg0)
throws
IOException;
abstract
public
void
print(
char
[]arg0)
throws
IOException;
abstract
public
void
print(Stringarg0)
throws
IOException;
abstract
public
void
print(Objectarg0)
throws
IOException;
abstract
public
void
println()
throws
IOException;
abstract
public
void
println(
boolean
arg0)
throws
IOException;
abstract
public
void
println(
char
arg0)
throws
IOException;
abstract
public
void
println(
int
arg0)
throws
IOException;
abstract
public
void
println(
long
arg0)
throws
IOException;
abstract
public
void
println(
float
arg0)
throws
IOException;
abstract
public
void
println(
double
arg0)
throws
IOException;
abstract
public
void
println(
char
[]arg0)
throws
IOException;
abstract
public
void
println(Stringarg0)
throws
IOException;
abtract
public
void
println(Objectarg0)
throws
IOException;
abstract
public
void
clear()
throws
IOException;
abstract
public
void
clearBuffer()
throws
IOException;
abstract
public
void
flush()
throws
IOException;
abstract
public
void
close()
throws
IOException;
public
int
getBufferSize();
abstract
public
int
getRemaining();
public
boolean
isAutoFlush();}我信任当我写到这里你大概已晓得我想怎样做了。是的,来个批红判白,承继JspWriter类,然后完成其界说的虚函数,然后把out变量交换成你本人完成的类的实例就ok了。
2.完成交换
假定<%@pagelanguage=javacontentType=text/html;charset=GB2312import=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();%><%=看吧,这就是输入被重定向到文件的完成,很复杂吧^_^%><%out.close();//封闭天生的静态文件out_bak.clear();pageContext.forward(filePath);System.out.println(实行本页面后再转到静态页面);return;%>
3.更新成绩
上面就会商一下怎样更重生成静态文件,实在从下面完成中你能够看到,很复杂的就是将天生的静态文件删除便可,至于甚么时分删除,要看你的需求了。我能想到的几种情形以下
当用来天生页面的数据更新时
假如不必要很供应不时的数据能够准时更新
永久不更新
有了这样一个呼声:让java代替C语言成为基本语言。这些足以说明java简单易学的这个优点。其次,java的功能强大,前面我也提到了,EJB3.0的推出使java成为了大型项目的首选。
作者:
愤怒的大鸟
时间:
2015-1-20 19:01
是一种使网页(Web Page)由静态(Static)转变为动态(Dynamic)的语言
作者:
仓酷云
时间:
2015-1-24 13:51
自从Sun推出Java以来,就力图使之无所不包,所以Java发展到现在,按应用来分主要分为三大块:J2SE,J2ME和J2EE,这也就是Sun ONE(Open Net Environment)体系。J2SE就是Java2的标准版,主要用于桌面应用软件的编程;J2ME主要应用于嵌入是系统开发,如手机和PDA的编程;J2EE是Java2的企业版,主要用于分布式的网络程序的开发,如电子商务网站和ERP系统。
作者:
冷月葬花魂
时间:
2015-1-25 11:05
学Java必读的两个开源程序就是Jive和Pet Store.。 Jive是国外一个非常著名的BBS程序,完全开放源码。论坛的设计采用了很多先进的技术,如Cache、用户认证、Filter、XML等,而且论坛完全屏蔽了对数据库的访问,可以很轻易的在不同数据库中移植。论坛还有方便的安装和管理程序,这是我们平时编程时容易忽略的一部份(中国程序员一般只注重编程的技术含量,却完全不考虑用户的感受,这就是我们与国外软件的差距所在)。
作者:
灵魂腐蚀
时间:
2015-1-31 19:49
任职于太阳微系统的詹姆斯·高斯林等人于1990年代初开发Java语言的雏形,最初被命名为Oak,目标设置在家用电器等小型系统的程序语言
作者:
金色的骷髅
时间:
2015-2-4 13:45
至于JDBC,就不用我多说了,你如果用java编过存取数据库的程序,就应该很熟悉。还有,如果你要用Java编发送电子邮件的程序,你就得看看Javamail 了。
作者:
活着的死人
时间:
2015-2-10 00:45
你现在最缺的是实际的工作经验,而不是书本上那些凭空想出来的程序。
作者:
再见西城
时间:
2015-2-18 19:33
其实说这种话的人就如当年小日本号称“三个月拿下中国”一样大言不惭。不是Tomjava泼你冷水,你现在只是学到了Java的骨架,却还没有学到Java的精髓。接下来你得研究设计模式了。
作者:
莫相离
时间:
2015-3-6 09:17
是一种简化的C++语言 是一种安全的语言,具有阻绝计算机病毒传输的功能
作者:
蒙在股里
时间:
2015-3-12 23:06
其实说这种话的人就如当年小日本号称“三个月拿下中国”一样大言不惭。不是Tomjava泼你冷水,你现在只是学到了Java的骨架,却还没有学到Java的精髓。接下来你得研究设计模式了。
作者:
变相怪杰
时间:
2015-3-20 05:04
关于设计模式的资料,还是向大家推荐banq的网站 [url]http://www.jdon.com/[/url],他把GOF的23种模式以通俗易懂的方式诠释出来,纯Java描述,真是经典中的经典。
欢迎光临 仓酷云 (http://ckuyun.com/)
Powered by Discuz! X3.2