ServletContext 上下文对象 了解
用于关联多个Servlet
是多个Servlet之间 通信的桥梁, 用于多个Servlet之间信息的共享 等等 !
ServletContext 在JSP技术中, 我们称其为 application
我们的tomcat 在启动时, 会为每一个项目创建且仅创建一个ServletContext对象 ! 在服务器关闭或应用被卸载时, 对象会被销毁 !
我们在项目的Servlet中, 可以通过一些方法, 得到这个对象, 并进行数据的存储 , 修改, 删除,获取等操作!
如何从Servlet中 得到一个ServletContext对象
在Servlet中, 通过getServletContext方法 获取上下文对象
格式:
ServletContext context = getServletContext();
ServletContext 常用方法
-
设置&替换数据
context.setAttribute(String key,Object value); -
获取数据
Object value = context.getAttribute(String key); -
删除数据
context.removeAttribute(String key); -
获取项目运行时所在的文件路径
String 路径 = context.getRealPath("/");
ServletContext 获取应用初始化时 配置文件中的数据
我们可以在web.xml中 , 向ServletContext 添加初始化的数据
在web.xml中添加数据:
key 值注意: 上述的节点可以配置多个
获取数据的方法:
String value = context.getInitParameter(String key);
获取所有的key
String[] arr = context.getinitParameterNames();
ServletConfig 对象 了解
是一个Java类 , 每一个Servlet都拥有一个ServletConfig对象
获取对象的两种方式 (这两种方式是互斥的):
1. 在Servlet中,通过getServletConfig() 获取 !
2. 通过重写init方法, 使用参数列表中的config对象 !
我们可以通过web.xml 向每一个servlet添加配置的信息 , 在Servlet中可以通过servletconfig得到这些配置信息 !
格式:
key
值
通过ServletConfig如何获取初始化的参数数据
String value = config.getInitParameter(String key);
获取所有的key
String[] arr = context.getinitParameterNames();
Servlet 创建时机
web.xml中 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请求的 网址? 后的字符串
作业:
完成上午编写的作业 !
根据上午编写的用户管理的作业,
完成一个图书管理的作业