[Java教程]与Servlet相关的类

0

2017-08-31 17:00:15

有4个有关的类,通过servlet可以获得其中的三个,然后通过ServletConfig间接获取ServletContext。

1、 ServletConfig

该类是在Servlet容器初始化Servlet时,将初始化参数交给servlet的init()方法;另外它还可以获得ServletConfig类的实例。类里两个方法比较常用,就是获得初始化参数。

首先我们要知道怎么配置初始化参数?两个办法:@WebServlet(name="testServlet", urlPatterns="/testServlet", loadOnStartup=1,

initParams={

@WebInitParam(name="user", value="lmy"),

@WebInitParam(name="pass", value="123")

}

)

public class TestServlet implements Servlet {}

通过web.

TestServlet

com.javaservlet.servlet.TestServlet

age

21

address

nicai

1

注意初始化参数要放在load-on-startup前面,否则会出错,这是由由于参数都是以键值对形式存在,可以获取参数:System.out.println("user : " + servletConfig.getInitParameter("user"));

System.out.println("pass : " + servletConfig.getInitParameter("pass"));

Enumeration enums = servletConfig.getInitParameterNames();

while(enums.hasMoreElements()){

String paramName = enums.nextElement();

String paramValue = servletConfig.getInitParameter(paramName);

System.out.println(paramName + "-" + paramValue);

}

注意,该参数只是属于Servlet自己的,所以配置参数的时候要注意所放的位置。

2、 ServletContext

通过ServletConfig类的getServletConext()方法可以获得ServletContext类实例,该对象表示整个web应用程序,在一个程序中只有一个,程序中所有的servlet共享该对象,可以说是一个全局对象,我们也可以获取web应用的初始化参数,该初始化参数可供所有的servlet使用,首先设置web初始化参数:

country

cn

注意和init-param的区别,获取方式和init-param类似:ServletContext context = servletConfig.getServletContext();

context.getInitParameter("country");

Enumeration contextParams = context.getInitParameterNames();

while(contextParams.hasMoreElements()){

String paramName = contextParams.nextElement();

String paramValue = context.getInitParameter(paramName);

System.out.println(paramName + "-" + paramValue);

}

其中还有一些其他的方法可以使用:

获取web程序名称:// 获取当前web程序的context path,也可以说是程序名称

System.out.println(context.getContextPath());      //output result: /JavaServlet

获取当前web应用的某一个文件在服务器上的绝对路径,而不是部署前的路径,也就不是你的IDE里的路径。System.out.println(context.getRealPath("readme.txt"));

工程目录如下:

输出结果:C:\Program Files\tomcat7\wtpwebapps\JavaServlet\readme.txt

这其实是文件在Servlet容器上的路径,在eclipse中可以看到server的路径说明

可以看出该文件的路径是Server path + deploy path + 应用程序中的路径,记得和师兄之前还讨论过这个问题,当时真是傻死了!!

获取当前web应用的一个文件输入流:

getResourceAsStream(String path):注意其中的path也是相对于web程序根目录的路径,即也是在部署之后的路径,不是部署之前的路径;

与Classloader的方法对比如下:InputStream is1 = context.getResourceAsStream("readme.txt");

System.out.println("inputStream1 : " + is1);

InputStream is2 = this.getClass().getClassLoader().getResourceAsStream("readme.txt");

System.out.println("inputStream2 : " + is2);

InputStream is3 = context.getResourceAsStream("/WEB-INF/classes/readme.txt");

System.out.println("inputStream3 : " + is3);

输入如下:

可以看出第一个使用部署前的路径根本没有获取到资源,而使用相对于部署后的web程序的根目录(从/WEB-INF开始)则成功获取到了资源。

总之就是一句话,在web程序中获取路径时一定要小心,因为获取到的路径很多都是根据程序部署之后相对于服务器部署目录的路径,开发时的路径是不会获取到的,即开发和部署两个阶段中调试程序是有差异的。

还有两个重要的方法,getAttribute()和getAttributeNames(),跟下一篇的说ServletRequest对象时一起进行对比。

3、 其他两个对象

因为ServletRequest和ServletResponse和Http的通信联系紧密,所以把它们放到下一篇说明。

本文网址:http://www.shaoqun.com/a/322281.html

*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们:admin@shaoqun.com。

0

