package com.servlet;
import java.io.IOException; import javax.servlet.Servlet;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse; public class HelloServlet implements Servlet{ public void destroy() {
System.out.println("destroy");
} public ServletConfig getServletConfig() {
System.out.println("getServletConfig");
return null;
} public String getServletInfo() {
System.out.println("getServletInfo");
return null;
} public void init(ServletConfig arg0) throws ServletException {
System.out.println("init");
} public void service(ServletRequest arg0, ServletResponse arg1)
throws ServletException, IOException {
System.out.println("service");
} public HelloServlet() {
System.out.println("构造器先调用");
} }

先调用构造器,然后调用init方法,初始化。然后调用service方法。每请求一次调用一次。然后关闭服务器的时候调用destroy

ServletConfig: 封装了 Serlvet 的配置信息, 并且可以获取 ServletContext 对象

1). 配置 Serlvet 的初始化参数

<servlet>
        <servlet-name>helloServlet</servlet-name>
        <servlet-class>com.atguigu.javaweb.HelloServlet</servlet-class>
        
        <!-- 配置 Serlvet 的初始化参数。 且节点必须在 load-on-startup 节点的前面 -->
        <init-param>
            <!-- 参数名 -->
            <param-name>user</param-name>
            <!-- 参数值 -->
            <param-value>root</param-value>
        </init-param>
        
        <init-param>
            <param-name>ha</param-name>
            <param-value>123456</param-value>
        </init-param>
        
        <load-on-startup>-1</load-on-startup>
        
    </servlet>

2). 获取初始化参数:

> getInitParameter(String name): 获取指定参数名的初始化参数
    > getInitParameterNames(): 获取参数名组成的 Enumeration 对象.
    
    String user = servletConfig.getInitParameter("user"); //这是参数名  
    System.out.println("user: " + user);

  输出参数值

Enumeration<String> names = servletConfig.getInitParameterNames();
    while(names.hasMoreElements()){
        String name = names.nextElement();

System.out.println("name的值---》"+name);
        String value = servletConfig.getInitParameter(name);
        System.out.println("^^" + value + ": " + value);
    }

ServletContext:

    1). 可以由  SerlvetConfig 获取:

    ServletContext servletContext = servletConfig.getServletContext();

    2). 该对象代表当前 WEB 应用: 可以认为 SerlvetContext 是当前 WEB 应用的一个大管家. 可以从中获取到当前 WEB 应用的各个方面的信息.

      ①. 获取当前 WEB 应用的初始化参数

      设置初始化参数: 可以为所有的 Servlet 所获取, 而 Servlet 的初始化参数只用那个 Serlvet 可以获取.

      <!-- 配置当前 WEB 应用的初始化参数 -->
      <context-param>
          <param-name>driver</param-name>
          <param-value>com.mysql.jdbc.Driver</param-value>
      </context-param>

      方法:

      getInitParameter
      getInitParameterNames

      代码:

     

 ServletContext servletContext = servletConfig.getServletContext();

      String driver = servletContext.getInitParameter("driver");
System.out.println("driver:" + driver); Enumeration<String> names2 = servletContext.getInitParameterNames();
while(names2.hasMoreElements()){
String name = names2.nextElement();
System.out.println("-->" + name);
}

②. 获取当前 WEB 应用的某一个文件在服务器上的绝对路径, 而不是部署前的路径

getRealPath(String path);

String realPath = servletContext.getRealPath("/note.txt");
System.out.println(realPath);

③. 获取当前 WEB 应用的名称:

getContextPath()

String contextPath = servletContext.getContextPath();
System.out.println(contextPath);

④. 获取当前 WEB 应用的某一个文件对应的输入流.

getResourceAsStream(String path): path 的 / 为当前 WEB 应用的根目录.

InputStream is2 = servletContext.getResourceAsStream("/WEB-INF/classes/jdbc.properties");

