• Servlet学习


    ServletContext
    ServletContext是Servlet容器上下文环境对象,定义一组方法,servlet 使用这些方法与其 servlet 容器进行通信,例如,获取文件的 MIME 类型、分发请求或写入日志文件。
     
    每个web应用都有且仅有一个ServletContext对象,这个对象在所有的Servlet都可以使用。
     
    ServletContext 对象包含在ServletConfig 对象中,ServletConfig 对象在初始化Servlet 时由Web 服务器提供给Servlet。
     
    ServletContext在jsp中用application内置对象来表示,而在Servlet中通过调用方法
    ServletContext sc = getServletContext();
    来获取。
     
    因为一个web应用就一个ServletContext 对象,因此可以使用ServletContext 来做一些全局性的属性设置等。比如网站访问计数器等等。下面给出一个简单的页面计数器:
      <body> 
        <% 
          Integer x = (Integer) application.getAttribute("num"); 
          if (x == null) { 
            application.setAttribute("num", 1); 
          } else { 
            application.setAttribute("num", ++x); 
          } 
          out.println("您是第"+x+"位访客!"); 
        %> 
         
      </body>
     
     
    ServletContext与ServletConfig的区别:
     
    获取资源绝对路径:
    getServletContext().getRealPath("/");
    上面的代码可以返回应用程序部署绝对路径。
     
     
     
     
    Servlet
     
    Servlet是一种服务器端的Java应用程序,具有独立于平台和协议的特性,可以生成动态的Web页面。 它担当客户请求(Web浏览器或其他HTTP客户程序)与服务器响应(HTTP服务器上的数据库或应用程序)的中间层。 Servlet是位于Web 服务器内部的服务器端的Java应用程序,与传统的从命令行启动的Java应用程序不同,Servlet由Web服务器进行加载,该Web服务器必须包含支持Servlet的Java虚拟机。
     
    有关Servlet介绍可以参看:
     
     
    1、Servlet配置
     
     
     
     
     
    Servlet
    2、Servlet的工作过程概念图
     
     
    3、不同的任务所发生的位置
     
     
     
    4、J2EE应用服务器的概念图
     
     
    5、Web服务器工作原理图
     
     
     
    6、Java Web应用部署环境
     
     
     
    7、MVC思想对比
     
     
    8、HTTP请求响应详细过程
     
     
     
    9、Servlet生命周期
     
     
     
     
     
     
     
     
     
     
     
     
    10、ServletConfig与ServletContext的区别
     
     
    11、HTTP请求分类详解
     
     
     
    12、GET与POST请求的区别
     
     
     
     
     
     
     
     
     
     
    13、Servlet请求的高级用法
     
     
     
     
     
     
     
    下载一个jar文件
     
     
     
     
     
     
     
     
     
     
    Servlet的初始化参数
    注意:JSP中无法得到Servlet的初始化参数。
     
     
     
     
     
    1、Servlet的init()和构造方法仅仅调用一次,仅仅会在第一次请求时候被调用一次,或者当Servlet配置为启动时候最先加载则会在启动时候调用,配置方法是:<load-on-startup>0</load-on-startup>
     
    2、由于Servlet只会调用构造方法一次,因此Servlet是单例的,在Servlet容器中,一个Servlet类只有一个Servlet实例存在。
     
    3、Servlet处理请求是方式是多线程的,也就是说,一个请求会开启一个独立线程来处理。因此,在Servlet的处理方法应该注意线程安全。
     
    4、Servlet可以配置参数,在Servlet类里可以读取参数。
     
        <init-param> 
         <param-name>n1</param-name> 
         <param-value>v1</param-value> 
        </init-param> 
        <init-param> 
         <param-name>n2</param-name> 
         <param-value>v2</param-value> 
        </init-param>
     
        ServletConfig cfg = getServletConfig(); 
        String p1 = cfg.getInitParameter("n1"); 
        String p2 = cfg.getInitParameter("n2");
     
    5、Servlet有输出流,输出流分两种,一种是字节流,一种是字符流,也可以获取输入流,比如上传文件时候就有输入流,输入流的只能是字节流。
        ServletOutputStream os = response.getOutputStream(); 
        PrintWriter out = response.getWriter(); 
         
        ServletInputStream is = request.getInputStream();
     
    6、一个Servlet的配置对象ServletConfig对象只有一个,配置的参数也只读一次,在调用init()时候读取Servlet配置,并构建ServletConfig对象。
     
    7、ServletConfig对象只能在Servlet中访问,不能被JSP访问。ServletContext对象可以被JSP访问。
     
    8、一个Servlet有且只有一个ServletConfig对象,一个Web应用有且仅有一个ServletContext对象,ServletContext对象在JSP中通过application内置对象来访问。
     
    9、ServletContext也可也配置自己参数,在web.xml中配置,在任何JSP或Servlet中均能获取到。
    <context-param> 
        <param-name>cn1</param-name> 
        <param-value>cv1</param-value> 
    </context-param> 
    <context-param> 
        <param-name>cn2</param-name> 
        <param-value>cv2</param-value> 
    </context-param>
     
        ServletContext ctx= getServletContext(); 
        String c1 = ctx.getInitParameter("cn1"); 
        String c2 = ctx.getInitParameter("cn2");
     
  • 相关阅读:
    k8s环境搭建--基于minik8s方法
    k8s环境搭建--基于kubeadm方法
    Ubuntu 搭建简单的git server
    国密算法--Openssl 实现国密算法(加密和解密)
    国密算法--Openssl 实现国密算法(基础介绍和产生秘钥对)
    Hyperledger Fabric 1.1 -- Policy 构成
    Pycharm 2018.2.1-2018.1
    6-5 链式表操作集
    6-4 链式表的按序号查找
    6-3 求链式表的表长
  • 原文地址:https://www.cnblogs.com/Vae1990Silence/p/4626141.html
Copyright © 2020-2023  润新知