JAVA网站制作之JSP WEBServer的完成道理
首先第一点:jsp,servlet,javabean这些最基本的,嘿嘿,就算你是高手的话,在大行的企业级应用的话还是需要框架的,一个好的框架确实能构解决许多问题。js|server|web由于要完成一个WebServer,写完了一个复杂的WebServer后突发奇想,何不完成一个JSP的WebServer呢?有了这个设法后,就入手下手思索JSP的完成道理,实在JSP的完成也很复杂,说白了就是将其转换成一个Java文件,再对这个Java文件举行编译,天生类文件,接着再由服务器利用这个类文件。从整体上分,能够将JSP文件的内容分别为两年夜块,即输入语句和把持语句。
至于JSP文件中的HTML语句就是我们要输入的内容,而JSP标签则是把持HTML语句的输入。比方,有一个JSP文件的内容以下:
<html>
<body>
<%!java.util.Datedate=newjava.util.Date();
intsize=10;
%>
<%for(inti=0;i<size;i++){%>
<h1>Hello<%=i%>
</h1>
<%}%>
<%=date%>
</body>
</html>
这个JSP文件将发生以下效果:
Hello0
Hello1
Hello2
Hello3
Hello4
Hello5
Hello6
Hello7
Hello8
Hello9
ThuDec1618:30:21CST2004
那末,如今的成绩就是我们就天生甚么样的java文件,才干取得准确的了局。
首选写一个Interface,该接口就是我们要天生的JAVA文件将要承继的接口。其界说以下:
packagehttpserver;
importjava.net.Socket;
importjava.io.IOException;
publicinterfaceJsp2HtmlInterface{
voidprintHtml(Socketsocket)throwsIOException;
}
接上去就写一个类JavaServerPage卖力剖析JSP文件,在这个类中将会静态天生JAVA文件,并编译天生一个可用类。再挪用这个类文件的printHtml(socket)办法,将呼应信息写给客户端(个中socket为服务器accept前往的套接口。如许客户就可以看到JSP准确运转的了局。这个剖析JavaServerPage的类框架以下:
publicclassJavaServerPage{
publicJavaServerPage(Filefile,Socketsocket)throwsException{}//file为客户端哀求的一个JSP文件
//socket为服务器同客户端连接的套接口
publicvoidwriteReponse(){//这个函数将卖力依据指定的JSP文件依据某种
GeneratJava();//静态天生java文件并将编译,
Processproc=Runtime.getRuntime().exec("javac...");
try{
proc.waitFor();
}catch(InterruptedExceptionie){}
httpserver.Jsp2HtmlInterfaceobject=(httpserver.Jsp2HtmlInterface)Class.forName("...").newInstance();
object.printHtml(socket);
}
}
假定我们用某种算法将下面的JSP文件天生以下的JAVA文件
packagehttpserver;
importjava.io.*;
importjava.awt.*;
importjava.net.Socket;
publicclasstestimplementsJsp2HtmlInterface{
privatePrintStreamout;
publictest(){}
publicvoidprintln(Objectobject)throwsIOException{
out.print(object.toString()+"
");}
publicvoidprintln(inti)throwsIOException{
out.print(i+"
");}
publicvoidprintln(floati)throwsIOException{
out.print(i+"
");}
publicvoidprintln(doublei)throwsIOException{
out.print(i+"
");}
publicvoidprintln(longi)throwsIOException{
out.print(i+"
");}
publicvoidprintln(charch)throwsIOException{
out.print(ch+"
");}
publicvoidprintln(char[]ch)throwsIOException{
out.print(ch+"
");}
publicvoidprintln()throwsIOException{
out.print("
");
}
publicvoidclose(){
out.close();
}
publicvoidprintHtml(Socketsocket)throwsIOException{
out=newPrintStream(socket.getOutputStream());
this.println("<html>");
this.println("<title>Hello</title>");
this.println("<body>");
java.util.Datedate=newjava.util.Date();
intsize=10;
for(inti=0;i<size;i++){
this.println("<h1>Hello");
this.println(i);
this.println();
this.println("</h1>");
}
this.println(date);
this.println();
this.println("</body>");
this.println("</html>");
this.println();
this.close();
}
}
经由过程挪用该类printHtml()办法便可完成JSP文件的剖析。
本办法在JBuilderX情况下编译经由过程。
说到这里,人人是否是想下手完成一个自已的tomcat大概完成其余甚么静态剧本言语了。
不得不提一下的是:.net是看到java红,而开发出来的工具。 http://www.jdon.com/去下载,或到同济技术论坛的服务器ftp://nro.shtdu.edu.cn去下,安装上有什么问题,可以到论坛上去提问。 在全球云计算和移动互联网的产业环境下,Java更具备了显著优势和广阔前景。 是一种使网页(Web Page)由静态(Static)转变为动态(Dynamic)的语言 你现在最缺的是实际的工作经验,而不是书本上那些凭空想出来的程序。 我大二,Java也只学了一年,觉得还是看thinking in java好,有能力的话看英文原版(中文版翻的不怎么好),还能提高英文文档阅读能力。 科学超级计算机、移动电话和互联网,同时拥有全球最大的开发者专业社群。 至于JDBC,就不用我多说了,你如果用java编过存取数据库的程序,就应该很熟悉。还有,如果你要用Java编发送电子邮件的程序,你就得看看Javamail 了。 在全球云计算和移动互联网的产业环境下,Java更具备了显著优势和广阔前景。 http://www.jdon.com/去下载,或到同济技术论坛的服务器ftp://nro.shtdu.edu.cn去下,安装上有什么问题,可以到论坛上去提问。 是一种使网页(Web Page)由静态(Static)转变为动态(Dynamic)的语言 学Java必读的两个开源程序就是Jive和Pet Store.。 Jive是国外一个非常著名的BBS程序,完全开放源码。论坛的设计采用了很多先进的技术,如Cache、用户认证、Filter、XML等,而且论坛完全屏蔽了对数据库的访问,可以很轻易的在不同数据库中移植。论坛还有方便的安装和管理程序,这是我们平时编程时容易忽略的一部份(中国程序员一般只注重编程的技术含量,却完全不考虑用户的感受,这就是我们与国外软件的差距所在)。 是一种将安全性(Security)列为第一优先考虑的语言 是一种由美国SUN计算机公司(Sun Microsystems, Inc.)所研究而成的语言 任职于太阳微系统的詹姆斯·高斯林等人于1990年代初开发Java语言的雏形,最初被命名为Oak,目标设置在家用电器等小型系统的程序语言 其实说这种话的人就如当年小日本号称“三个月拿下中国”一样大言不惭。不是Tomjava泼你冷水,你现在只是学到了Java的骨架,却还没有学到Java的精髓。接下来你得研究设计模式了。 自从Sun推出Java以来,就力图使之无所不包,所以Java发展到现在,按应用来分主要分为三大块:J2SE,J2ME和J2EE,这也就是Sun ONE(Open Net Environment)体系。J2SE就是Java2的标准版,主要用于桌面应用软件的编程;J2ME主要应用于嵌入是系统开发,如手机和PDA的编程;J2EE是Java2的企业版,主要用于分布式的网络程序的开发,如电子商务网站和ERP系统。 在全球云计算和移动互联网的产业环境下,Java更具备了显著优势和广阔前景。 是一种为 Internet发展的计算机语言 是一种使网页(Web Page)由静态(Static)转变为动态(Dynamic)的语言
页:
[1]
2