Servlet 第一天的更多相关文章

  1. Servlet第一篇【介绍Servlet、HTTP协议、WEB目录结构、编写入门Servlet程序、Servlet生命周期】

    什么是Serlvet? Servlet其实就是一个遵循Servlet开发的java类.Serlvet是由服务器调用的,运行在服务器端. 为什么要用到Serlvet? 我们编写java程序想要在网上实现 ...

  2. Servlet第一篇(Tomcat)

    Tomcat 什么是Tomcat Tomcat简单的说就是一个运行JAVA的网络服务器,底层是Socket的一个程序,它也是JSP和Serlvet的一个容器. 为什么我们需要用到Tomcat 提供能够 ...

  3. javaweb回顾第一篇servlet的学习和理解

    前言:关于servlet相信学过java的都不会陌生,我最近又把这些基础知识整理一遍,便于自已能更好的理解ssm或者ssh,下面开始 1:Servlet接口 servlet有5个方法下面分别简单的介绍 ...

  4. servlet实现文件下载

     之前没怎么用过这个,这次项目中用到了,于是总结一下: 应该说主要注意三方面: 1.写一个servlet 2.在web.xml中配置这个servlet 3.页面上调用这个servlet   第一: 写 ...

  5. servlet三种实现方式之一实现servlet接口

    servlet有三种实现方式: 1.实现servlet接口 2.继承GenericServlet 3.通过继承HttpServlet开发servlet 第一种示例代码如下(已去掉包名): import ...

  6. javaWeb学习总结(3)- Servlet基础

    Servlet的应用 Servlet是一种独立于平台和协议的服务器端的Java应用程序,可以生成动态的web页面.它担当Web浏览器或其他http客户程序发出请求. 与http服务器上的数据库或应用程 ...

  7. javaWEB之Servlet

    Servlet 1. 什么是Servlet  * Servlet是JavaWeb三大组件之一(Servlet.Filter.Listener)  * Servlet是用来处理客户端请求的动态资源  * ...

  8. Javaweb学习笔记——(九)——————Servlet的进入,及ServletConfig、GenericServlet、HttpServlet、ServletContext、获取类路径资源

    Servlet1.什么是Servlet? *Servlet是Javaweb三大组件之一(Servlet,Filter,Listener) *Servlet是用来处理客户端请求的动态资源 *Servle ...

  9. 创建servlet程序知识点详解---servlet-day01

    方法调用完后,其中的所有局部变量都会消失 ###网络架构 -CS:Client Server  客户端服务器 特点:每种平台都需要开发相对应的app, 开发成本高  功能升级需要下载最新的客户端,用户 ...

随机推荐

  1. ruby类对象和对象

    class Box def initialize(w,h) @width,@height=w,h end def getArea puts "class of self #{self.cla ...

  2. groub by 与 over partition by 的区别

    这个逻辑,写的很对.明白了这个意思. over partition by 前面一定要用汇总函数.groub by 就可以不用.本质都是汇总 SELECT a.* ,SUM(a.audit_status ...

  3. 第 4 章 前端基础之jquery

    一.jQuery是什么? 1. jQuery由美国人John Resig创建,至今已吸引了来自世界各地的众多 javascript高手加入其team. 2. jQuery是继prototype之后又一 ...

  4. oracle两表中的两列进行模糊匹配的方法

    SELECT T2.列名,T1.列名  FROM 主表 T1, 匹配表 T2    WHERE  T1.匹配列  LIKE CONCAT('%',concat(T2.匹配列,'%')); 注意:  a ...

  5. Tensorflow--Keras官方原文

    Keras 是一个用于构建和训练深度学习模型的高阶 API(应用程序接口).它可用于快速设计原型.高级研究和生产,具有以下三个主要优势: 方便用户使用 Keras 具有针对常见用例做出优化的简单而一致 ...

  6. P5468 [NOI2019]回家路线

    传送门 看题目一眼斜率优化,然后写半天调不出来 结果错误的 $dfs$ 有 $95$ 分?暴力 $SPFA$ 就 $AC$ 了? 讲讲正解: 显然是斜率优化的式子: 先不考虑 $q_{s_k}$ 的贡 ...

  7. P4390 [BOI2007]Mokia 摩基亚

    传送门 对于一个询问 $(xa,ya),(xb,yb)$,拆成 $4$ 个询问并容斥一下 具体就是把询问变成求小于等于 $xb,yb$ 的点数,减去小于等于 $xa-1,yb$ 和小于等于 $xb,y ...

  8. 使用Anaconda3安装tensorflow,opencv,使其可以在spyder中运行

    使用Anaconda5.0.0 1.首选无论你是在cmd键入python,还是在Anaconda Prompt键入python,显示的都是Python3.6.然而在Spyder(tensorflow) ...

  9. JavaScript——面向对象编程

    什么是面向对象? 面向对象编程(Object Oriented Programming,OOP编程)是一种计算机编程架构,它将真实世界各种复杂的关系,抽象为一个个对象,然后由对象之间的分工与合作,完成 ...

  10. centos7安装rabbitmq简单方式

    1,安装rabbitmq前要准备的基础环境 yum install build-essential openssl openssl-devel unixODBC unixODBC-devel make ...