大家好,今天来分享一下servletContext 作用
关于 servletContext 对象, 他代表是整个web 项目,他可以和servlet 或者程序的容器进行通信
同时也可以管理web项目
当一个web项目当中有很多servlet, 那这些servlet之间需要通信
就要使用到servletContext 对象来负责
在java文件夹下
package test02;import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;public class FirstServlet extends HttpServlet {@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {// super.doPost(req, resp);System.out.println("你好");}@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {// super.doGet(req, resp);}
}
设置tomcat
会自动跳出这个页面
servletContext 对象
就是一个web容器(像tomcat)在启动的时候,每一个web应用都有一个servletContext 对象,负责管理整个web容器,它也表示当前的web应用
// this.getInitParameter() 初始化参数
//this.getServletConfig() servlet 配置
//this.getServletContext() servlet上下文
这是截图:(以及它具体的摆放位置)
这几个属性百度上都有
this.getServletContext()
是我们今天的关键
servletContext 对象主要的功能:
一. 数据共享(可以让你在一个servlet当中获取到另一个servlet当中的数据)
这句话可能不太好懂
可以看前面的博客
在这里也可以说一下,单个的servlet程序创建过程
在idea当中新建一个webapps模板的maven项目(这个不强求,只是为了方便)
导入相关依赖
写一个类,例如FirstServlet,让他继承HttpServlet 这个类
写对应的方法(dopost,doget 这两个)
在web.xml 文件中进行注册
注意看它的位置
我们要在web.xml 里面去进行注册
这是在web.xml 里面写的东西
hello test02.FirstServlet
hello /hello
完成之后这个web.xml 的文件就不需要动它了
servlet的代码部分也完成了
接下来我们要配置tomcat服务器
idea配置tomcat服务器看我这个就可以了
接下来我们启动tomcat ,让tomcat把我们的servlet程序在浏览器上进行展示
就是这样
看效果
到这里,我们一个最简单的servlet 程序 就好了
这就是一个单个的servlet程序的创建过程
然而,在一个项目当中,可以有多个servlet程序(只需要重复上面的操作就可以了)
在这里有一个`注意点
就是一个web.xml 文件当中可以同时注册多个servlet程序
在一个项目当中也不会只有一个servlet程序
我们今天要说的这个servletContext 对象就是用来管理各个servlet程序
也可以全局(也就是架构的角度上来看),就是这个样子
再说的白一点,你想创建多少个servlet程序 ,就在web.xml 这个文件里面注册多少个就可以了
接下来,我们看一下
package test02;import javax.servlet.Servlet;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;public class FirstServlet extends HttpServlet {@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {// super.doPost(req, resp);ServletContext context=this.getServletContext(); //上下文String username = "帅哥"; //这个赋值为中文context.setAttribute("user",username); //将赋值放到相应的对象当中//这个我们写的一个 ServletContext实例//在这里做个演示//我们在这个把context 对象放到这个类里面//我们就相当于在这个类里写了数据,FirstServlet这个类是一个servlet程序}@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
// super.doGet(req, resp);}
}
`
接下来再写一个类(它属于另外一个servlet程序)
这个类创建好了之后,啥也不用管,先让它继承HttpServlet 这个类
之后写dopost ,doget 这两个方法
package test02;import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;public class SecondServlet extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {// super.doGet(req, resp);}@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {// super.doPost(req, resp);}
}
在SecondServlet这个类里获取FirstServlet的context所设置的数据
package test02;import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;public class SecondServlet extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {// super.doGet(req, resp);ServletContext context =this.getServletContext();String username ="帅哥";context.setAttribute("username",username);resp.setContentType("text/html");resp.setCharacterEncoding("utf-8");resp.getWriter().print("名字" +username);}@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {// super.doPost(req, resp);}
}
在web.xml文件当中对SecondServlet 进行注册
hello2 test02.SecondServlet
hello2 /hello2
完整的web.xml的文件内容是这样的
hello test02.FirstServlet hello /02 hello2 test02.SecondServlet
hello2 /hello2
之后启动Tomcat服务器
servletContext 对象赋予的数据是在FirstServlet类
然而,servletContext 对象的取值与访问工作被放在了SecondServlet类当中
而*FirstServlet类这个类和SecondServlet 这个类属于两个不同的servlet程序*
(这一条是重点)
这个小案例就是证明,servletContext 对象具有数据共享的特征
好了,有关于servletContext 对象的解释就到这里了,谢谢大家