JSP与Servlet

作者: 一张橙 | 来源:发表于2018-11-05 22:09 被阅读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是一种遭人唾弃的行为,尤其是前端的展示极为丰富的今天,他不仅令人觉得混乱,还容易出错难以修改。

相关文章

  • 简单认识Servlet

    Servlet与JSP的关系 初识Servlet Servlet层级关系 顶层Servlet接口 GenericS...

  • java EE 相关概念的总结

    1.JSP和Servlet Servlet和JSP是统一的,广义上的Servlet包含JSP和Servlet,真正...

  • Head First Servlet & JSP读书笔记

    Head First Servlet & JSP读书笔记 本书内容:Servlet和JSP Servlet和JSP...

  • Servlet与Jsp(2)

    Jsp的使用JSP在Servlet容器中会被转换为Servlet来识别与运行,而其编写与HTML相似,其兼容HTM...

  • JSP与Servlet之间传值

    JSP与Servlet之间传值 Jsp与Servlet之间的传值有两种,一种是Jsp传值给Sevlet,另一种是S...

  • jsp与servlet之间传值

    JSP与Servlet之间传值 Jsp与Servlet之间的传值有两种,一种是Jsp传值给Sevlet,另一种是S...

  • JSP基本语法

    JSP本质是Servlet,每个JSP页面就是一个Servlet实例。在Tomcat中,JSP生成的Servlet...

  • Java面试问题

    1、JSP: jsp和servlet的区别 jsp本质就是Servlet,jsp的工作原理是:JSP页面在执行的时...

  • 复习

    JSP: 1、jsp和servlet的区别 jsp本质就是Servlet,jsp的工作原理是:JSP页面在执行的时...

  • Servlet与JSP学习笔记(三)JSP

    概述: JSP并没有取代Servlet,是对Servlet的补充 JSP实质是Servlet JSP的页面不需要编...

网友评论

    本文标题:JSP与Servlet

    本文链接:https://www.haomeiwen.com/subject/bvmexqtx.html