上下文對象-請求對象(javaWeb-ServletContext/Response)

上下文對象-請求對象

上下文對象

/*獲取在web.xml文件中已經配置的全局初始化參數*/
ServletContext context = this.getServletContext();
String name = context.getInitParameter("helong");
System.out.println(name);
/*獲取web應用中某一個資源的絕對路徑*/
String realPath = context.getRealPath("helong.txt");
System.out.println(realPath);
/**
* ServletContext是一個域對象
* 域對象:能夠存取數據的對象就是域對象
* ServletContext域對象的作用範圍:1.整個應用;2.所有web資源都可以進行數據存取;3.數據是可以共享的;
* 獲取完ServletContxt之後向裏面寫數據:context.setAttribute(String name,Object value);
* 獲取完ServletContext之後,通過name取出存放的數據:context.getAttribute(String name);
* 獲取完ServletContext之後,刪除指定名稱的值:context.removeAttribute(String name);
*只要是域對象,基本上都有裏面的幾個方法 
*/

請求對象

/*設置響應頭:*/		
/*add代表添加新的內容*/
response.addHeader("name", "helong");
response.addIntHeader("age", 10);
response.addDateHeader("birthday", new Date().getTime());
/*set代表設置,已經存在的內容*/
response.setHeader(String name, String value);
response.setHeader(String name,int value);
response.setDateHeader(String name,Date value);

/*重定向*/
/*概念:前端界面到服務器中去找servlet1,servlet1當中沒有這個資源,servlet1再發送一個請求到servlet2*/
/*設置重定向:*/
//設置狀態碼
response.setStatus(302);
//設置響應頭
response.setHeader("location", "/TestProjetct-1/myservlet");
/*由於上面這種方法重定向太過麻煩,所以封裝了一個重定向的方法*/
response.sendRedirect("/TestProjetct-1/myservlet");

/*定時刷新重定向*/
response.setHeader("refresh", "5;url=http:///www.baidu.com");

/*設置響應體*/
/*1.通過write方法來寫*/
/*response.getWrite().write("要寫的內容")*/
/*默認情況下寫的中文內容會亂碼:因爲把寫的內容存到緩衝區中使用的是ISO8859,而ISO8859不支持中文*/
/*在存取之前設置存放的編碼*/
response.setCharacterEncoding("utf-8");
/*告訴瀏覽器使用的是UTF-8編碼*/
/*response.setHeader("Content-Type", "text/html;charset=utf-8");*/
/*使用封裝的方法*/
response.setContentType("text/html;charset=utf-8");
response.getWriter().write("哈哈哈");

/*2.使用OutPutStream來寫*/
/*FileInputStream*/
		
//read方法讀取一個字節
//1.把指定的文件轉成二進制流
FileInputStream in = new FileInputStream("/TestProjetct-1/helong.txt");
//2.讀取一個字節,讀取的結果是一個int類型的assic碼
//讀到文件結尾的時候,返回的是一個-1
System.out.println(in.read());
System.out.println(in.read());
System.out.println(in.read());
System.out.println(in.read());
System.out.println(in.read());
System.out.println(in.read());
in.close();
		
//一次讀多個字節,並存放到數組中
byte[] buffer = new byte[10];
System.out.println(Arrays.toString(buffer));
//返回的是讀取了幾個字節
int count = in.read(buffer);
System.out.println(count);
System.out.println(Arrays.toString(buffer));
in.close();		
		
//讀取全部數據
//一次性讀取多個字節放到數組中
byte[] buffer = new byte[5];
//每次取多少個字節
int len = 0;
while ((len = in.read(buffer))>0) {
	System.out.println(new String(buffer,0,len));
}
in.close();		
		
/*文件輸出流 FileOutPutStream*/
/*write();一次寫一個字符
* write(buffer) 一次寫多個字符
* write(buffer,o,len) 一次寫指定個數的字符
*/
		
		
/*response使用注意點:getWrite()和getOutPutStream不能同時調用*/
		


 

 

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