一、JSP回顾
我们都知道,Java 是面向对象的语言,我们的操作都是面向对象的操作。我们需要先 new 对象,再使用对象。
JSP 内置对象
- JSP 本质就是 Servlet ,Servlet 就是一段 Java 代码。
- 内置对象,就是 JSP 帮我们创建好的对象,我们直接用,不用 new,JSP 自带的。
二、JSP九个内置对象
2.1 概述
其实我们可以这么想,JSP 本质就是 Servlet ,而 JSP 的作用就是用来和用户交互的,那么是不是 JSP 的内置对象其实就是 Servlet 中用来和用户交互的对象呢?或者说,JSP 的内置对象在一定程度上和 Servlet 的对象由很大关系。
- request:表示一次请求,这个对象来自于 Servlet 中的 HttpServletRequest 。
- response:表示一次响应,这个对象来自于 Servlet 中的 HttpServletResponse 。
- pageContext:页面上下文,可以获取页面信息(类比 servletContext),这个对象来自于 Servlet 中的 PageContext。
- session:表示一次回话(打开浏览器,客户端不断访问同一个地址直接关闭浏览器),一般用来保存用户信息,来自 Servlet 的 HttpSession 。
- application:表示当前 Web 应用,全局对象,保存所有用户共享信息,来自于 ServletContext 。
- config:表示当前 JSP 对应 Servlet 的ServletConfig 对象,获取当前 Servlet 对象。
- out:表示向浏览器输出数据,想想 index.jsp 转化为 index_jsp.java 后,里面的 out.write() 语句,来自 JspWriter。
- page:表示 JSP 对应的 Servlet 对象,来自于 Servlet。
- exception:表示 JSP 页面发生的异常,来自 Exception。
常用的就是 request、response、session、application、pageContext。
2.2 request 常用方法
在浏览器的地址栏输入 url ,然后或者,或者使用 Postman 发送,都是一次请求。把这次请求封装为 request,request 里面包含了本次请求的全部信息。常用方法如下:
-
String getParameter(String key) 获取客户端传来的参数。
<%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>内置对象request</title> </head> <body> <% String idStr = request.getParameter("id"); Integer id = Integer.parseInt(idStr); String requestMethod = request.getMethod(); %> <h2>我们通过 url 拿到的数据是</h2> id=<%=id%> <h2>我们的请求方式是</h2> method=<%=requestMethod%> </body> </html>
-
void setAttribute(String key, Object value) 通过键值对的形式保存数据。
-
Object getAttribute(String key) 通过 key 取出 value。
-
源jsp文件
<% String idStr = request.getParameter("id"); Integer id = Integer.parseInt(idStr); id+=1; // 将数据存入到 request 中 request.setAttribute("number",id); // 将请求转发给 myobject2.jsp request.getRequestDispatcher("myobject2.jsp").forward(request,response); String requestMethod = request.getMethod(); %>
-
目标jsp文件
<% Integer number = (Integer)request.getAttribute("number"); %> <%=number%>
-
我们在浏览器请求源 jsp 文件(
http://localhost:8080/myobject.jsp?id=1
),服务器会把 目标 jsp 文件中的内容返回给浏览器,结合上面图理解一下。在这个过程中,源 jsp 文件只是一个过渡作用。
-
-
RequestDispatcher getRequestDispatcher(String path) 返回一个 RequestDispatcher ,该对象的 forward 方法用于转发请求。
-
String[] getParameterValues() 获取客户端传来的同名参数
-
url:
http://localhost:8080/myobject.jsp?name=123&name=tom&name=java
,url中有多个 name 键值对 -
<% String[] names = request.getParameterValues("name"); %> <%=Arrays.toString(names)%> <%-- 输出 [123, tom, java] --%>
-
-
void setCharacterEncoding(String charset) 指定每个请求的编码。
request.setCharacterEncoding("UTF-8");