servletconfig
java.lang.String getInitParameter(java.lang.String name) //根据参数名获取参数值
java.util.Enumeration getInitParameterNames() //获取所有参数
servletcontext
java.lang.String getContextPath() --得到当前web应用的路径
java.lang.String getInitParameter(java.lang.String name) --得到web应用的初始化参数
java.util.Enumeration getInitParameterNames()
void setAttribute(java.lang.String name, java.lang.Object object) --域对象有关的方法
java.lang.Object getAttribute(java.lang.String name)
void removeAttribute(java.lang.String name)
RequestDispatcher getRequestDispatcher(java.lang.String path) --转发(类似于重定向)
java.lang.String getRealPath(java.lang.String path) --得到web应用的资源文件
java.io.InputStream re(java.lang.String path)
区别
一个是把servlet配置封装到servlet中(servletconfig)
一个web.xml整个文件信息封装(servletcontext)
一个web项目可以存在多个servletconfig但是只能存在一个servletcontext
servletconfig应用场景配置信息
列如:读文件的路径改变时需要频繁修改信息
解决方案:把配置文件写入到servlet中
<servlet>
<servlet-name></servlet-name>
<servlet-class></servlet-class>
<init-param>
<param-name>path</param-name>//这是参数名
<param-value>c:/a.txt</param-value>//可以在这里修改路径
</init-param>
</servlet>
调用
写一个servlet(Demo)继承httpservlet
this.getServletConfig("path");//this代表了当前类(Demo) getsetvletconfig是sun公司封装config方法 返回的是value
servletcontext
servletContext被sun公司封装在servleconfig中所以调用的时候为servletcontext contest = config.getServletContext();或者servletcontext contest =this.servletcontext
Sun公司设计
1)创建ServletContext对象 ServletContext context = new ServletContext()
2)创建ServletConfig对象
ServetConfig config = new ServletConfig();
config.setServletContxt(context);
class ServletConfig{
ServletContext context;
public ServletContext getServletContxt(){
return contxt;
}
}
public void init( ServletConfig config ){
得到ServletConfig对象
从ServletConfig对象中得到ServletContext对象
SerlvetContext context = config.getServletContext();
}
获取路径
String str = this.getServletContext().getContextPath();//str为 /+当前项目名称(应用与请求重定向资源路径中)
contextpath应用一(转发)
this.getServletContext().getRequestDispatcherType("path").forward(request,response);
应用与域对象保存分享数据(但是会覆盖原来的数据)
加载外部资源
String path = this.getServletContext().getRealPath("资源路径");// "/WEB-INF/class/db.properties"
加载外部资源比较
例如src下有一个外部文件db.properties
java项目 获取路径为"./src/db.properties"
web项目 用函数getRealPath()或者getResourseAsStream();
为什么不能用 " . "获取
因为 . 代表的是java当前运行的目录(servlet中在tomcat服务器的bin目录下面)所以不建议