个人博客地址:https://www.vastyun.com
一、什么是内置对象?
在jsp开发中,会频繁使用到一些对象。例如HttSession,ServletContext,HttpServletRequest。如果我们每次要使用这些对象都去创建这些对象,就会显得非常麻烦。所以Sun公司设计Jsp时,在jsp页面加载完毕之后就会自动帮开发者创建好这些对象,从而开发者只需要直接使用这些对象调用方法即可。这些创建好的对象就叫内置对象。
例如:
1 session.getId();
不需要再写HttpSession session;
二、九大内置对象简介
内置对象名 | 类型 |
request | HttpServletRequest |
response | HttpServletResponse |
session | HttpSession |
application | ServletContext |
config | ServletConfig |
out | JspWriter |
page | Object(this) |
exception | Throwable |
pageContext | PageContext |
1.request对象
该对象封装了用户提交的信息,通过调用该对象相应的方法可以获取封装的信息。
request常用的方法:
getParameter(String arg0);//获取对象提交的表单信息。 getProtocol();//获取客户端使用的协议。 getServletPath();//获取客户提交信息的页面。 getMethod();获取客户提交信息的方法。 getHeader(Enumeration args);获取Http头文件。 getRemoteHost();//获取客户机名称。 getServerName();//获取服务器名称。 getServerPort();//获取服务端口号。 //获取客户端提交的所有表单信息所有信息,并输出 Enumeration enums = request.getParameterNames(); while(enums.hasMoreElements()){ String s=(String)enums.nextElement(); String paramValue = getParameter(s); out.write(s+"=" + paramValue); }
2.response对象
对客户的请求作出动态的响应,向客户端发送请求。这个对象中封装了向客户端发送的数据、发送的响应头、响应状态码。
response常用方法:
//通过设置响应头控制浏览器以UTF-8的编码显示数据。 response.setHeader("text/html;charset=utf-8"); //设置页面自动刷新时间,设置每隔3秒刷新一次 response.setHeader("refresh","3"); //设置重定向 response.sendRedirect("http://baidu.com");
3.session对象
用于保存会话数据.
session常用方法:
getId();//获取session的Id值,根据浏览器的请求。 isNew();//判断是否是新的session invalidate();//让session失效 setMaxInactiveInterval(int interval);//设置会话的最大持续时间,单位是秒,负数表明会话永不失效。 getMaxInActiveInterval();//获取会话的最大持续时间。
4.application对象
用于保存所有应用系统中的公有数据,服务器启动并且自动创建application对象以后,只要没有关闭服务器,application对象将一直存在,所有用户可以共享application对象。
5.config对象
用于获取服务器初始化参数。
config常用的方法:
getInitParameter(String name);//获取默认的参数值 getInitParameterNames()//返回枚举类型,获取参数名
6.out对象
JspWiter类实例,用于向客户端发送文本数据,相当于带缓存的PrintWriter。 writer();//将内容写到缓冲区,不是输出到页面。向外写出的条件:缓存区满了;刷新缓存区;关闭缓冲区;执行完jsp页面。默认的缓冲区大小为8kb。 getBufferSize();//获取缓冲区大小 getRemaining();//缓冲区剩余大小 clear();//清除缓冲区的当前内容 flush();//刷新缓冲区,可以将缓冲区的内容展示到jsp页面。 close();//关闭缓冲区
7.page对象
表示当前一个jsp页面,可以理解为一个对象的本身,拜一个jsp当做对象来看待。page对象在开发中几乎不用。
8.exception对象
用于抛出异常,主要用于抛出异常的简短信息,如果一个jsp页面要应用此对象,就必须把isErrorPage设置为true,默认情况下是false。
exception常用方法:
getMessage();//返回描述异常的消息 toString();//返回关于异常的简短描述消息
9.pageContext对象
pageContext对象时jsp技术中重要的一个对象。这个对象不仅封装了对其他8大隐式对象的引用,它自身还是一个域对象。可以用来保存数据。并且这个对象还封装了web开发中经常设计到的一些操作,例如引入和跳转到其他资源,检索其他域对象中的属性等。
通过pageContext获取其他对象
getException方法返回exception隐式对象
getPage方法返回page隐式对象
getRequest方法返回request隐式对象
getResponse方法返回response隐式对象
getServletConfig方法返回config隐式对象
getServletContext方法返回application隐式对象
getSession方法返回session隐式对象
getOut方法返回out隐式对象
三、编码举例page.jsp
1 <%@ page language="java" contentType="text/html; charset=UTF-8" 2 import="java.util.*" 3 isErrorPage="true" 4 pageEncoding="UTF-8"%> 5 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 6 <html> 7 <head> 8 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 9 <title>Insert title here</title> 10 </head> 11 <body> 12 <% 13 //-----------------------request对象应用------------------------ 14 //获取对象提交的表单请求 15 String id = request.getParameter("id");//在地址栏url后面带上参数id=s145 16 //获取客户端使用的协议 17 String portValue = request.getProtocol(); 18 //获取客户提交信息的页面 19 String pagePath = request.getServletPath(); 20 //获取客户提交信息的方法 21 String methodValue = request.getMethod(); 22 //获取http头信息 23 String header = request.getHeader("accept"); 24 //获取客户机名称 25 String remoteValue = request.getRemoteHost(); 26 //获取服务器名称 27 String serverName = request.getServerName(); 28 //获取表单提交的所有信息,并输出 29 Enumeration enums = request.getParameterNames(); 30 while (enums.hasMoreElements()){ 31 //获取参数名 32 String s = (String)enums.nextElement(); 33 //获取参数值 34 String paramValue = request.getParameter(s); 35 //输出参数名和值 36 out.write(s + " = " + paramValue+"<br />"); 37 } 38 //--------------------------response对象应用-------------------- 39 //设置自动刷新时间 40 response.setHeader("refresh", "3"); 41 //获取响应头信息 42 String responseHeader = response.getHeader("refresh"); 43 //设置重定向 44 //response.sendRedirect("http://vastsum.com"); 45 //--------------------------session应用------------------------ 46 //获取sessionId 47 String sid = session.getId(); 48 //判断是否为新session 49 session.isNew(); 50 //让session失效 51 //session.invalidate(); 52 //设置会话的最大持续时间,单位为秒 53 session.setMaxInactiveInterval(60); 54 //获取会话的最大持续时间 55 int nums = session.getMaxInactiveInterval(); 56 //---------------------------out应用--------------------------- 57 //将内容写出缓冲区 58 out.write(id+"<br />"); 59 out.write(portValue+"<br />"); 60 out.write(pagePath+"<br />"); 61 out.write(methodValue+"<br />"); 62 out.write(header+"<br />"); 63 out.write(remoteValue+"<br />"); 64 out.write(serverName+"<br />"); 65 out.write(responseHeader+"<br />"); 66 out.write(sid+"<br />"); 67 out.write(nums+"<br />"); 68 //获取缓冲区大小 69 out.getBufferSize(); 70 //获取缓冲区剩余大小 71 out.getRemaining(); 72 //刷新缓冲区 73 out.flush(); 74 //-------------------------exception应用------------------------- 75 //exception.getMessage(); 76 %> 77 78 </body> 79 </html>