<%-- 静态包含 --%> <%-- 动态包含 --%> <%-- 转发 --%>
1)静态包含--很常用
代码语言:javascript复制<%@ include file="" %>
静态包含是把包含的页面内容原封装不动的输出到包含的位置。
2)动态包含--很少用
代码语言:javascript复制<jsp:include page=""></jsp:include>
动态包含会把包含的 jsp 页面单独翻译成 servlet 文件,然后在执行到时候再调用翻译的 servlet 程序。并把 计算的结果返回。 动态包含是在执行的时候,才会加载。所以叫动态包含。
3)页面转发--常用
代码语言:javascript复制<jsp:forward page=""></jsp:forward>
<jsp:forward 转发功能相当于 request.getRequestDispatcher("/xxxx.jsp").forward(request, response); 的功能
静态包含和动态包含的区别:
在这里需要补充说明一点:我们在工作中,几乎都是使用静态包含。理由很简单。因为 jsp 页面虽然可以写 java 代码,做其他的功能操作。但是由于 jsp 在开发过程中被定位为专门用来展示页面的技术。也就是说。jsp 页面中,基 本上只有 html,css,js。还有一些简单的 EL,表达式脚本等输出语句。所以我们都使用静态包含。
1、什么是 Listener 监听器
什么是监听器?监听器就是实时监视一些事物状态的程序,我们称为监听器。 就好像朝阳群众?朝阳区只要有哪个明星有什么不好的事,他们都会知道,然后举报。 那么朝阳群众就是监听器,明星就是被监视的事物,举报就是响应的内容。
又或者说是,电动车的报警器。当报警器锁上的时候。我们去碰电动车,电动车就会报警。 报警器,就是监听器,电动车就是被监视的对象。报警就是响应的内容。
2、ServletContextListener 监听器
代码语言:javascript复制javax.servlet.ServletContextListener ServletContext 监听器
监听器的使用步骤。
第一步:我们需要定义一个类。然后去继承生命周期的监听器接口。
第二步:然后在 Web.xml 文件中配置。
ServletContextListener 监听器,一定要在 web.xml 文件中配置之后才会生效
代码语言:javascript复制<listener>
<listener-class>全类名</listener-class>
</listener>
生命周期监听器两个方法:
代码语言:javascript复制public void contextInitialized(ServletContextEvent sce)
是 ServletContext 对象的创建回调
public void contextDestroyed(ServletContextEvent sce)
是 ServletContext 对象的销毁回调
代码语言:javascript复制import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
public class ServletContextListenerImpl implements ServletContextListener {
@Override
public void contextInitialized(ServletContextEvent sce) {
System.out.println("ServletContext 对象被创建了");
}
@Override
public void contextDestroyed(ServletContextEvent sce) {
System.out.println("ServletContext 对象被销毁了");
}
}
在 web.xml 文件中的配置如下:
代码语言:javascript复制<listener>
<listener-class>com.atguigu.listener.RequestListener</listener-class>
</listener>
这个时候,启动 web 工程和正常停止 web 工程,后台都会如下打印: