为每一Servlet设置初始化参数

可以为每一个Servlet在对应的web.xml中的Servlet节点下编写初始化参数,格式如下:

<init-param>

<param-name>userName</param-name>

<param-value>admin</param-value>

</init-param>

然后在servlet中用如下代码获取相应的参数:

ServletConfig config = this.getServletConfig();

this.username = config.getInitParameter("userName");

为所有的Servlet设置公用的初始化参数

可以为所有的Servlet设置公用初始化参数,该参数和上面的参数有所不同,上面的要放在对应的Servlet节点下,而公用参数不用也不能放在Servlet节点下。

<context-param>

<param-name>userName</param-name>

<param-value>admin</param-value>

</context-param>

同样在Servlet中可以通过如下代码获取我们设置的全局配置信息对象:

ServletContext context = this.getServletContext();

String userNameInGlobal = context.getInitParameter("userName");

在代码中设置公用属性

可以在代码中为ServletContext设置属性,然后就可以在任意地方获取了。该属性是全局属性,一旦设置成功后,在整个容器中均可以使用。

ServletContext context = this.getServletContext();

context.setAttribute("maxNumber", 999);

int maxNumebrInContext = (int)context.getAttribute("maxNumber");

读取外部文件中的配置信息

通过ServletContext对象读取外部文件中的配置信息主要有三种形式:

  • getResource

    • 返回一个URL对象,然后调用openStream()方法获取InputStream
    • getResourceAsStream
      • 直接返回InputStream对象
      • getRealPath
        • 返回资源文件的绝对路径,然后通过绝对路径用FileInputStream类读取数据

在classes目录下有一个Person.properties文件,内容如下:

getResource获取外部文件

@Override

public void init() throws ServletException

{

ServletContext ctx = this.getServletContext();

String resourcePath = "/WEB-INF/classes/Person.properties";

try

{

URL url = ctx.getResource(resourcePath);

InputStream is = url.openStream();

String name = getPropertiesByKey("name", is);

System.out.println(name);

} catch (MalformedURLException e)

{

// TODO Auto-generated catch block

e.printStackTrace();

} catch (IOException e)

{

// TODO Auto-generated catch block

e.printStackTrace();

}

}

//从Stream中读取properties信息

public static String getPropertiesByKey(String key, InputStream is)

{

Properties properties = new Properties();

try

{

properties.load(is);

} catch (IOException e)

{

// TODO Auto-generated catch block

e.printStackTrace();

}

String value = (String) properties.get(key);

return value;

}

getResourceAsStream获取外部文件

public void init() throws ServletException

{

ServletContext ctx = this.getServletContext();

String resourcePath = "/WEB-INF/classes/Person.properties";

InputStream is = ctx.getResourceAsStream(resourcePath);

String age = getPropertiesByKey("age", is);

System.out.println("年龄是: "+ age);

}

getRealPath获取外部文件

public void init() throws ServletException

{

ServletContext ctx = this.getServletContext();

String resourcePath = "/WEB-INF/classes/Person.properties";

String resourceRealPath = ctx.getRealPath(resourcePath);

try

{

InputStream is = new FileInputStream(new File(resourceRealPath));

String address = getPropertiesByKey("address", is);

System.out.println("地址是:" + address);

} catch (FileNotFoundException e)

{

// TODO Auto-generated catch block

e.printStackTrace();

}

}

