【Java Web開發】學習servlet入門二

Servlet細節

1線程安全相關
不要在servlet中創建成員,局部變量可以
可以創建無狀態成員
可以創建有狀態成員,但是狀態只能是隻讀
2讓服務器在啓動時就創建servlet
3url-pattern可以有多個,可以用通配符
4web.xml的繼承(javaWeb應用都有一個共同父文件——tomcat的conf/web.xml)
·在conf下的web.xml文件內容介紹
DefaultServlet 匹配了所有 404
JspServlet匹配了jsp後綴的
session-config 默認30分鐘
mime-mapping中每一種文件格式都對應一種mime-type

ServletContext概述(重要)


1概述
一個項目只有一個ServletContext對象
使用它可以給多個servlet傳遞數據
生命週期與tomcat啓動關閉一致
2Servlet獲取servletContext方式
在void init(ServletConfig config)中獲取ServletContext對象,ServletContext context = config.getServletContext(),
在ServletConfig類中的getServletContext()方法可以用來獲取ServletContext對象
在GenericServlet或HttpServlet中獲取ServletContext對象
3域對象的功能
ServletContext是javaWeb四大域對象(ServletContext、ServletRequest、HttpSession、PageContext)之一
4獲取應用初始化參數
Servlet也可以獲取初始化參數,但它是局部參數,只能獲取自己的初始化參數.
可以配置公共的初始化參數,爲所有Servlet而用,需要使用ServletContext才能使用
<context-param>
    <param-name>paramName1</param-name>
    <param-value>paramValue1</param-value>
</context-param>

ServletContext app = this.getServletContext();
app.getInitParameter("paramName1");
5獲取資源相關方法
·獲取真實路徑  String path = this.getServletContext().getRealPath("");
·獲取資源流  InputStream input = this.getServletContext().getResourceAsStream("");
·獲取指定目錄下所有資源路徑  Set<String> resourcePaths = this.getServletContext().getResourcePaths("/WEB-INF");

獲取類路徑下的資源

1得到ClassLoader,先得到Class,在得到ClassLoader,然後調用getResourceAsStream()得到一個InputStream;
ClassLoader c1= this.getClass().getClassLoader();
//相對/classes路徑
InputStream input = c1.getResourceAsStream("");
Class c = this.getClass();
//相對當前.class文件所在目錄
InputStream input = c.getResourceAsStream("");
//相對classes下
InputStream input = c.getResourceAsStream("/xx.xx");
InputStream input = c.getResourceAsStream("/../../xx.xx");//在classes目錄上的文件

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章