1.ServletContext对象介绍和获取
ServletContext 对象:
问题:
Request 解决了一次请求内的数据共享问题,session 解决了用户不同请求的数据共享问题,那么不同的用户的数据共享该怎么办呢?
解决:
使用 ServletContext 对象
作用:
解决了不同用户的数据共享问题
原理:
ServletContext 对象由服务器进行创建,一个项目只有一个对象。不管在项目的任意位置进行获取得到的都是同一个对象,那么不同用户发起的请求获取到的也就是同一个对象了,该对象由用户共同拥有。
特点:
服务器进行创建用户共享
一个项目只有一个
生命周期:
服务器启动到服务器关闭
作用域:
项目内
使用:
获取 ServletContext 对象
使用作用域进行共享数据流转
获取 web.xml 中的全局配置
获取 webroot 下项目资源流对象
获取 webroot 下资源绝对路径
创建ServletContext对象三种方式
ServletContext sc1 = this.getServletContext();
ServletContext sc2 =this.getServletConfig().getServletContext();
ServletContext sc3=req.getSession().getServletContext();
存储用户共享数据
sc.setAttribute(String name,Object value);
获取用户共享数据
sc.getAttribute(String name);
删除共享数据
sc.removeAttribute(String name);
获取web.xml中的全局配置属性
作用:将部分动作和源文件进行解耦,我们只需要在xml配置文件中进行相关配置就会改变代码的执行效果。
sc.getInitParameter(String name);注意返回的是String类型数据
获取webRoot下的资源流对象
sc.getResourceAsStream(String path);
注意:
path为相对路径,写从webRoot开始查找资源的路径即可。
获取webRoot下的资源绝对路径
sc.getRealPath(String path);
注意:
path为相对路径,写从webRoot开始查找资源的路径即可。
示例:
ServletContextA.java
public
ServletContextB.java
import
web.xml配置信息
<?xml version="1.0" encoding="UTF-8"?>
2.ServletContext对象实现网页访问计数次数
LoginServlet
package
UserServlet
import
MainServlet
package
NumServlet
package
web.xml配置信息
<servlet>
3.ServletConfig 对象
问题:
使用 ServletContext 对象可以获取 web.xml 中的全局配置文件,在 web.xml 中
每个 Servlet 也可以进行单独的配置,那么该怎么获取配置信息呢?
解决:
使用 ServletConfig 对象
作用:
ServletConfig 对象是 Servlet 的专属配置对象,每个 Servlet 都单独拥有一个 ServletConfig 对象,用来获取 web.xml 中的配置信息。
使用:
获取 ServletConfig 对象
获取 web.xml 中 servlet 的配置信息
import
web.xml配置信息
<servlet>
4.用数据库连接的登录案例
在数据库中创建userInfo表添加数据
创建项目包
pojo实体类
package
UserInfoDao
package
UserInfoDaoImpl
import
UserInfoService
package
UserInfoServiceImpl
import
TestUserinfoService测试
package
查询数据库中是否存在想要查询的数据
LoginServlet
import
DoLoginServlet
import
IndexServlet
package
LogoutServlet
import
web.xml
<?xml version="1.0" encoding="UTF-8"?>