上下文对象-请求对象(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不能同时调用*/
		


 

 

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