Servlet深入(二)

Servlet 的使用流程

  1. 设置请求编码格式
  2. 设置响应编码格式
  3. 获取请求信息
  4. 处理请求信息
  5. 响应处理结果

 

数据流转流程

浏览器—(发出请求)—>服务器----(查询数据库有无此数据)—>数据库
浏览器<—(响应请求)—服务器<—(响应并传递数据)----数据库

 

四大作用域
四大作用域分别是:

①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()

取得服务的相关信息
n System. out .println ( this .getServletContext (). getServerInfo ());
获得 web 应用的根目录
n System. out .println ( this .getServletContext (). getContextPath ());

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)

数据共享
ServeltDemo1:
this .getServletContext().setAttribute("address", "chengdu");
ServeltDemo2:
String address = (String) this .getServletContext().getAttribute("address");

3.利用ServletContext读取资源文件 

 首先要在webroot下边创建一个文件夹file,然后再file中创建一个p.properties         文件 

方式一:
1. 创建配置文件  properties
2. 利用 InputStream   getResourceAsStream ( String path) (注意这里的 path 应该是发布后的如 /WEB-INF/classes )获得一个输入流 , 是相对于 web 应用的根目录
3. 然后 我们以前学过的 Properties 来对文件中的键值(会 用到 load ( InputStream inStream ) String getProperty ( String key)
Ex

//第一种方式

  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)方法可以通过相对路径获得绝对路径,然后就可以同输入流来读资源。(直接使用输入流是不可以的,因为其相对的路径是jdkbin目录)

//第二种方式

  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);

 

 

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值