java servlet类_[Java教程]与Servlet相关的类相关推荐

  1. Java应用编程_常用类库汇总2(日期类正则表达式国际化程序)

    总览[Java SE] 相关文章链接 [Java应用编程_常用类库汇总1(字符串处理类&&对象克隆&数字操作类库&-)] [Java应用编程_常用类库汇总3(开发支持类 ...

  2. java private 对象_[Java笔记]类的所有构造器都是private权限,就一定没有办法实例化它的对象了么?...

    笔者以前学过C++语言.众所周知,C++也是一门面向对象程序设计语言.还记得当时在大学的时候,老师讲过这样的话:类的构造函数不应该设置成private权限,这样的话还怎么去实例化类的对象?当时也信以为 ...

  3. java asynctask完成_如何传递参数并从AsyncTask类中获取结果?

    我想要做的就是使用AsyncTask来执行http请求 . 这是我的代码到目前为止,但我不知道如何从我的主要活动中调用此类以及如何获得结果 . 我有一个String var"uri" ...

  4. java 历遍 类_[Java] 遍历指定包名下所有的类(支持jar) | 学步园

    项目需要,仅做记录. 支持包名下的子包名遍历,并使用Annotation(内注)来过滤一些不必要的内部类,提高命中精度. 通过Thread.currentThread().getContextClas ...

  5. java小朋友猜拳_[Java教程]Java猜拳小游戏(剪刀、石头、布)

    [Java教程]Java猜拳小游戏(剪刀.石头.布) 0 2015-09-29 08:00:04 import java.util.Random;import java.util.Scanner;pu ...

  6. java星空屏幕_[Java教程]窗口设置_星空网

    窗口设置 2016-04-13 0 /** * 这个是GUI的事例程序: * */ package w160412.wang.main;import java.awt.Color; import ja ...

  7. java取负数_[Java] 告别“CV 工程师”码出高效!(基础篇)

    作为一名资深的 CV 工程师,某天,当我再一次日常看见满屏的报错信息与键盘上已经磨的泛白的 Ctrl.C.V 这三个按键时,我顿悟了. 百度谷歌复制粘贴虽然很香,但是总是依靠前人种树,终会有一天失去乘 ...

  8. java控制语句练习题_[Java初探实例篇02]__流程控制语句知识相关的实例练习

    本例就流程控制语句的应用方面,通过三个练习题来深入学习和巩固下学习的流程控制语句方面的知识,设计到,if条件判断语句,switch多分支语句,for循环语句及其嵌套多层使用,while循环语句. 练习 ...

  9. Java笔记:与系统交互、系统相关的类,Object类

    1.程序与用户交互 (1)运行一个Java程序的时候要给它提供一个main方法入口,这边分析一下这个main方法的签名 public static void main(String[] args); ...

最新文章

  1. 教你使用IOS内置的排错命令
  2. BZOJ 1293 [SCOI2009]生日礼物
  3. linux下cron定时任务的总结
  4. mysql报错last packet_mysql The last packet successfully received
  5. 哪吒:猪八戒十年DevOps演进之路
  6. Corn Fields——POJ3254状态压缩Dp
  7. Ubuntu12.04 配置JDK7
  8. 阿里云加入开放媒体联盟AOM 科技巨头联合推广高清视频新标准
  9. POJ NOI MATH-7829 神奇序列求和
  10. RxJava操作符serialize 笔记-二十六
  11. 开源字符处理类库:CharString类 拆分自自己研发的web服务器中的类库
  12. 面向对象高级编程(5)-使用元类
  13. Mac Pro 使用 ll、la、l等ls的别名命令
  14. java原始套接字打开_原始套接字-IP头包含选项
  15. 瑞昱网通芯片RTL8305NB-CG应用介绍
  16. 浅析EDA技术应用于电子设计竞赛的可行性
  17. android局域网中的打印机,Android 浅谈同一局域网下使用WiFi连接打印机
  18. 运动酒店,如何“奇袭”文旅产业精准蓝海赛道——缤跃酒店
  19. 第2关:比较、掩码和布尔逻辑
  20. !!. 与 ?. 的区别

热门文章

  1. linux ubuntu 获取ip,linux系统(ubuntu)怎么查看ip地址
  2. 循迹小车程序编程_电子编程?其实很容易!
  3. 2020年python工资一般多少-2020届毕业生874万,这个岗位月薪2万竟无人问津...
  4. python爬虫实例100例-Python爬虫 实例
  5. python 下载文件-Python下载文件的11种方式
  6. python怎么读是什么意思-python中的PEP是什么?怎么理解?(转)
  7. python怎么读发音百度翻译-python 百度翻译破解版,亲证可行
  8. python 计算机程序设计-计算机程序设计(Python)
  9. Python人工智能第一篇:语音合成和语音识别
  10. 谷歌云端语音识别软件