软件园学生在线

  • {{ item.name }}
  • 2023试用期

登录与注册

JSP 和 Servlet 的区别和联系

  • 郭 雨欣
  • 2022-12-24
  • 0

JSP和Servlet的区别与联系

​ 看到一篇文章说:提高java web开发,不得不提http协议,看见已经有http协议的博客了,所以就想说一下JSP和Servlet两个类之间的一个小点

1、什么是JSP?

​ JSP(Java Server Pages)是Sun 公司指定的一种服务器端动态页面技术的组件规范,Jsp是以“.jsp”为后缀的文件,在该文件中主要是html 和少量的java 代码。jsp 文件在容器中会转换成Servlet中执行。

2、什么是Servlet?

​ Servlet (Server Applet)是Sun公司指定的一种用来扩展Web服务器功能的组件规范,属于服务器端程序,主要功能在于交互式地浏览和修改数据,生成动态Web内容。
​ 借用知乎上java老师的一句话:

jsp就是在html里面写java代码,servlet就是在java里面写html代码。

3、JSP与Servlet的区别和联系

  • 运行过程

​ 客户在第一次请求JSP时,请求较慢,因为JSP Engine先把JSP程序转换成servlet代码,接着将它编译成类文件,以后贮存在内存中再次调用速度就快了;
​ 访问servlet时,可以直接对其编译好的类文件执行。

  • 使用方式

    ​ 要想使用servlet必须把它放在特定位置而且必须对其映射配置;
    ​ jsp可以放在和html同样位置(webapps根目录下或者webapps根目录下的子目录下)而且不需要配置,可以直接使用。

  • 程序组成

    ​ Servlet在Java代码中通过HttpServletResponse对象动态输出HTML内容;
    ​ JSP在静态HTML内容中嵌入Java代码,Java代码被动态执行后生成HTML内容

  • 职能分工

    ​ jsp更侧重于前端页面显示,servlet更侧重于业务逻辑。

  • 本是一家人

    ​ jsp经编译后就变成了Servlet.

    (JSP的本质就是Servlet,JVM只能识别java的类,不能识别JSP的代码,Web容器将JSP的代码编译成JVM能够识别的java类),所以用jsp实现的页面用servlet也能实现。

  • 各自特点

    • Servlet能够很好地组织业务逻辑代码,但是在Java源文件中通过字符串拼接的方式生成动态HTML内容会导致代码维护困难、可读性差
    • JSP虽然规避了Servlet在生成HTML内容方面的劣势,但是在HTML中混入大量、复杂的业务逻辑同样也是不可取的

4、通过MVC双剑合璧

提到JSP和Servlet,就不得不提MVC(Model-View-Controller)模式

MVC可以让它们发挥各自的优势,达到扬长避短的效果

MVC模式是软件工程中的一种软件架构模式,把软件系统分为三个基本部分:

模型(Model)、视图(View)和控制器(Controller):

  • Controller——负责转发请求,对请求进行处理
  • View——负责界面显示
  • Model——业务功能编写(例如算法实现)、数据库设计以及数据存取操作实现

在JSP/Servlet开发的软件系统中,这三个部分的描述如下所示:

  1. Web浏览器发送HTTP请求到服务端,被Controller(Servlet)获取并进行处理(例如参数解析、请求转发)
  2. Controller(Servlet)调用核心业务逻辑——Model部分,获得结果
  3. Controller(Servlet)将逻辑处理结果交给View(JSP),动态输出HTML内容
  4. 动态生成的HTML内容返回到浏览器显示

MVC模式在Web开发中的好处是非常明显,它规避了JSP与Servlet各自的短板,Servlet只负责业务逻辑而不会通过out.append()动态生成HTML代码;JSP中也不会充斥着大量的业务代码。这样大大提高了代码的可读性和可维护性。

参考博客jsp和servlet区别和联系

郭 雨欣
郭 雨欣
© 2025 软件园学生在线
Theme by Wing