Servlet 的使用流程
- 设置请求编码格式
- 设置响应编码格式
- 获取请求信息
- 处理请求信息
- 响应处理结果
数据流转流程
浏览器—(发出请求)—>服务器----(查询数据库有无此数据)—>数据库
浏览器<—(响应请求)—服务器<—(响应并传递数据)----数据库
四大作用域
四大作用域分别是:
①page域:作用在一个页面中
②request域:作用在一个请求中,只要request不重定向,数据就不会失效
③session域:作用在一个会话中,只要用户不退出,数据就不会失效
④application域:ServletContext,他就是application域,范围贯穿整个web应用
不管是page、request、session、application四个对象都可以在各自的作用域里存值(setAttribute()方法)、删值(removeAttribute()方法)、取值(getAttribute())。
介绍servletContext对象
1.ServletContext,是一个全局的储存信息的空间,服务器开始,其就存在,服务器关闭,其才释放。request,一个用户可有多个;session,一个用户一个;而servletContext,所有用户共用一个。所以,为了节省空间,提高效率,ServletContext中,要放必须的、重要的、所有用户需要共享的线程又是安全的一些信息。
2.获得serveltContext对象
方式一
request.getServletContext();
方式二 (HttpServlet继承)
this.getServletContext()
3.ServletContext:作用范围在整个web应用中有效!
常用方法:
保存数据:void setAttribute(java.lang.String name, java.lang.Object object)
获取数据:java.lang.Object getAttribute(java.lang.String name)
删除数据:void removeAttribute(java.lang.String name)
3.利用ServletContext读取资源文件
首先要在webroot下边创建一个文件夹file,然后再file中创建一个p.properties 文件
//第一种方式
Properties pro = new Properties();
pro.load(this.getServletContext().getResourceAsStream("/file/p.poperties"));
String name = pro.getProperty("name");
String address = pro.getProperty("address");
response.getWriter().print(name+":"+address);
方式二
通过String getRealPath(String path)方法可以通过相对路径获得绝对路径,然后就可以同输入流来读资源。(直接使用输入流是不可以的,因为其相对的路径是jdk的bin目录)
//第二种方式
String path = this.getServletContext().getRealPath("/file/p.poperties");
Properties pro = new Properties();
pro.load(new FileInputStream(path));
String name = pro.getProperty("name");
String address = pro.getProperty("address");
response.getWriter().print(name+"::"+address);