理解JSP技术的利器--分清客户端和服务器端概念

来源:互联网 发布:redtube软件下载 编辑:程序博客网 时间:2024/06/09 18:13

     在开始工作的时候,最开始接触的技术是嵌入式的C开发,而以前在学校进行学习是微软的技术体系,在VC6.0下研究MFC和MSDN花费了很长时间。后来随着公司内工作的调整,对Java JSP技术体系的WEB编程有了初步的接触。但是,由于公司类型的限制,公司内对于Java WEB编程方面的交流圈和技术积累都是非常狭窄的,C语言的圈子和高手都比较多。
 
    个人在不断的摸索学习和与它人讨论中,觉得很多人对于JSP的技术认识常有剪不清理还乱的状态,其中一个重要的概念没有讲清楚的就是JSP在客户端和服务器端的行为。
 
    前几天听一个同事向公司内普通C语言程序员介绍JSP技术的培训,还是继续发现这种缺憾,别人听起来也云里雾里,遂就涌现了一定要写这篇博客,说清JSP页面比较低层的景象、图像。而这篇博客另外一方面,也是因为想到最初和我们团队内“牛人”在共同学习和探讨JSP积累起来对JSP这个认识,也算作一种怀念吧。

 

   在我看来,对于JSP技术的理解,不能不能理清JSP在客户端和服务器端的行为,只有理解了在这两边的行为,你才能对JSP说得清楚、理解的透彻,不至于一锅粥!
 
  1)在客户端,JSP非常简单,其实就是标准的HTML(+script),JSP在客户端没有超越HTML(+script)规范,不比静态的HTML页面会多出多少行为。
     在后面也会谈到,因为JSP页面服务器端和客户端的结构,服务器端给客户端输出就是纯粹的HTML。
 
  2)在服务器端,JSP在经过JSPC和JAVAC的帮助下,过程上经历了JSP页面-->JSP页面.java的翻译过程-->JSP页面.class的编译过程。在翻译的步骤中JSP页面.java实现了JSP WEB编程规范中serverlet接口,拥有了处理客户端http请求和输出http响应的能力,最终再成为JSP页面.class就拥有了被JVM执行,被WEb容器调用的能力。

 

    在JSP页面.java这个翻译出来的文件,你可以看到对待JSP页面中的纯粹HTML信息,会直接在http响应中进行out.write进行直接输出,对于JSP页面中的JAVA代码部分会经历一番“运算”,如果这些“运算”的结果是纯HTML信息,则继续输出到out.write中,也转化为纯粹的HTML。关于此过程,如果你使用tomcat作为你的WEB程序容器的话,可以在work目录下发现JSP页面.java和JSP页面.class,可以学下这个过程的。

 

  3)客户端和服务器端之间的连接关系是HTTP,内容为纯粹的HTML。

    似乎画蛇添足地提出第三点,对第三点提出,也是为了澄清以前有些朋友对JSP的一些误解。具体来讲,就是服务器端的对象和数据信息到达客户端,都需要经过一番序列化或持久化操作,中间不能传递语言级别的对象信息,因为JSP对象的Java语言边界在服务器端已经被HTTP/HTML这种技术帝国定界了,跨越边界和体系必须需要进行体系间的转换了。。。。

 

 

   结论,最终,不管是ASP还是PHP,都是基于HTTP和HTML的WEB编程模型,所以,它们的宏观行为跟JSP是类似的。

 

   分清客户端和服务器端的概念是理解JSP技术的利器,它是在架构上、内秉地区别于两点的,谈论JSP技术不涉及说清客户端和服务器端的区别,就剪不清理还乱了。。。。。。。。。
  
   记述一点积累,记述一段历史