Java Web知识

JSP与Servlet

2018-11-05  本文已影响2人  一张橙

基本前提

JSP:它实际上是一个类。
Servlet:它实际上是一个接口,而我们日常所说的Servlet则是指实现了Servlet这个接口的类例如HTTPServlet。

用途

二者都是为了解决同一个问题而产生的:在B/S应用分为前后端的情况下,根据后端需要动态改变的内容,来展示前端的页面。

举例说明

微博需要将当前登录用户的昵称显示在用户详情页上。假设现有“建国”和“建国”两个用户,那么为了做到这一点,后端从数据库查找到了两条记录。

Servlet的做法是,在Servlet的实现类中,分别拿着“建国”和“翠兰”两个名称拼上同一个HTML页面后以流的形式写给浏览器。


JSP的做法是,我们已知用于展示的详情页面是格式相同的HTML页面,唯一需要改变的仅仅是页面中要选择显示“建国”还是“翠兰”。

那么将此HTML页面先定义好,但与静态的页面.html文件区分而采用.jsp结尾。此.jsp结尾的文件与需要输出的.html文件在展示的格式上无任何区别,仅仅是在页面中需要输出昵称的位置增加了一个可识别的变量形如${nickName}。

JSP引擎会在用户第一次访问此页面的时候将此.jsp结尾的文件编译成一个Java类(这个类很特殊,除了JSP标签标记外的部分都被作为将来要输出的一部分,而被标记了的则作为逻辑处理),那么我们就可以将后台得到的记录给到${nickName}变量中,而后做了两件事情,第一是将此编译后的文件保存在内存中,方便下次调用(即页面访问)。第二是将处理过后的页面以流的形式写给浏览器。

归纳

显然地,JSP与Servlet的做法是基本一致的,都是通过流的形式在Java类中将需要前端展示的部分写出。而他们实现这个目的的思路却恰恰相反,通俗地说(不严谨地说)是Servlet是在Java类中嵌套HTML页面,JSP则是在HTML页面中嵌入Java代码。

也就有了我们常说的JSP比Servlet优越的地方在于:

JSP归JSP引擎来执行编译,它在用户第一次访问页面的时候编译,也就是说前端更新过后的样式、标签会在刷新浏览器向服务器发送请求)的时候体现出来。而Servlet归Servlet容器也就是Tomcat执行编译,因此我们需要重启服务器,那么此时在Servlet中更新过的样式、标签才会体现出来。


而另一方面,在Java类中嵌套HTML是一种遭人唾弃的行为,尤其是前端的展示极为丰富的今天,他不仅令人觉得混乱,还容易出错难以修改。

上一篇下一篇

猜你喜欢

热点阅读