二、ServletConfig與ServletContext
阿新 • • 發佈:2018-12-02
一、ServletConfig
1、在web.xml中的<servlet>標籤下可以使用一個或者多個<init-param>進行一些初始化的操作。
<servlet>
<servlet-name>ThreadSecure</servlet-name>
<servlet-class>com.javaweb.servlet.ThreadSecure</servlet-class>
<init-param>
<param-name>userName</param-name>
<param-value>root</param-value>
</init-param>
<init-param>
<param-name>password</param-name>
<param-value>root</param-value>
</init-param>
</servlet>
獲取從config引數
ServletConfig config;//用來接受初始化引數
public void init(ServletConfig config) throws ServletException {
this.config = config;
}
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
//獲取單個引數
String name = this.config.getInitParameter("userName");
response.getWriter().write(name);
System.out.println(name);
//獲取所有的配置引數
Enumeration <String>Names = this.config.getInitParameterNames();
while (Names.hasMoreElements()) {
String names = Names.nextElement();
String value = config.getInitParameter(names);
System.out.println(name+":"+value);
}
}
方式二、從當前servlet物件直接獲取initialParameter
String initParameter = this.getInitParameter("name");
response.getWriter().write(initParameter);
二、ServletCotext
1、載入時機
當tomcat啟動的時候,會為每個web應用建立一個servletContext物件
2、
多個servlet可以通過ServletContext實現資料共享
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.getWriter().write("context1");
ServletContext context = this.getServletConfig().getServletContext();
context.setAttribute("content", "this is Context Class");
}
在另一個類中獲取 public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
ServletContext context = this.getServletConfig().getServletContext();
String attribute = (String) context.getAttribute("content");
System.out.println(attribute);
}
2、獲取web應用的初始引數 在web.xml中配置初始化引數和<servlet>同級 <context-param> <param-name>url</param-name> <param-value> jdbc://mysql//localhost:3306/db </param-value> </context-param>
在doGet()方法中獲取 String parameter = this.getServletContext().getInitParameter("url"); System.out.println(parameter);
7、路徑問題 //絕對路徑 String path = servletContext.getRealPath("/"); System.out.println(path);// D:\Tomcat 7.0\webapps\WebServlet\ getResourcePaths(java.lang.String path)
指定路徑下的所有資源
Set<String> set = getServletContext().getResourcePaths("/"); for (String path : set) { System.out.println(path); } 總結: 絕對路徑:就是一碟符開頭 相對路徑: 不以正斜槓開頭: 直接寫路徑和資源名 以正斜槓開頭: 伺服器端:servlet對映路徑,代表當前webapp的根路徑 客戶端:a,img,form代表web伺服器的根路徑要加專案名才能訪問到
}
在另一個類中獲取 public void doGet(HttpServletRequest request, HttpServletResponse response)
2、獲取web應用的初始引數 在web.xml中配置初始化引數和<servlet>同級 <context-param> <param-name>url</param-name> <param-value> jdbc://mysql//localhost:3306/db </param-value> </context-param>
在doGet()方法中獲取 String parameter = this.getServletContext().getInitParameter("url"); System.out.println(parameter);
- servletContext請求轉發功能。
7、路徑問題 //絕對路徑 String path = servletContext.getRealPath("/"); System.out.println(path);// D:\Tomcat 7.0\webapps\WebServlet\ getResourcePaths(java.lang.String path)
指定路徑下的所有資源
Set<String> set = getServletContext().getResourcePaths("/"); for (String path : set) { System.out.println(path); } 總結: 絕對路徑:就是一碟符開頭 相對路徑: 不以正斜槓開頭: 直接寫路徑和資源名 以正斜槓開頭: 伺服器端:servlet對映路徑,代表當前webapp的根路徑 客戶端:a,img,form代表web伺服器的根路徑要加專案名才能訪問到
}