您的位置:首页 > 其它

Servlet技术中的对象-ServletConfig与ServletContext

2015-08-26 21:11 267 查看

ServletConfig

this.getServletConfig();


在配置Servlet时,可以使用一个或多个标签为Servlet配置一些初始化参数,而这些参数,在Web容器创建Servlet实例化对象时,会自动封装到ServletCofig对象中,并且在调用servlet的init方法时传递给servlet。

即,通过这个对象可以得到配置信息

ServletContext

this.getServletConfig().getServletContext();
    this.getSetvletContext();


Web容器在启动时会为每个Web应用创建一个ServletContext对象,这个对象就代表当前Web应用。

应用:

1. 全局域对象

所有Servlet共享同一个ServletContext,因此可以把它看作当前Web应用的全局对象,来保存一些全局共享的数据。

this.getServletContext().setAttribute("xx", Object);


2. 实现Servlet的转发

this.getServletContext().getRequestDispatcher("/1.jsp").forward(request, response);


3. 读取资源文件

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


如果使用传统方法读取资源文件,一定要注意路径问题,一般这样做:

String absolutePath = this.getServletContext().getRealPath("/WEB-INF/db.properties");


使用类加载器去读取资源文件

UserDao.class.getClassLoader().getResourceAsStream("db.properties");


应注意:以类路径为依照(eclipse中是src目录)

并且类装载器只会对文件进行一次读取,并将文件装载进内存(多次读取、太大文件,不建议用这种读取方式)


转发与重定向的区别:

转发时并不会进行第二次请求,而是直接带着request对象就去转发到的资源

重定向会重新进行请求,即浏览器会发出两次请求。

转发是地址栏不会变化,重定向时会变化
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: