笔记之servlet的ServletContext对象(ServletContext的应用)

来源:互联网 发布:java 设置cookie 编辑:程序博客网 时间:2024/05/05 04:43

Servlet中的对象:

1.SerlveltContext对象代表应用

同一个web应用中,所有 Servlet共享一个ServletContext,可通过servletContext实现Servlet通信

servletContext获取方式:

方式一:this.getServletConfig().getServletContext();//config中维护了对conetxt对象的应用

方式二:this.getServletContext();

ServletContext的具体应用:

1.实现多个Servlet数据共享

this.getServletContext().setAttribute()   this.getServletContext().getAttribute()

2.XML中可通过<context-param>设置应用初始化参数,参数自动封装到context对象中。

this.getServletConext().getInitParamter("url")来获取参数

3.实现servlet转发

例如:将结果转交给JSP

RequestDispather  rd=this.getServletContxt().getRequestDispather("/1.jsp");

Rd.forward(request,response);

4.读取资源配置文件XMLproperties

WEB开发路径都以/开头。

第一种方式:

 ServletContext context=this.getServletContext();

InputStream in=context.getResourceAsStream("/WEB-INF/classes/db.properties");

Properties pro=new Properties();

Pro.load(in);

String url=pro.getProperty("url");

第二种方式:方便截取文件名path.substring(path.lastIndexOf("\\")+1);

 ServletContext context=this.getServletContext();

String path=context.getRealPath("/WEB-INF/classes/db.properties");

InputStream in=new FileInputStream(path);

Properties pro=new Properties();

Pro.load(in);

String url=pro.getProperty("url");

其他方法:

context.getResource("/WEB-INF/classes/db.properties")//返回资源URL方式

Url url=context.getResource("/WEB-INF/classes/db.properties");

String path=url.getPath();//获得绝对路径

context.getResourcePaths("/")取指定目录下的所有资源

读取不同位置的资源:

包下的资源:

context.getRealPath("/WEB-INF/ classes/cn/itcast/web/db.properties")

Webroot下的资源:

webROOT是应用目录

context.getRealPath("/db.propterties")

读取资源文件的程序不是servlet

Classes目录下的文件都由类装载器装载

SRC下:StudentDao.class.getClassLoader().getResourceAsStream("db.properties");

包下:StudentDao.class.getClassLoader().getResourceAsStream("cn/itcast/web/db.properties");

采用类装载器注意问题:

1.装载的文件必须在类路径下就是SRC

2.装载的文件不能太大,否则会JAVA内存溢出(类文件是一一次性装载,即使修改资源也不会再装载)

3.用类装载器读取跟新后的资源文件,只能按传统方式得到绝对路径,然后再用流读取

Url url=this.StudentDao.class.getClassLoader().getResource("db.properties");

String path=url.getPath();

InputStream in=new FileInputSream(path);


原创粉丝点击