ServletContext:联系上下文,一个项目通用一个context,作用域:整个项目
用法:Servlet里面直接应用,tomcat帮我们自动创建。
获取ServletContext:getServletContext()
ServletContext sc = getServletContext();
方法:
1.设置数据,以键值对的形式设置
getServletContext().setAttribute("name","rose");
2.获取数据,以键名获取
getServletContext().getAttribute("name");
3.移除设置的数据,以健名移除
getServletContext().removeAttribute("name");
注意:ServletContext最强大的地方时全局通用性,简单来说我再 A Servlet中设置数据,可以在 B Servlet中获取这个数据,可以在 C Servlet中移除这个数据。
4.获取项目中任何文件
方法:
getRealPath("路径")
①.src根目录下的文件的获取:
"/WEB-INF/classes/src下的file.txt"
②.web根目录下的文件的获取
"/web下的文件.txt"
③.web-inf根目录下的文件的获取
"/WEB-INF/web-inf下的文件.txt"
扩展目录在哪个目录下的问价要加文件的全路径,如下
getRealPath("/WEB-INF/classes/com/servletContext/src_com包下的文件目录.txt")
5.文件流读取:
InputStream in = getServletContext().getResourceAsStream("/a.jpg"); ServletOutputStream os = response.getOutputStream(); int len=0; byte[] b = new byte[1024]; while((len=in.read(b))!= -1){ os.write(b,0,len); } os.close(); in.close();
注意:此方法读取的文件会占用一整个页面。
6.获取配置信息parama
<context-param>
<param-name>name</param-name>
<param-value>rose</param-value>
</context-param>
获取web.xml的配置信息
String name = servletContext.getInitParameter("name");
解决乱码问题:
也可以指定格式为GBK格式
response.setCharacterEncoding("GBK");
也可以设置为utf-8:
如果是文本就设置参数为 text/html 发给客户端的是 jpeg格式的图像数据,则参数是 image/jpeg
response.setContentType("text/html;charset=utf-8");
设置前一种格式不会破坏servlet格式,后一种会把多行输出变成一行
7.设置响应行 状态码:200表示成功,500表示出现异常,404原因很多,通常是tomcat自己设置,我们几乎不会调用。
此状态码只是描述,无法真实反应状态。
response.setStatus(200);
8.添加和设置头信息
添加头信息:添加头信息键值对,键可以重复,添加多个相同的显示多个相同的。
addHeader(key,value)
设置头信息:键是唯一的,重复的键后面覆盖前面
setHeader(key,value)
9.自动跳转:参数 "Refresh"(固定的表示刷新) , "5(跳转时间单位秒) ; URL (跳转的目标地址)"
response.setHeader("Refresh","5;URL=https://host/path");
10.重定向