jsp内置对象和作用

📅 2026/7/16 1:35:02
jsp内置对象和作用
JSP 内置对象是容器自动实例化、无需手动 new 即可直接使用的对象共 9 个分别对应不同作用域、请求、响应、会话、全局上下文、输出、异常、页面配置、页面对象。本文在原有基础上补充完整定义、作用域、常用方法、使用场景、代码示例、区分对比。九大内置对象总览表表格内置对象名所属类作用域核心用途requestHttpServletRequestpage/request获取客户端 HTTP 请求数据responseHttpServletResponsepage向客户端输出响应、重定向outJspWriterpage页面输出文本、HTML 内容sessionHttpSessionsession存储单用户会话数据applicationServletContextapplication全局项目共享数据pageContextPageContextpage统一管理所有内置对象、域数据configServletConfigpage获取当前 JSP/Servlet 配置参数pageObjectpage当前 JSP 页面实例等价 thisexceptionThrowablepage捕获页面异常仅错误页可用1. request 对象HttpServletRequest1. 基础定义类型javax.servlet.http.HttpServletRequest作用代表客户端 HTTP 请求对象封装浏览器发送给服务器的全部数据。核心功能获取前端提交参数GET/POST 表单、URL 参数获取请求头、客户端 IP、请求方式、URL 地址请求域存取值request作用域单次请求有效请求转发getRequestDispatcher()常用方法java运行// 获取表单参数 String username request.getParameter(username); // 获取同参数多值复选框 String[] hobbys request.getParameterValues(hobby); // 请求域存值 request.setAttribute(key, value); // 请求域取值 Object data request.getAttribute(key); // 请求转发服务器内部跳转地址栏不变 request.getRequestDispatcher(/target.jsp).forward(request,response); // 获取客户端IP request.getRemoteAddr(); // 获取请求方式 GET/POST request.getMethod();生命周期一次完整请求结束request 对象销毁。2. response 对象HttpServletResponse1. 基础定义类型javax.servlet.http.HttpServletResponse作用代表服务器响应对象用于向浏览器返回数据、控制响应行为。核心功能页面重定向客户端跳转地址栏改变设置响应编码、ContentType、Cookie文件下载、输出二进制流设置响应状态码 404/200/302常用方法java运行// 重定向 response.sendRedirect(login.jsp); // 设置编码 response.setContentType(text/html;charsetutf-8); // 添加Cookie Cookie cookie new Cookie(token,123456); response.addCookie(cookie); // 设置状态码 response.setStatus(404);转发 vs 重定向区别request 转发服务器内部一次请求共享 request 数据response 重定向两次请求浏览器地址改变数据丢失3. out 对象JspWriter1. 基础定义类型javax.servlet.jsp.JspWriter继承java.io.Writer作用页面输出流向浏览器打印文字、HTML 标签。核心功能输出文本、变量、HTML 代码缓冲区刷新、清空缓冲区控制输出换行常用方法java运行// 输出内容 out.print(用户名); out.println(username); // 自动换行 // 刷新缓冲区强制输出到页面 out.flush(); // 清空缓冲区未输出内容 out.clear();补充说明JSP 中% 变量 %底层等价于out.print(变量)。 out 带有缓冲区数据不会立刻发送浏览器满缓冲区或调用 flush 才输出。4. session 对象HttpSession1. 基础定义类型javax.servlet.http.HttpSession作用用户会话对象区分不同浏览器用户保存单个用户全程数据。核心功能会话域存取值整个浏览器会话有效获取会话 ID、设置会话过期时间手动销毁会话退出登录常用方法java运行// 存储用户登录信息 session.setAttribute(loginUser,user); // 获取登录用户 Object user session.getAttribute(loginUser); // 销毁会话退出登录 session.invalidate(); // 设置会话超时时间秒 session.setMaxInactiveInterval(1800); // 获取唯一会话标识 session.getId();生命周期浏览器打开网站创建 session关闭浏览器 / 超时 / 手动销毁后失效。 同一浏览器多标签页共享同一个 session。5. application 对象ServletContext1. 基础定义类型javax.servlet.ServletContext作用全局上下文对象整个 Web 项目唯一共享对象所有用户共用。核心功能全局共享数据网站在线人数、全局配置获取项目真实路径、全局初始化参数项目全局监听、资源读取常用方法java运行// 全局存值所有用户可见 application.setAttribute(onlineCount,count); // 获取全局数据 Integer count (Integer) application.getAttribute(onlineCount); // 获取项目磁盘真实路径 String path application.getRealPath(/); // 获取web.xml全局参数 application.getInitParameter(siteName);生命周期服务器启动时创建服务器关闭才销毁生命周期最长。注意多用户同时修改 application 共享数据会存在线程安全问题需要加锁。6. pageContext 对象PageContext1. 基础定义类型javax.servlet.jsp.PageContext作用页面上下文总管JSP 内置对象的统一入口管理四大作用域。核心功能一键获取其余 8 大内置对象跨四大作用域存取数据page/request/session/application页面转发、异常抛出常用方法java运行// 获取其他内置对象 HttpServletRequest req pageContext.getRequest(); HttpSession ses pageContext.getSession(); // 向指定域存值 pageContext.setAttribute(msg,页面数据,PageContext.PAGE_SCOPE); pageContext.setAttribute(msg,请求数据,PageContext.REQUEST_SCOPE); // 自动从小到大作用域查找属性 Object val pageContext.findAttribute(msg); // 页面转发 pageContext.forward(index.jsp);四大作用域常量PAGE_SCOPE当前页面有效REQUEST_SCOPE一次请求有效SESSION_SCOPE当前用户会话有效APPLICATION_SCOPE全局项目有效定位pageContext 是域对象工具类作用最小仅当前 JSP 页面可用。7. config 对象ServletConfig1. 基础定义类型javax.servlet.ServletConfig作用当前 JSP 对应的 Servlet 配置对象读取 web.xml 中当前页面初始化参数。核心功能获取当前 JSP/Servlet 名称读取局部初始化参数仅当前页面可用常用方法java运行// 获取单个初始化参数 String uploadPath config.getInitParameter(uploadPath); // 获取所有参数名 EnumerationString names config.getInitParameterNames(); // 获取Servlet上下文等价application ServletContext ctx config.getServletContext();配置示例 web.xmlxmlservlet servlet-nameindex/servlet-name jsp-file/index.jsp/jsp-file !-- 当前页面局部参数 -- init-param param-nameuploadPath/param-name param-value/upload/param-value /init-param /servlet区分config局部参数仅当前 JSP/Servletapplication全局参数整个项目所有页面8. page 对象Object1. 基础定义类型java.lang.Object作用代表当前 JSP 页面实例等价于 Java 中的this。核心功能调用当前页面定义的方法、属性Object 通用方法toString ()、equals () 等使用示例jsp% page.toString(); // 等价于 this.toString(); %限制作用域仅为 PAGE_SCOPE只在当前 JSP 页面内有效项目开发极少使用。9. exception 对象Throwable1. 基础定义类型java.lang.Throwable作用捕获页面运行时抛出的异常仅错误处理页面可用。使用前提当前 JSP 页面指令必须设置jsp% page isErrorPagetrue %普通页面无此对象直接使用会报空指针。核心方法java运行// 获取异常信息 String msg exception.getMessage(); // 打印异常堆栈 exception.printStackTrace(); // 获取异常类型 exception.getClass();使用场景统一错误页面 error.jsp捕获所有页面跳转过来的异常并展示。跳转配置示例jsp% page errorPageerror.jsp %当前页面出错自动转发到 error.jspexception 携带异常信息。四、四大作用域对比结合九大对象page 域pageContext /page 范围仅当前 JSP 页面页面刷新 / 跳转立即失效request 域request 范围一次请求转发有效重定向失效session 域session 范围单个用户浏览器会话关闭浏览器失效application 域application 范围整个 Web 服务器所有用户共享服务器重启销毁五、使用优先级建议页面临时变量 → page 域页面间单次传参 → request 域用户登录状态、个人信息 → session 域网站全局统计、公共配置 → application 域输出内容 → out接收前端参数 → request页面跳转、返回数据 → response统一操作域对象 → pageContext局部配置参数 → config全局配置参数 → application统一异常捕获 → exception错误页