(1)ServletConfig:用来保存一个Servlet的配置信息的(比如 : name, class, url ... )

这些配置信息没什么大用处,我们还可以在ServletConfig中保存自己在web.xml文件中定义的数据

此时的web.xml文件片段如下:


<servlet> <!-- 自己定义的,要保存在ServletConfig对象中的数据 --> <init-param> <param-name>jdbc.driver</param-name> <param-value>oracle.jdbc.driver.OracleDriver</param-value> </init-param> <init-param> <param-name>jdbc.user</param-name> <param-value>yinkui</param-value> </init-param> ... <servlet-name>query</servlet-name> <servlet-class>com.kettas.servlet.Query</servlet-class> </servlet>

在Servlet中取得这些数据:


// getServletConfig方法继承自父类GenericServlet ServletConfig sc = this.getServletConfig(); // 显然,getInitParameter方法返回的只能是字符串类型数据 String driver = sc.getInitParameter("jdbc.driver"); String user = sc.getInitParameter("jdbc.user");

注意:

1 ServletConfig对象只能从web.xml文件中获取自定义数据(字符串数据),不存在setAttribute方法去存入自定义数据。

2 在Servlet中,若要覆盖父类的init(ServletConfig config)方法,必须这么做:


public void init( ServletConfig config ){ // 覆盖之前调用父类的这个方法, 否则ServletConfig对象会丢失 // 此时this.getServletConfig()返回的是null, 那样我们就不能使用它了 super.init( config ) ; ... }

(2)ServletContext:用来保存数据的全局唯一对象,一个应用中只有一个ServletContext对象

1:通过web.xml文件,在ServletContext对象中存入数据

此时的web.xml文件片段如下所示:


<!-- 在此处写入我们要存入ServletContext对象中的数据 --> <context-param> <param-name>jdbc.driver</param-name> <param-value>oracle.jdbc.driver.OracleDriver</param-value> </context-param> <context-param> <param-name>jdbc.url</param-name> <param-value>jdbc:oracle:thin:@192.168.0.201:1521:kettas</param-value> </context-param> ... <servlet> <servlet-name>...</servlet-name> <servlet-class>...</servlet-class> </servlet>

取得其中的数据:String driver = servletContext.getInitParameter("jdbc.driver");

2:通过setAttribute方法,在ServletContext对象中存入数据

servletContext.setAttribute("name", data); // 两个参数分别为命名属性以及对应的数据

// 取得ServletContext对象中的数据, 参数为命名属性

// 返回的是Object对象, 故要强转

servletContext.getAttribute("name");

3:取得ServletContext对象的三种方法(this指代当前Servlet)


(1) ServletContext sc = this.getServletContext(); (2) ServletContext sc = this.getServletConfig().getServletContext(); (3) ServletContext sc = request.getSession(true).getServletContext();

ServletContext对象的一个重要方法:


InputStream is = sc.getResourceAsStream( "fileName" ) ;

fileName:使用的是虚拟目录, 不依赖于实际路径/books/ajax.pdf

最左边一个"/":web 应用的根目录

// 获得实际路径 String path = ctx.getRealPath( "/books/ajax.pdf" )

ServletConfig对象和ServletContext对象的更多相关文章

  1. Java Servlet(三):Servlet中ServletConfig对象和ServletContext对象

    本文将记录ServletConfig/ServletContext中提供了哪些方法,及方法的用法. ServletConfig是一个抽象接口,它是由Servlet容器使用,在一个servlet对象初始 ...

  2. 小谈-—ServletConfig对象和servletContext对象

    一.servletContext概述 servletContext对象是Servlet三大域对象之一,每个Web应用程序都拥有一个ServletContext对象,该对象是Web应用程序的全局对象或者 ...

  3. ServletConfig对象和ServletContext对象有什么区别?

    一个Servlet对应有一个ServletConfig对象,可以用来读取初始化参数. 一个webapp对应一个ServletContext对象. ServletContext对象获取初始化定义的参数. ...

  4. Servlet接口的实现类,路径配置映射,ServletConfig对象,ServletContext对象及web工程中文件的读取

    一,Servlet接口实现类:sun公司为Servlet接口定义了两个默认的实现类,分别为:GenericServlet和HttpServlet. HttpServlet:指能够处理HTTP请求的se ...

  5. JavaWeb-----ServletConfig对象和servletContext对象

    1.ServletConfig ServletConfig:代表当前Servlet在web.xml中的配置信息 String getServletName()  -- 获取当前Servlet在web. ...

  6. 重温Servlet学习笔记--servletContext对象

    一个项目中只有一个ServletContext对象,我们可以在多个servlet中获取这个唯一的对象,使用它可以给多个servlet传递数据,我们通常成servletContext为上下文对象.这个对 ...

  7. Java第三阶段学习(十一、Servlet基础、servlet中的方法、servlet的配置、ServletContext对象)

    一.Servlet简介  1.什么是servlet: sun公司提供的一套规范(接口),用来处理客户端请求.响应给浏览器的动态资源.但servlet的实质就是java代码,通过java的API动态的向 ...

  8. [Servlet]研究ServletContext对象

    作者信息 作者姓名:金云龙 个人站点:http://www.longestory.com 个人公众帐号:搜索"longestory"或"龙哥有话说" Servl ...

  9. JAVA基础之ServletContext对象

    个人理解:  ServletContext类似字节码文件对象,在web创建的时候就自动生成了,并且是唯一的,跟随着项目和服务器共存亡了.通过这个对象,我们可以向里面存数据(键值对),也可以通过别的Se ...

随机推荐

  1. 渐变色之location概念.

    CHENYILONG Blog 渐变色之location概念.全屏幕13-12-22 上午10:18 © chenyilong. Powered by Postach.io Blog

  2. Informatica学习:2、配置存储库服务和集成服务

    继续上一篇的1.安装介质的获取与安装,本文介绍服务端的存储库服务和集成服务的配置. 安装好Informatica的客户端和服务端后,需要登陆Administration Console,配置存储库服务 ...

  3. Ubuntu 14.04 Nvidia显卡驱动安装及设置

    更换主板修复grub 引导后,无法从Nvidia进入系统(光标闪烁), 可能是显卡驱动出了问题. 1. 进入BIOS设置, 从集成显卡进入系统 将显示器连接到集显的VGI口, 并在BIOS中设置用集显 ...

  4. CentOS6.6 编译Redis报错:"Newer version of jemalloc required"

    一.前言 不同系统同一个问题,可能解决方法不一样,也可能会遇到不同的问题,所以具体情况具体分析,我的系统是Centos6.6, 查看系统命令  cat /etc/issue 二.安装redis后编译报 ...

  5. 【codeforces】【比赛题解】#862 CF Round #435 (Div.2)

    这次比赛打得很舒服,莫名得了个Rank41,涨了219的Rating,就比较优秀.不过还是没有闫神厉害啊.题目链接::P. [A]MEX 题意: Evil博士把Mahmoud和Ehab绑架到了邪恶之地 ...

  6. 【Python项目】爬取新浪微博签到页

    基于微博签到页的微博爬虫 项目链接:https://github.com/RealIvyWong/WeiboCrawler/tree/master/WeiboLocationCrawler 1 实现功 ...

  7. 转 Java的 BigDecimal类型比较大小

    这个类是java里精确计算的类 1.比较对象是否相等,一般的对象用equals,但是BigDecimal比较特殊,举个例子 BigDecimal a = new BigDecimal.valueOf( ...

  8. JS判断是否是PC端访问网站

    function IsPC() { var userAgentInfo = navigator.userAgent; var Agents = ["Android", " ...

  9. 24 The Go image package go图片包:图片包的基本原理

    The Go image package  go图片包:图片包的基本原理 21 September 2011 Introduction The image and image/color packag ...

  10. 字符串匹配算法之 kmp算法 (python版)

    字符串匹配算法之 kmp算法 (python版) 1.什么是KMP算法 KMP是三位大牛:D.E.Knuth.J.H.MorriT和V.R.Pratt同时发现的.其中第一位就是<计算机程序设计艺 ...