其余更多java基础文章: java基础学习(目录)java
接下来咱们要说的是Servlet的四个类:web
ServletConfig对象,ServletContext对象、下一节讲request对象,response对象tomcat
从图中咱们能够知道这几个对象之间的联系!bash
ServletConfig config = this.getServletConfig();
复制代码
<servlet>
<servlet-name>MyServlet</servlet-name>
<servlet-class>com.hiway.servlet.Myservlet</servlet-class>
<init-param>
<param-name>name</param-name>
<param-value>123456</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>MyServlet</servlet-name>
<url-pattern>/Myservlet</url-pattern>
</servlet-mapping>
复制代码
Enumeration<String> initParameterNames = this.getInitParameterNames();
while(initParameterNames.hasMoreElements()){
String name = initParameterNames.nextElement();
String value = this.getInitParameter(name);
}
复制代码
getServletContext();
//或
getServletConfig().getServletContext();
复制代码
request.getSession().getServletContext()
复制代码
tomcat为每一个web项目都建立一个ServletContext实例,tomcat在启动时建立,服务器关闭时销毁,在一个web项目中共享数据,管理web项目资源,为整个web配置公共信息等,通俗点讲,就是一个web项目,就存在一个ServletContext实例,每一个Servlet读能够访问到它。
1. web项目中共享数据 在必定范围内(当前应用),使多个Servlet共享数据getAttribute(String name)、setAttribute(String name, Object obj)、removeAttribute(String name)服务器
1.1 setAttribute(String name, Object obj) 在web项目范围内存放内容,以便让在web项目中全部的servlet读能访问到
1.2 getAttribute(String name) 经过指定名称得到内容
1.3 removeAttribute(String name) 经过指定名称移除内容app
2. 获取全局配置信息
整个web项目初始化参数 (这个就是全局初始化参数,每一个Servlet中都能获取到该初始化值)
2.1)getInitPatameter(String name) //经过指定名称获取初始化值 2.2)getInitParameterNames() //得到枚举类型post
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>
classpath:applicationContext.xml
</param-value>
</context-param>
复制代码
3. 获取web项目资源
3.1)获取web项目下指定资源的路径 :
String getRealPath(String path);//根据资源名称获得资源的绝对路径学习
ServletContext servletContext = this.getServletContext();
String path = servletContext.getRealPath("/WEB-INF/web.xml");
System.out.println(path);
F:\myworkspace\ServletTest\out\artifacts\ServletTest_war_exploded\WEB-INF\web.xml
复制代码
3.2)获取web项目下指定资源的内容,返回的是字节输入流。InputStream getResourceAsStream(java.lang.String path)ui
InputStream in = servletContext.getResourceAsStream("/WEB-INF/web.xml");
InputStreamReader isr = new InputStreamReader(in,"UTF-8");
BufferedReader br = new BufferedReader(isr);
String s = null;
while((s =br.readLine())!=null){
System.out.println(s);
}
复制代码
3.3)getResourcePaths(java.lang.String path) 指定路径下的全部内容。this
Set set = servletContext.getResourcePaths("/WEB-INF");
Iterator iterator = set.iterator();
while(iterator.hasNext()){
System.out.println(iterator.next());
}
复制代码
3.4)实现servlet的转发
RequestDispatcher getRequestDispatcher(String path) ;//参数表示要跳转到哪去
RequestDispatcher rd = servletContext.getRequestDispatcher("/Servlet1");
rd.forward(req,resp);
复制代码