• Servlet基础


    Servlet基础

    Servlet是运行在Web服务器端的Java应用程序,它使用Java语言编写,具有Java语言的优点。与Java程序的区别是,Servlet对象主要封装了对HTTP请求的处理,并且它的运行需要Servlet容器的支持,在Java Web应用方面,Servlet的应用占有十分重要的地位,它在Web请求的处理功能方面也非常的强大。

    1.Servlet结构体系

    Servlet实际上是按Servlet规范编写的Java类,但它可以处理Web应用中的相关请求,它由Sun定义,其具体细节由Servlet容器进行实现,如Tomcat、JBoss等。

    Servlet对象、ServletConfig对象与Serializable对象是接口对象,其中Serializable是java.io包中的序列化接口,Servlet对象、ServletConfig对象是javax.servlet包中的对象,这两个对象定义了Servlet的基本方法以及封装了Servlet的相关配置信息。GenericServlet对象是一个抽象类,它分别实现了上述的3个接口,该对象为Servlet接口及ServletConfig接口提供了部分实现,但它并没有对HTTP请求处理进行实现,这一操作有它的子类HttpServlet进行实现。这个对象为HTTP请求中的POST、GET等类型提供了具体的操作方法,,所以常通情况下,我们所编写的Servlet对象都继承于HttpServlet,在开发中,所使用的具体的Servlet对象就是HttpServlet,原因是HttpServlet是Servlet的实现类,并提供了HTTP请求的处理方法。


    3.Servlet技术的特点

    Servlet是由Java语言编写的,它不仅继承了java语言中的优点,而且还对Web的相关应用进行了封装,同时Servlet容器还提供了对应用的相关扩展,无论从功能、性能、安全等方面都十分优秀,其技术特点的表现在以下几方面:
    (1)功能强大
    Servlet采用Java语言编写,它可以调用Java API中的对象及方法。此外,Servlet对象对Web应用进行了封装,提供了Servlet对Web应用的编程接口,还可以对HTTP请求进行相应的处理,如提交数据、会话跟踪、读取和设置HTTP头信息。由于Servlet既拥有Java提供的API,而且还可以调用Servlet封装的Servlet API编程接口,因此,它在业务功能方面十分的强大。
    (2)安全性高
    Servlet使用了Java的安全框架,同时Servlet容器还可以为Servlet提供额外的功能,它的安全性是非常高的。
    (3)可移植性
    Java语言是跨平台的,所谓跨平台是不依赖于操作系统,它可以运行到多个系统平台中,如目前常用的操作系统Windows、Linux和UNIX等,由于Servlet使用Java语言编写,所以Servlet继承了Java语言的优点,程序一次编码,多平台运行,拥有超强的可移植性。

    1.Servlet与JSP的区别

    Servlet是使用Java Servlet接口(API)运行在Web应用服务器上的Java程序,其功分能十分强大,它不但可以处理HTTP请求中的业务逻辑,而且还可以输出HTML代码来显示指定的页面。而JSP是一种在Servlet规范上的动态网页技术,在JSP页面中,同样可以编写业务逻辑处理HTTP请求,也可以通过HTML代码来编辑页面,在实现功能上,Servlet与JSP貌似相同,实质上存在一定的区别,主要表现在以下几方面。

    (1)角色不同

    JSP页面可以存在HTML代码与Java代码并存的情况,而Servlet需要承担客户请求与业务处理的中间角色,只有调用固定的方法才能动态的输出静态的HTML,所以,JSP更具有显示层的角色。

    (2)编程方法不同

    Servlet和JSP编程方法上存在很大的区别,使用Servlet开发Web应用程序需要遵循Java的标准,而JSP需要遵循一定脚本语言规范。在Servlet代码中,需要调用Servlet提供的相关API接口方法,才可以对HTTP请求及业务处理,对于业务逻辑方面的处理功能更加强大。然而在JSP页面中,通过HTML代码与JSP内置对象实现对HTTP请求及页面进行处理,其显示功能更加强大。

    (3)Servlet需要编译后运行

    Servlet需要Java编译器编译后才可以运行,如果Servlet在编写完成或修改后没有被重新编译,则不能运行在Web容器中。而JSP则与之相反,JSP与JSP Container对其进行管理,它的编辑过程也由JSP Container对JSP自动编辑,所以,无论JSP文件被创建还是修改,都不需要对其编译即可执行。

    (4)速度不同

    由于JSP页面由JSP Container对其进行管理,在每次执行不同内容的动态JSP页面时,JSP Container都要对其进行自动编译,所以,它的效率低于Servlet的执行效率。而Servlet在编译完成之后,则不需要再次编译,可以直接获取及输出动态内容。在JSP页面中的内容没有变化的情况下,JSP页面的编译完成之后,JSP Container不会再次对JSP进行编译。


    4.Servlet代码结构

    在Java中,通常所说的Servlet是指HttpServlet对象,在声明一个对象为Servlet时,需要继承HttpServlet类。HttpServlet类是Servlet接口的一个实现类,继承该类后,可以重写HttpServlet类中的方法对HTTP请求进行处理。
    代码结构:
     1  public void init(){//初始化方法
     2 
     3     }
     4     //处理HTT POST请求
     5     protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
     6 
     7     }
     8 //处理HTTP Get请求
     9     protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    10 
    11     }
    12 
    13     //处理HTTP Put请求
    14     protected void doPut(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    15 
    16     }
    17 
    18     //处理HTTP Delete请求
    19     protected void doDelete(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    20 
    21     }
    22     //销毁方法
    23     public void destroy(){
    24 
    25     }
    26 }

    注:在一个Servlet对象中,最常用的方法是doGet()和doPost()方法,这两个方法分别用于处理HTTP的GET和POST请求。

  • 相关阅读:
    【C++】Debugging Segmentation Faults
    Ubuntu硬盘挂载
    基于C++11以及17实现线程池【如何设置线程池大小】
    Ubuntu快速删除大量文件的思路
    基于systemback的Ubuntu系统镜像备份和安装方案
    【Vue项目实践】创建一个 electron+vue3 的项目
    【Vue项目实践】套用github 上的项目(vue3 + Element Plus)运行 可编辑表格
    在vscode中使用博客园插件
    【rtsp】视频流
    【Vue项目实践】采用 iview 快速开始
  • 原文地址:https://www.cnblogs.com/znjy/p/14166973.html
Copyright © 2020-2023  润新知