ServletContext 上下文对象 了解

用于关联多个Servlet
是多个Servlet之间 通信的桥梁, 用于多个Servlet之间信息的共享 等等 !

ServletContext 在JSP技术中, 我们称其为 application

我们的tomcat 在启动时, 会为每一个项目创建且仅创建一个ServletContext对象 ! 在服务器关闭或应用被卸载时, 对象会被销毁 !

我们在项目的Servlet中, 可以通过一些方法, 得到这个对象, 并进行数据的存储 , 修改, 删除,获取等操作!

如何从Servlet中 得到一个ServletContext对象

在Servlet中, 通过getServletContext方法 获取上下文对象

格式:
ServletContext context = getServletContext();

ServletContext 常用方法

  1. 设置&替换数据
    context.setAttribute(String key, value);

  2. 获取数据
    value = context.getAttribute(String key);

  3. 删除数据
    context.removeAttribute(String key);

  4. 获取项目运行时所在的文件路径
    String 路径 = context.getRealPath(\"/\");

ServletContext 获取应用初始化时 配置文件中的数据

我们可以在web. 中 , 向ServletContext 添加初始化的数据

在web. 中添加数据:

key 值

注意: 上述的节点可以配置多个

获取数据的方法:

String value = context.getInitParameter(String key);

获取所有的key
String[] arr = context.getinitParameterNames();

ServletConfig 对象 了解

是一个Java类 , 每一个Servlet都拥有一个ServletConfig对象

获取对象的两种方式 (这两种方式是互斥的):

1.  在Servlet中,通过getServletConfig() 获取 !
2.  通过重写init方法, 使用参数列表中的config对象 !

我们可以通过web. 向每一个servlet添加配置的信息 , 在Servlet中可以通过servletconfig得到这些配置信息 !

格式:




key


通过ServletConfig如何获取初始化的参数数据
String value = config.getInitParameter(String key);

获取所有的key
String[] arr = context.getinitParameterNames();

Servlet 创建时机

web. 中 serlvet的配置中

可以通过 节点 来指定Servlet启动顺序

当节点值为负数 或 不写时 , 表示当用户第一次请求时, 创建此Servlet !
当节点值等于0或大于0时, 在Tomcat启动时, 创建此Servlet !

如果存在多个等于0或大于0的Servlet , 启动的顺序是: 值越小越早创建 !
值相同时, 自上而下顺序创建 !

请求重定向 与 请求的转发

请求转发与重定向 在一次业务中 ,可以进行多次 !

请求转发与重定向 , 必须存在结束的操作 ,也就是必须存在响应 !

请求转发 *****

一个web组件 , 将未处理完的请求, 通过tomcat转交给另一个web组件进行处理 !
步骤:

1.  获取请求转发器
    RequestDispatcher rd = request.getRequestDispatcher(\"转发的地址\");
2.  进行转发操作
    rd.forward(request , response);

简写: request.getRequestDispatcher(\"转发的地址\").forward(request , response);

特点:
1. 转发过程中 , 多个web组件之间共享一个请求对象 与 响应对象 !
2. 在转发的流程中, 浏览器只发起了一次请求, 所以浏览器地址不会发生改变 !
3. 转发不能跨项目实现
4. 相较于重定向来说, 效率更高 !

请求重定向 *****

一个web组件, 处理完毕请求后, 告知浏览器, 将请求转向下一个web组件 !

格式:
response.sendRedirect(“重定向的地址”);

原理:
当客户端请求服务器时, 服务器给浏览器响应一个302的状态码, 以及一个location地址

浏览器每接到302的状态码时.  就会自动寻找响应中的location , 并向这个location发起新的请求 !

特点:
1. 产生了两次请求
2. 浏览器地址发生了改变
3. 重定向可以跨服务器实现(例如我们的项目 , 可以将请求重定向至百度)
4. 性能较低

HttpServletRequest 常用的操作:

  • request.getMethod() 得到请求的方式
  • getRequestURI() : 获取请求地址
  • getRemoteAddr() : 获取客户端的ip地址
  • getRemoteHost() : 获取客户端的机器名称
  • getServerName() : 获取服务器的名称
  • getServerPort() : 获取放服务器运行的端口号
  • getQueryString(): 获取GET请求的 网址? 后的字符串

作业:

完成上午编写的作业 !

根据上午编写的用户管理的作业,
完成一个图书管理的作业

收藏 打印