其餘更多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);
複製代碼