ServletContext對象:
1. 概念:代表整個web應用,可以和程序的容器(服務器)來通信
2. 獲取:
1. 通過request對象獲取
request.getServletContext();
2. 通過HttpServlet獲取
this.getServletContext();
3. 功能:
1. 獲取MIME類型:
* MIME類型:在互聯網通信過程中定義的一種文件數據類型
* 格式: 大類型/小類型 text/html image/jpeg
* 獲取:String getMimeType(String file)
2. 域對象:共享數據
1. setAttribute(String name,Object value)
2. getAttribute(String name)
3. removeAttribute(String name)
* ServletContext對象範圍:所有用戶所有請求的數據
3. 獲取文件的真實(服務器)路徑
1. 方法:String getRealPath(String path)
String b = context.getRealPath("/b.txt");//web目錄下資源訪問
String c = context.getRealPath("/WEB-INF/c.txt");//WEB-INF目錄下的資源訪問
String a = context.getRealPath("/WEB-INF/classes/a.txt");//src目錄下的資源訪問
文件下載案例
String filename = request.getParameter("filename");
ServletContext servletContext = this.getServletContext();
String realPath = servletContext.getRealPath("/img/" + filename);
FileInputStream fis = new FileInputStream(realPath);
String mimeType = servletContext.getMimeType(filename);
response.setHeader("content-type",mimeType);
String agent = request.getHeader("user-agent");
filename = DownLoadUtils.getFileName(agent, filename);
response.setHeader("content-disposition","attachment;filename="+filename);
ServletOutputStream sos = response.getOutputStream();
byte[] buff = new byte[1024 * 8];
int len = 0;
while((len = fis.read(buff)) != -1){
sos.write(buff,0,len);
}
fis.close();