@duyao
2015-05-02T03:11:00.000000Z
字数 1877
阅读 2667
servlet
servletContext是在服务器端,被所有客户端共享,
servletContext是当web应用启动时,自动创建的,
servletContext当服务器关闭重启或者reload会使其销毁
servletContext可以看做一张表,一列是string另一列是object,有点类似于session
如果涉及不同用户数据共享,且数据量不大,又不想写如数据库,可以使用ServletContext
设置ServletContext
//获取servletContext对象引用
//1.通过this直接获取
ServletContext servletContext=this.getServletContext();
//2.通过ServletConfig获取
//servletContext=this.getServletConfig().getServletContext();
servletContext.setAttribute("name", "毒药");
取得ServletContext
//获取ServletContext对象
ServletContext servletContext=this.getServletContext();
//取出属性,要转换成相应类型
String string=(String) servletContext.getAttribute("name");
//删除属性
servletContext.removeAttribute("name");
<!-- 这里设置servlet配置信息,且只能被该servlet读取 -->
<init-param>
<param-name>encoding</param-name>
<param-value>utf-8</param-value>
</init-param>
<!-- 在servlet外面使用context-param配置信息,所有的servlet都可以使用 -->
<context-param>
<param-name>name</param-name>
<param-value>dy</param-value>
</context-param>
获取web配置
//获取web的配置信息,只能得到string类型,而不是一个对象
String servletContext =this.getServletContext().getInitParameter("name");
out.print("val="+servletContext);
//1.
response.sendRedirect("/web应用名/资源名");
//2.
request.getRequestDispatcher("/资源名").forward(request, response);
//3.
this.getServletContext().getRequestDispatcher("/资源名").forward(request, response);
原理同forward
相同
建立db.properties,new->file->db.properties
内容为
myname=tiger
pwd=1234
用servletContext读取
//读取到文件
InputStream inputStream=this.getServletContext().getResourceAsStream("myname");
如果文件放在src目录下面,应该使用类加载器
//使用类加载器获取src目录下面的文件
InputStream inputStream=Sevlet2.class.getClassLoader().getResourceAsStream("db.properties");
读取文件
//创建properties文件
java.util.Properties properties=new java.util.Properties();
properties.load(inputStream);
out.print("myname="+properties.getProperty("myname"));
//读取全路径
String pathString=this.getServletContext().getRealPath("/img/1.jpg");