zoukankan      html  css  js  c++  java
  • JSP 与 SERVLET

    简单的说,jsp是servlet的扩展,servlet 是 java applet(解释为java小程序)

    刚开始学java 的时候,jsp 与html 傻傻分不清楚,jsp中能写html标签、元素、属性等等,为啥说jsp是一门java的技术,后来才知道,jsp会编译,最终生成html响应给客户端。

    servlet与CGI(公共网关接口)

    Java Servlet 通常情况下与使用 CGI(Common Gateway Interface,公共网关接口)实现的程序可以达到异曲同工的效果。

    CGI:

    下面是百科解释:

    CGI 是Web 服务器运行时外部程序的规范,按CGI 编写的程序可以扩展服务器功能。CGI 应用程序能与浏览器进行交互,还可通过数据库API 与数据库服务器等外部数据源进行通信,从数据库服务器中获取数据。格式化为HTML文档后,发送给浏览器,也可以将从浏览器获得的数据放到数据库中。几乎所有服务器都支持CGI,可用任何语言编写CGI,包括流行的C、C ++、VB 和Delphi 等。CGI 分为标准CGI 和间接CGI两种。标准CGI 使用命令行参数或环境变量表示服务器的详细请求,服务器与浏览器通信采用标准输入输出方式。间接CGI 又称缓冲CGI,在CGI 程序和CGI 接口之间插入一个缓冲程序,缓冲程序与CGI 接口间用标准输入输出进行通信。

    在物理上是一段程序,运行在服务器上,提供同客户端HTML页面的接口。这样说大概还不好理解。那么我们看一个实际例子:现在的个人主页上大部分都有一个留言本。留言本的工作是这样的:先由用户在客户端输入一些信息,如评论之类的东西。接着用户按一下“发布或提交”(到目前为止工作都在客户端),浏览器把这些信息传送到服务器的CGI目录下特定的CGI程序中,于是CGI程序在服务器上按照预定的方法进行处理。在本例中就是把用户提交的信息存入指定的文件中。然后CGI程序将执行结果返回给服务器(webServer),然后服务器将结果返回给客户端,表示请求的任务已经结束。此时用户在浏览器里将看到“留言结束”的字样。整个过程结束。

    步骤:

    ⑴通过Internet把用户请求送到web服务器
    ⑵web服务器接收用户请求并交给CGI程序处理。
    ⑶CGI程序把处理结果传送给web服务器。
    ⑷web服务器把结果送回到用户。

    所有的HTTP服务器执行 CGI 程序都保存在一个预先配置的目录。这个目录被称为 CGI 目录,并按照惯例,它被命名为 /var/www/cgi-bin 目录

    CGI 文件的扩展名为 .cgi,python 也可以使用 .py 扩展名。

    默认情况下,Linux 服务器配置运行的 cgi-bin 目录中为 /var/www。

    优势:

    • 性能明显更好。
    • Servlet 在 Web 服务器的地址空间内执行。这样它就没有必要再创建一个单独的进程来处理每个客户端请求。
    • Servlet 是独立于平台的,因为它们是用 Java 编写的。
    • 服务器上的 Java 安全管理器执行了一系列限制,以保护服务器计算机上的资源。因此,Servlet 是可信的。
    • Java 类库的全部功能对 Servlet 来说都是可用的。它可以通过 sockets 和 RMI 机制与 applets、数据库或其他软件进行交互。

    以下为个人理解:

    servlet 就是java类,提供了接口服务,通过servlet,类如tomcat等应用服务器或者说servlet容器可以接收来自客户端发送的http请求,并响应给对应的客户端,是一个中间层。

    接收到客户端请求后,通过javabean 处理具体的业务逻辑,并进行响应。

    servlet可以响应不同的mime类型,如果响应html文本,就需要在servlet中编写html,想想会很烦。

    jsp横空出世就是为了解决这个很烦的问题,jsp特殊的地方是,在jsp中也可以写servlet相关的代码。

    理论上还是有一定的耦合但是相比在java类中编写html已经谢天了~

    因为jsp是servlet的扩展,所以jsp也会进行编译为java类文件,特殊的地方就是后缀是jsp而不是.class

    在第一次访问到jsp时,容器会把jsp编译为servlet,所有会有点慢,下一次访问的时候就会发现快多了就是因为这个原因。

    常常说的mvc- servlet+javabean+jsp,也就是servlet负责控制层,javabean 负责模型层,jsp负责视图层。

    理论上把servlet或者jsp 去掉其一也能编写应用~但是现在不会有人那么无聊。

    如果还不明白的可以参考这篇文章,简单易懂

    https://www.cnblogs.com/sanyouge/p/7325656.html

    下面是百科

    https://baike.baidu.com/item/servlet/477555?fr=aladdin

    Python CGI编程

     https://www.runoob.com/python/python-cgi.html

    成灰之前,抓紧时间做点事!!
  • 相关阅读:
    Pythonlistsort()
    [转]Python中文乱码问题深入分析
    使用dom4j时SelectNodes()方法报错
    Xpath语法
    wust2012级软件工程新生经验交流会草稿
    Eclipse中部分快捷键
    Dom4j解析XML学习代码
    html5 cocos2d
    mfc mfc100ud.dll丢失问题
    c# 类操作 窗体
  • 原文地址:https://www.cnblogs.com/jony-it/p/10806803.html
Copyright © 2011-2022 走看看