变相怪杰 发表于 2015-1-18 11:30:37

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红,而开发出来的工具。

莫相离 发表于 2015-1-21 09:05:20

http://www.jdon.com/去下载,或到同济技术论坛的服务器ftp://nro.shtdu.edu.cn去下,安装上有什么问题,可以到论坛上去提问。

飘灵儿 发表于 2015-1-25 10:19:44

在全球云计算和移动互联网的产业环境下,Java更具备了显著优势和广阔前景。

愤怒的大鸟 发表于 2015-2-2 21:38:12

是一种使网页(Web Page)由静态(Static)转变为动态(Dynamic)的语言

谁可相欹 发表于 2015-2-5 20:22:14

你现在最缺的是实际的工作经验,而不是书本上那些凭空想出来的程序。

再现理想 发表于 2015-2-12 17:10:19

我大二,Java也只学了一年,觉得还是看thinking in java好,有能力的话看英文原版(中文版翻的不怎么好),还能提高英文文档阅读能力。

山那边是海 发表于 2015-3-3 03:51:03

科学超级计算机、移动电话和互联网,同时拥有全球最大的开发者专业社群。

兰色精灵 发表于 2015-3-4 23:10:37

至于JDBC,就不用我多说了,你如果用java编过存取数据库的程序,就应该很熟悉。还有,如果你要用Java编发送电子邮件的程序,你就得看看Javamail 了。

柔情似水 发表于 2015-3-11 21:17:46

在全球云计算和移动互联网的产业环境下,Java更具备了显著优势和广阔前景。

活着的死人 发表于 2015-3-19 13:32:12

http://www.jdon.com/去下载,或到同济技术论坛的服务器ftp://nro.shtdu.edu.cn去下,安装上有什么问题,可以到论坛上去提问。

冷月葬花魂 发表于 2015-3-27 23:51:20

是一种使网页(Web Page)由静态(Static)转变为动态(Dynamic)的语言

admin 发表于 2015-4-1 16:09:56

学Java必读的两个开源程序就是Jive和Pet Store.。 Jive是国外一个非常著名的BBS程序,完全开放源码。论坛的设计采用了很多先进的技术,如Cache、用户认证、Filter、XML等,而且论坛完全屏蔽了对数据库的访问,可以很轻易的在不同数据库中移植。论坛还有方便的安装和管理程序,这是我们平时编程时容易忽略的一部份(中国程序员一般只注重编程的技术含量,却完全不考虑用户的感受,这就是我们与国外软件的差距所在)。

乐观 发表于 2015-4-2 02:45:08

是一种将安全性(Security)列为第一优先考虑的语言

分手快乐 发表于 2015-4-3 00:12:22

是一种由美国SUN计算机公司(Sun Microsystems, Inc.)所研究而成的语言

小女巫 发表于 2015-4-7 21:15:29

任职于太阳微系统的詹姆斯·高斯林等人于1990年代初开发Java语言的雏形,最初被命名为Oak,目标设置在家用电器等小型系统的程序语言

简单生活 发表于 2015-4-10 06:21:56

其实说这种话的人就如当年小日本号称“三个月拿下中国”一样大言不惭。不是Tomjava泼你冷水,你现在只是学到了Java的骨架,却还没有学到Java的精髓。接下来你得研究设计模式了。

海妖 发表于 2015-4-19 11:53:52

自从Sun推出Java以来,就力图使之无所不包,所以Java发展到现在,按应用来分主要分为三大块:J2SE,J2ME和J2EE,这也就是Sun ONE(Open Net Environment)体系。J2SE就是Java2的标准版,主要用于桌面应用软件的编程;J2ME主要应用于嵌入是系统开发,如手机和PDA的编程;J2EE是Java2的企业版,主要用于分布式的网络程序的开发,如电子商务网站和ERP系统。

深爱那片海 发表于 2015-4-20 21:20:39

在全球云计算和移动互联网的产业环境下,Java更具备了显著优势和广阔前景。

灵魂腐蚀 发表于 2015-4-27 19:04:23

是一种为 Internet发展的计算机语言

飘飘悠悠 发表于 2015-6-5 09:15:36

是一种使网页(Web Page)由静态(Static)转变为动态(Dynamic)的语言
页: [1] 2
查看完整版本: JAVA网站制作之JSP WEBServer的完成道理