Servlet中读取参数的几种方式的更多相关文章

  1. SpringBoot中读取配置文件的几种方式

    1.读取application文件 在application.yml或者properties文件中添加: info: name: xiaoming age: 13 sex: 1 读取方式如下: imp ...

  2. tornado中传递参数的几种方式

    方法一 :tornado路由可以使用正则表达式中的子表达式传递url参数.比如:(r"/member//(\w*)/([01]*)", MemberHandler)匹配以后,tor ...

  3. spring boot中读取配置文件的两种方式

    application.properties test.name=测试 test.url=www.test.com 1.@Value注解 在controller里可以这样直接调用 @Value(&qu ...

  4. Spring MVC中forward请求转发2种方式(带参数)

    Spring MVC中forward请求转发2种方式(带参数) http://www.51gjie.com/javaweb/956.html  

  5. php获取post参数的几种方式 RPC 规定接收取值方式 $GLOBALS['HTTP_RAW_POST_DATA'];

    http://www.cnblogs.com/zhepama/p/4022606.html PHP默认识别的数据类型是application/x-www.form-urlencoded标准的数据类型. ...

  6. JavaWeb应用中初始化Log4j的两种方式

    本文主要介绍了普通JavaWeb应用(基于Tomcat)中初始化Log4j的两种方式: 1.通过增加 InitServlet ,设置令其自启动来初始化 Log4j . 2.通过监听器 ServletC ...

  7. asp传递参数的几种方式

    把下列代码分别加入a.asp和b.asp的<body></body>中,点提交,就可以将a.asp文本框的内容传给b.asp并显示出来 a.ASP <form actio ...

  8. linux内核分析作业4:使用库函数API和C代码中嵌入汇编代码两种方式使用同一个系统调用

    系统调用:库函数封装了系统调用,通过库函数和系统调用打交道 用户态:低级别执行状态,代码的掌控范围会受到限制. 内核态:高执行级别,代码可移植性特权指令,访问任意物理地址 为什么划分级别:如果全部特权 ...

  9. JavaScript学习12 JS中定义对象的几种方式

    JavaScript学习12 JS中定义对象的几种方式 JavaScript中没有类的概念,只有对象. 在JavaScript中定义对象可以采用以下几种方式: 1.基于已有对象扩充其属性和方法 2.工 ...

随机推荐

  1. 谷歌 analytics.js 部分解密版

    源:http://www.google-analytics.com/analytics.js (function(){var aa=encodeURIComponent,f=window,ba=set ...

  2. ZooKeeper伪分布集群安装及使用 RMI+ZooKeeper实现远程调用框架

    使用 RMI + ZooKeeper 实现远程调用框架,包括ZooKeeper伪集群安装和代码实现两部分.  一.ZooKeeper伪集群安装: 1>获取ZooKeeper安装包 下载地址:ht ...

  3. hadoop(三):hdfs 机架感知

    client 向 Active NN 发送写请求时,NN为这些数据分配DN地址,HDFS文件块副本的放置对于系统整体的可靠性和性能有关键性影响.一个简单但非优化的副本放置策略是,把副本分别放在不同机架 ...

  4. 删除Android自带软件方法及adb remount 失败解决方案

    删除Android自带软件方法 1.在电脑上打开cmd,然后输入命令 adb remount adb shell su 2.接着就是Linux命令行模式了,输入 cd system/app 3然后输入 ...

  5. Struts2 - Study 1

    领略下传说中的Struts2,写了个小例子,有点意思.比起.net中的MVC有意思的在于它是你自己一步步去配置实现,想怎么搞就怎么搞,.net的MVC,它干了什么事你完全不知,只不过知道怎么用而已. ...

  6. CryptoAPI与openssl数字签名与验证交互

    昨天写过了RSA非对称加密解密的交互方式, 其实数字签名也是RSA非对称加密,只不过用私钥加密的,再加上个hash摘要 CryptoAPI与openssl RSA非对称加密解密(PKCS1 PADDI ...

  7. 关于jquery插件 入门

    关于 JavaScript & jQuery 的插件开发   最近在温故 JavaScript 的面向对象,于是乎再次翻开了<JavaScript高级程序设计>第3版,了解到其中常 ...

  8. php时间日期处理

    php日期函数: 首先想到的就是date(),time(),strtotime(),mktime() strtotime() strtotime()函数用于将英文文本字符串表示的日期转换为时间戳,为 ...

  9. Java的外部类和内部类+静态变量和非静态变量的组合关系

    看的李刚<疯狂java讲义>,里面讲内部类的地方感觉有点散而且不全,看完之后还是不十分清楚到底怎么用,于是自己写了个程序测试了一下.看如下代码,即可知道外部类和内部类+静态成员和非静态成员 ...

  10. c#无限级分类

    data: [ { text: '节点1', icon: myaccount, children: [ { text: '节点1.1', icon: archives }, { text: '节点1. ...