zoukankan      html  css  js  c++  java
  • Servlet

    Servlet简介

      Servlet 是运行在 Web 服务器或应用服务器上的程序,它是作为来自 Web 浏览器或其他 HTTP 客户端的请求和 HTTP 服务器上的数据库或应用程序之间的中间层。  

      使用 Servlet,您可以收集来自网页表单的用户输入,呈现来自数据库或者其他源的记录,还可以动态

      Servlet的技术功能

        Servlet通过创建一个框架来扩展服务器的能力,以提供在Web上进行请求和响应的服务。当客户机发送请求至服务器时,服务器可以将请求信息发送给Servlet,并让Servlet建立起服务器返回给客户机的响应。

      如图所示:

        

    Servlet快速入门

      Servlet技术的核心是Servlet,它是所有Servlet类必须直接或者间接实现的一个接口。在编写实现Servlet的Servlet类时,直接实现它。在扩展实现这个这个接口的类时,间接实现它。

      Servlet接口实现类

        1、Servlet接口SUN公司定义了默认实现类:HttpServlet。

        2、HttpServlet指能够处理HTTP请求的servlet,它在原有Servlet接口上添加了一些与HTTP协议处理方法,它比Servlet接口的功能更为强大。因此开发人员在编写

    Servlet时,通常应继承这个类,而避免直接去实现Servlet接口。

        3、HttpServlet在实现Servlet接口时,覆写了service方法,该方法体内的代码会自动判断用户的请求方式,如为GET请求,则调用HttpServlet的doGet方法,如为Post

    请求,则调用doPost方法。因此,开发人员在编写Servlet时,通常只需要覆写doGet或doPost方法,而不要去覆写service方法。

      Servlet代码结构:

     1 public class Servlet02 extends HttpServlet {
     2 
     3     public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
     4         response.getWriter().write("hello dandan...");
     5     }
     6 
     7     public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
     8         doGet(request, response);
     9     }
    10 }

      一般过程如图所示:

         

      用户请求致使Servlet容器调用Servlet的Service()方法,并传入一个ServletRequest对象和一个ServletResponse对象。ServletRequest对象和ServletResponse对象都是

    由Servlet容器(例如TomCat)封装好的,并不需要程序员去实现,程序员可以直接使用这两个对象。

      ServletRequest中封装了当前的Http请求,因此,开发人员不必解析和操作原始的Http数据。ServletResponse表示当前用户的Http响应,程序员只需直接操作

    ServletResponse对象就能把响应轻松的发回给用户。

      对于每一个应用程序,Servlet容器还会创建一个ServletContext对象。这个对象中封装了上下文(应用程序)的环境详情。每个应用程序只有一个ServletContext。每个

    Servlet对象也都有一个封装Servlet配置的ServletConfig对象。

    Servlet生命周期

      servlet接口中的方法:

        1.void init(ServletConfig).当Servlet对象被服务器创建时调用,仅调用一次。

        2.void service(ServletRequest, ServletResponse).可被服务器调用多次。

        3.void destroy().服务器关闭连接之前调用,仅一次。

       servlet基本配置:

        基本由servlet类的配置和servlet虚拟路径配置组成。

          

         两个配置中的<servlet-name>的值必须相同,以通过虚拟路径找到类。

      ServletConfig接口:

        当Servlet容器初始化Servlet时,Servlet容器会给Servlet的init( )方式传入一个ServletConfig对象

        其中几个方法如下:

        

    ServletContext对象

      ServletContext: 代表的是整个应用。一个应用只有一个ServletContext对象。一个项目只有一个ServletContext对象,服务器会为每个应用创建一个ServletContext对象,我

    们可以在N多个Servlet中来获取这个唯一的对象,使用它可以给多个Servlet传递数据,与Tomcat同生同死。

      生命周期:

        服务器启动时完成ServletContext对象的创建;

        服务器关闭时完成ServletContext对象的销毁。

      ServletContext对象的作用是在整个Web应用的动态资源直接共享数据。例如在AServlet中向ServletContext对象中保存一个值,然后在BServlet中就可以获取这个值,这就

    是数据共享。ServletContext是一个域对象。

      获取servletcontext对象:getServletContext()

        1.先获取servlet配置对象,再获取servletcontext对象。

          

         2.直接获取servletcontext对象

          

       获取文件的绝对路径:getRealPath()

        String patha=context.getRealPath("WEB-INF/a.txt");

        String pathb=context.getRealPath("b.txt");

        String pathc=context.getRealPath("WEB-INF/classes/c.txt");
        

       域对象的功能

         所有域对象都是有存取数据的功能,因为域对象内部有一个Map,用来存储数据,下面是ServletContext对象用来操作数据的方法:

          setAtrribute(String name,Object obj);   存储一个对象,参数分别为域的属性名和属性值,如果多次调用该方法,并且使用相同的name,那么就会覆盖上一次的值

            

          getAttribute(String name);  获取ServletContext中的数据,当前在获取之前需要先存储。

            

          removeAttribute(String name); 移除ServletContext中的域属性,如果参数name不存在,那么该方法什么都不做。

  • 相关阅读:
    进程相关知识点
    vue上传
    Storageclass 外挂NFS配置与应用
    centos强制关机后,网卡无法启动
    前端工程化2-webpack使用与学习
    android应用获取应用签名
    js获取tif格式图片的dpi
    查询生成二级树型结构最高效的方式
    03解决隔离的方案
    02SingleSpa实战
  • 原文地址:https://www.cnblogs.com/zhai113/p/11823224.html
Copyright © 2011-2022 走看看