您的位置:首页 > 其它

servlet之ServletContext

2016-02-29 12:53 253 查看
产生:Web容器在启动时候,每个Web应用都创建一个ServletContext对象,代表了整个Web应用

获得:ServletConfig对象中维护了ServletContext对象,而我们要想在各个servlet中进行数据传输,就用到servletContext对象,而各个servlet中可以获得Servletconfig对象,在利用Servletconfig.getServletContext()获得当前整个web应用的Servletcontext对象了。也可以在servlet类中,直接使用this.getgetServletContext()获得Servletcontext对象(在父类中完成了)

常用函数:

getAttribute(String name) ;setAttribute(String name,
Object object)

getInitParameter(String name)  获得这个Web应用的配置信息参数

getRealPath(String path) ;获得资料的在计算机上的真实路径

getRequestDispatcher(String path) 资源转发

getResourceAsStream(String path) ; getResource(String path) 
资源读取

应用(各个servlet对象数据共享):

1.获得整个web应用的初始化参数:在web.xml中用<context-param>标签来配置整个web应用的配置信息

 this.getServletContext().getInitParamter();

2.实现Servlet的转发:requestDispatcher rd = this.getServletContext().getrequestDispatcher("/1.jsp");

rd.forward(requset,response);

3.读取资源文件(两种资源文件xml文件和properties文件):

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

Properties props = new Properties();

props.load(in);

String  value = props.getProperty(string s);

或者

String path = this.getServletContext().getRealPath("/WEB-INF/classes/db.properties");  返回资源的绝对路径

FileInputStream in = new FileInputStream(path);

Properties props = new Properties();

props.load(in);

String value = props.getProperty(String s);

注意几点:1.ServletContext是整个web应用的对象,代表了整个Web应用,所以它的域范围很大,可以在整个Web应用下的各个Servlet中进行数据传输,而ServletConfig是单个Servlet对象所有,所以用所差别。

2.转发与重定向:转发:你找我借钱,我没有,我帮你向王五借;重定向:你找我借钱,我没有,我要你自己去向王五借。转发用的特别多(把处理的数据转发给JSP,用于数据输出)

3.读取properties文件的模板代码上面就是。

4.如果读入资源文件的程序不是Servlet程序的话,就是一般JAVA程序怎么读入服务器中的资源文件,就要使用类装载器读取文件。(实际开发中,这种方式是最主要的)也就是通过类装载方式得到资源的位置,再通过传统文件读取方式读取文件信息。常用方式的操作如下:

String path = UerDao.class.getClassLoader().getResource("db.properties").getPath();

FileOutputStream in = new FileOutputStream(path);

Properties props = new Properties();

props.load(in);

String value = props.getProperty(String s);

5.forward和include方法的区别:

forward方法是把请求的内容转发到另外的一个servlet.而include是把另一个servlet处理过后的内容拿过来.

(forward方法调用后在响应中的没有提交的内容被自动消除。将请求转发给其他的Servlet后,由被调用的Servlet负责对请求做出响应,而原先Servlet的执行则终止。include方法使原先的Servlet和转发到的Servlet都可以输出响应信息,即原先的Servlet还可以继续输出响应信息)




内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息