九大内置对象 / 九大隐式对象
|
对象 | 翻译 | 内容 |
---|---|---|
out | 出去 | 带有缓冲的响应对象,效率高于response对象 |
pageContext | 页面上下文 | 封存了当前jsp的运行信息,作用于当前的页面 |
request | 请求 | 封存当前请求的对象,有Tomcat服务器创建,一次请求 |
session | 会话 | 用于存储不同请求的共享数据,一次会话 |
application | 申请 | 是ServletContext对象,一个项目只有一个,存储用户共享数据的对象,以及完成其他操作 |
response | 响应 | 用于响应请求处理结果给浏览器的对象。设置响应头,重定向 |
|page|页面|相当于java的this|
|exception|异常|存储当前异常的信息|
|confing|配置|也是ServletConfing,主要获取web.xml中的配置文件,完成一些初始化数据读取|
1.out 缓冲影响
<%--
Created by IntelliJ IDEA.
User: love
Date: 2020/4/16
Time: 12:53
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Inert title here</title>
</head>
<body>
<%
// out对象输出缓冲
out.println("firist line <br>");
response.getWriter().println("second line <br>");
%>
</body>
</html>
2.pageContext 获取对象获取request对象
<%--
Created by IntelliJ IDEA.
User: love
Date: 2020/4/16
Time: 13:06
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>insert title here</title>
</head>
<body>
<%
HttpServletRequest req = (HttpServletRequest) pageContext.getRequest();
String ip = request.getRemoteAddr();
out.println("本机的IP地址为"+ip);
%>
</body>
</html>
四大作用域
对象 | 内容 |
---|---|
application | 作用于整个web,对于每个页面Servlet多有效,通过setAributeh赋值和getAttrbute取值,application里的变量可以被所有用户共享,当application里的变量做了修改 ,其他户再访问是修改后的值,在application作用域中设置的属性如果不手动调用removeAttribute函数进行删除的话,那么application中的属性将永远不会删除,如果Web容器发生重启,此时application范围内的所有属性都将丢失。 |
session | 作用:当前会话有效。当向服务器发送第一个请求开始,只要页面不管闭,或者会话未过期(默认30分钟),通过setMaxlnactivelnterval(int)方法进行设置,或者通过invalidate()方法强制结束会话,通过setAttribute赋值和getAttribute取值 |
reguest | request可以通过setAttribute()和getAttribute方法存取值实现页面中的信息传递,也可以通过forward()方法进行页面间的跳转(需要注意的是request是转发不是重定向,转发相对于浏览器来说是透明的,也就是无论页面如何跳转,地址栏上显示的依旧是最初的地址,浏览器感知不到),在这些转发页面中都可以使用request中存储的信息。 |
page | 作用:当前页面 |
三大核心标签库
page | 页面指令 |
---|---|
lnclude | 包含指令 |
taglib | 标签仓库 |
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="c" uri="http:// java.sun.com/jsp/jstl/cre" %>
<%@include file="out.jsp"%>
Servlet 的生命周期
import javax.servlet.*;
import java.io.IOException;
/**
* 类能够 实现 接口
* 接口可以继承接口 接口不能实例化 创建对象的过程就是 new的过程
* 因为抽象方法 抽象方法不够具体 没实现类就没法实例化
*
* 抽象方法一定在抽象类中、 抽象 类中 可能没有抽象方法
* 一个类 实现一个接口就必须覆写里面的全部抽象方法
*/
public abstract class BookServlet implements Servlet {
/**
* 专有名词:生命周期
* 1.初始化 产生 / 出生
* 2.服务 使用阶段
* 3.销毁 死亡阶段
*/
@Override
public void init(ServletConfig servletConfig) throws ServletException {
/*
init 出生阶段
*/
}
@Override
public ServletConfig getServletConfig() {
return null;
}
@Override
public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
/*
service 服务 / 使用阶段
*/
}
@Override
public String getServletInfo() {
return null;
}
@Override
public void destroy() {
/*
destory 销毁 (关闭浏览器:不用了就执行了销毁阶段)
*/
}
}