ServletContext引入
需求1:
需求2:
ServletContext快速入门
- ServletContext 是在服务器创建
- ServletContext被所有客户端共享
- ServletContext 当web应用启动时自动创建,
- ServletContext 当web应用关闭 重启动 或服务器关闭时都会造成ServletContext销毁
对ServletContext的用法小结:
//获取ServletContext的两种方法
this.getServletContext();
this.getServletConfig().ServletContext();
//添加属性
servletcontext.setAttribute(String , object);
//取出属性
servletcontext.getAttribute("属性名");
//删除
servletcontext.removeAttribute("属性名");
ServletContext的应用
一、 获取web应用的初始化参数
<!-- 如果希望所有的Servlet都可以访问该配置-->
<context-param>
<param-name>name</param-name>
<param-value>socott</param-value>
</context-param>
如何获取
String val=this.
getServletContext().getInitParameter("name");
二、实现servlet页面跳转
目前跳转到页面有几种方法
①. response.sendRedirect("/web应用名/资源URL");
②. resquest.getRequestDispatcher("/资源URL").forward(resuest,response);
区别
a: getRequestDispatcher跳转发生在服务器而sendRedirect跳转发生在浏览器
b: 如果resquest.setAttribute(“name”,”gust”);希望下个页面可以使用其属性则用getRequestDispatcher
c:如果session.setAttribute(“uname”,”顺平”);希望下个页面可以使用其属性则用两种方法都可以,建议使用getRequestDispatcher 因为效率高些
d:如果我们要跳转到本应用外的URL则使用sendRedirect
③:this.getServletContext().getRequestDispatcher("/资源URL").forward(resuest,response);
跟第二种方法一样...
三、读取文件,和获取文件的路径
//读取文件
InputStream is = this.getServletContext().getResourceAsStream("dbinfo.properties");
//创建properties
Properties pp = new Properties();
pp.load(is);
Out.println("name="+pp.getProperty("username"));
//如果文件在src目录下要用类加载器去读
InputStream is=Servlet类名.class.getClassLoader().getResoureAsStream("dbinfo.properties");
//获取文件全路径
String path=this.getServletContext().getRealPath("/imgs/a.jpg");
Out.println("path="+path);