zoukankan      html  css  js  c++  java
  • .Net转Java自学之路—基础巩固篇二十四(Servlet)

    Servlet:

      Servlet是JavaWeb的一个组件。属于动态资源,作用是处理请求;每个Servlet都是唯一的,他们能处理的请求是不同的。

      在服务器把接收的请求交给Servlet处理时,在Servlet中通常需要:接收请求数据、处理请求、完成响应。

      每个Servlet都必须实现 javax.servlet.servlet接口。

      实现方式:

        1、实现javax.servlet.servlet接口

        2、继承javax.servlet.GenericServlet类

        3、继承javax.servlet.http.HttpServlet类

      Servlet接口中的五个方法:

        init(ServletConfig);生命周期方法。在Servlet对象创建之后马上执行,且只执行一次。一般进行初始化操作。

        service(ServletRequest,ServletResponse);生命周期方法。会被调用多次,每次处理请求都是调用service()。

        destroy();生命周期方法。在Servlet被销毁之前调用,并且指挥被调用一次。

        ServletConfig();获取Servlet的配置信息。

        getServletInfo();获取Servlet信息。

      生命周期:浏览器访问Servlet

        1、给Servlet指定一个Servlet路径(让Servlet与一个路径绑定在一起)

        2、浏览器访问Servlet路径。

      配置Servlet路径:

        在web.xml中进行Servlet配置

    <servlet>
    <servlet-name>xxx</servlet-name>
    <servlet-class>包名.类名</servlet-class>
    <load-on-startup>0</load-on-startup>
    </servlet>
    <servlet-mapping>
    <servlet-name>xxx</servlet-name>
    <url-pattern>/path</url-pattern>
    </servlet-mapping>

        若在Servlet中配置了load-on-startup,内容为非负数整数。表示服务器创建Servlet的顺序。

      特性:

        单例:一个类只有一个对象;当然可能存在多个Servlet类

        线程不安全,所以效率高。

      Servlet类由我们来写,但对象由服务器来创建,并且由服务器来调用响应方法。

    ServletConfig:

      一个ServletConfig对象,对应一段web.xml中的Servlet配置信息。在web.xml配置信息中可以加配置初始化参数信息。

    <init-param>
        <param-name>内容</param-name>
        <param-value>内容</param-value>
    </init-param>
    String getServletName();//获取的是<servlet-name>中的内容
    ServletConfig getServletContext();//获取Servlet的上下文对象
    String getInitParameter(String name);//通过名称获取指定初始化参数的值
    Enumeration getInitParameterNames();//获取所有初始化参数的名称

    GenericServlet:是Servlet的实现类

    HttpServlet:

      HttpServlet extends GenderServlet

      类中存在方法void service(ServletRequest,ServletResponse);生命周期方法。需要强转俩个参数为http协议相关的类型。故、调用本类的service(HttpServletRequest,HttpServletResponse);该方法的参数已经是http协议相关的,使用起来更方便。它会通过request得到当前请求的请求方式;(例:get/post) 会根据请求方式再调用doGet()/doPost() 所以自定义类继承HttpServlet时需要重写doGet()和doPost()。若未重写并且调用了那么会出现405错误(不支持该种请求方式)。

    ServletContext:

      一个项目只有一个ServletContext对象,可以再N多个Servlet种获取该唯一的对象,可以使用它给多个Servlet传递数据。

      作用:

        在整个Web应用的动态资源之间共享数据。

      获取ServletContext:

        在方法void init(ServletConfig config)中:ServletContext sc=config.getServletContext();ServletConfig类的getServletContext()获取ServletContext对象。

        在GenericeServlet或HttpServlet中获取:GenericeServlet类由getServletContext()方法,使用this.getServletContext()获取ServletContext对象。

      ServletContext是JavaWeb四大域对象之一。所有的域对象都具有存取数据的功能。因为域对象内部有一个Map,用来存储数据。

    void setAttribute(String,Object);//用来存储一个对象,或称之为存储一个域属性。
    //在ServletContext中保存一个域属性,域属性名称为String参数,域属性的值为Object参数。或多次调用该方法,并且使用相同的String,那么会覆盖上一次的值。
    Object getAttribute(String);//获取ServletContext中的数据。获取名为String参数的域属性。 void removeAttribute(String);//移除ServletContext中的域属性 Enumeration getAttributeNames();//获取多少有域属性的名称。

      ServletContext获取应用初始化参数:

        在web.xml中配置的应用初始化参数。注:应用初始化参数与Servlet初始化参数不同。

        Servlet获取的初始化参数是局部的参数;也就是说,一个Servlet只能获取自己的数据和参数;即初始化参数职位一个Servlet准备。而配置的共有的初始化参数为所有的Servlet用,则组要使用ServletContext 。

    web.xml:

    <web-app>
        <context-param>
            <param-name>context-param</param-name>
            <param-value>context-value</param-value>
        </context-param>
    </web-app>
    servletContext.getInitParameter(String);//获取初始化参数
    String servletContext.getRealPath(String);//获取服务器端的绝对路径
    InputStream servletContext.getRealPathAsStream(String);//获取资源的路径后,再创建 输入流对象
    Set servletContext.getResourcepaths("/WEB-INF");//获取当前路径下所有资源的路径
  • 相关阅读:
    20.logging模块
    21.django中间件源码阅读
    18.configparser模块
    15.DRF学习以及相关源码阅读
    19.tcp_upd
    13.关于继承封装,以及反射
    16.html转pdf的一个小示例
    14.django返回展示一张图片
    GridView列标题修改
    ~为服务器端根目录符
  • 原文地址:https://www.cnblogs.com/zltao/p/10388257.html
Copyright © 2011-2022 走看看