ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
[TOC] # jsp内置/隐式对象(9个) jsp被翻译成servlet之后,service方法中有9个对象定义并初始化完毕,我们在jsp 脚本中可以直接使用这9个对象 在翻译后的servlet页面有这个 ![](https://box.kancloud.cn/c835e8e60bce8435056662e1d0011bb6_864x416.png) 动态获取虚拟目录 ~~~ ${pageContext.request.contextPath} ~~~ | 名称 | 类型 | 描述 | | --- | --- | --- | | out | javax.servlet.jsp.JspWriter | 用于页面输出 | | request | javax.servlet.http.HttpServletRequest | 得到用户请求信息 | | response | javax.servlet.http.HttpServletResponse | 服务器向客户端的回应信息 | | config | javax.servlet.ServletConfig | 服务器配置,可以取得初始化参数 | | session | javax.servlet.http.HttpSession | 用来保存用户信息 | | application | javax.servlet.ServletContext | 所有用户的共享信息 | | page | java.lang.Object | 指当前页面转换后的Servlet类的实例 | | pageContext | javax.servlet.jsp.PageContext | jsp的页面容器 | | exception | java.lang.Throwable | 表示jsp页面所发生的异常,在错误页面中才起作用 | ## exception exception是获取上个页面错误信息 ~~~ <% exception.getMessage(); %> ~~~ ## out out的类型:JspWriter out作用就是想客户端输出内容----out.write() out缓冲区默认8kb 可以设置成0 代表关闭out缓冲区 内容直接写到response缓冲器 8k大小,是在page指令那buffer设置 tomcat默认会对response缓存区获取内容,最终都要写到response缓冲区 ![](https://box.kancloud.cn/b83b7942edd501ad829ac2b7df002844_910x421.png) ![](https://box.kancloud.cn/96204874357e3bcd7eb8d620a06e1b3e_516x389.png) ## pageContext jsp页面的上下文对象,作用如下: page对象与pageContext对象不是一回事 1. pageContext是一个域对象 可以在当前页面中共享数据 跳转页面后,page域对象失效 ~~~ setAttribute(String name,Object obj) getAttribute(String name) removeAttrbute(String name) ~~~ pageContext可以向指定的其他域中存取数据 ~~~ setAttribute(String name,Object obj,int scope) //第三参数用 PageContext.XX 来获取 getAttribute(String name,int scope) removeAttrbute(String name,int scope) findAttribute(String name) ~~~ ~~~ <body> 111 <!-- 然后是这个 --> <% pageContext.setAttribute("1",2); %> <% Object i = pageContext.getAttribute("1"); out.write(i.toString()); //第三是这个 response.getWriter().write("aaa");//先输出这个 %> <%="ddddd" %><!-- 最后是这个 --> </body> ~~~ **---依次从pageContext域,request域,session域,application域中获取属性,在某个域中获取后将不在向后寻找** 2. **可以获得其他8大隐式对象** ~~~ 例如: pageContext.getRequest() pageContext.getSession() ~~~ # 四大域对象 **四大作用域的总结: page域:当前jsp页面范围 request域:一次请求 session域:一次会话 application域:整个web应用** # servlet和jsp配合 servlet ~~~ @Override protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //设置请求编码 request.setCharacterEncoding("UTF-8"); ArrayList<String> arrayList = new ArrayList<>(); arrayList.add("1"); arrayList.add("2"); request.setAttribute("list", arrayList); request.getRequestDispatcher("/index.jsp").forward(request, response); } ~~~ 然后在对应的jsp页面 ~~~ <% List<String> list = (List<String>) request.getAttribute("list"); %> <%=list.toString() %> ~~~