JSP内置对象
JSP内置对象类型映射表对象名 | 类型 | 作用域 |
request | javax.servlet.ServletRequest | RequestScope |
response | javax.servlet.ServletResponse | PageScope |
pageContext | javax.servlet.jsp.PageContext | PageScope |
session | javax.servlet.http.HttpSession | SessionScope |
application | javax.servlet.ServletContext | ApplicationScope |
out | javax.servlet.jsp.JspWriter | PageScope |
config | javax.servlet.ServletConfig | PageScope |
page | java.lang.Object | PageScope |
exception | javax.lang.Throwable | PageScope |
九大内置对象(也叫隐式对象)的应用不再赘述。这里提一下 pageContext 这个对象。
pageContext这个对象比较特殊,由它的类型可知它是jsp特有的,servlet中没有此对象。pageContext对象提供了对JSP页面内所有的对象及名字空间的访问,也就是说他可以访问到本页所在的session,也可以取本页面所在的 application 的某一属性值,他相当于页面中所有功能的集大成者。
EL内置对象
EL为了方便输出一些表达式的值,自己也定义了一些内置对象,应用这些内置对象方便的获取想要输出的值。
JSP EL的内置对象和JSP的内置对象是两回事,不能互用,即JSP EL内置对象只能在EL中表达式中使用,JSP的内置对象也只能在JSP中使用而不能在EL中直接用,但是两者有个对应关系,即EL的内置对象可以调用JSP对应内置对象的保存数据,从而方便的显示可以分为以下三类:JSP EL的内置对象:
pageContext pageScope requestScope sessionScope applicationScope param paramValues header headerValues cookie initParam
1、与范围有关的隐含对象
与范围有关的EL 隐含对象包含以下四个:pageScope、requestScope、sessionScope 和applicationScope; 它们基本上就和JSP的 pageContext、request、session 和 application 一样; 在EL中,这四个隐含对象只能用来取得范围属性值,即getAttribute(String name),却不能取得其他相关信息。 例如:我们要取得session中储存一个属性username的值,可以利用下列方法: session.getAttribute("username") 取得username的值, 在EL中则使用下列方法 ${sessionScope.username} 2、与输入有关的隐含对象 与输入有关的隐含对象有两个:param、paramValues,它们是EL中比较特别的隐含对象。 例如我们要取得用户的请求参数时,可以利用下列方法: request.getParameter(String name) request.getParameterValues(String name) 在EL中则可以使用param和paramValues两者来取得数据: ${param.name} ${paramValues.name} 3、其他隐含对象 cookie JSTL并没有提供设定cookie的动作, 例:要取得cookie中有一个设定名称为userCountry的值,可以使用${cookie.userCountry}来取得它。 header、headerValues header 储存用户浏览器和服务端用来沟通的数据 例:要取得用户浏览器的版本,可以使用${header["User-Agent"]}。 另外在鲜少机会下,有可能同一标头名称拥有不同的值,此时必须改为使用headerValues 来取得这些值。 initParam initParam取得设定web站点的环境参数(Context) 例:一般的方法String userid = (String)application.getInitParameter("userid"); 可以使用 ${initParam.userid}来取得名称为userid pageContext pageContext 取得其他有关用户要求或页面的详细信息。 ${pageContext.request.queryString} 取得请求的参数字符串 ${pageContext.request.requestURL} 取得请求的URL,但不包括请求之参数字符串 ${pageContext.request.contextPath} 服务的web application 的名称 ${pageContext.request.method} 取得HTTP 的方法(GET、POST) ${pageContext.request.protocol} 取得使用的协议(HTTP/1.1、HTTP/1.0) ${pageContext.request.remoteUser} 取得用户名称 ${pageContext.request.remoteAddr } 取得用户的IP 地址 ${pageContext.session.new} 判断session 是否为新的 ${pageContext.session.id} 取得session 的ID ${pageContext.servletContext.serverInfo} 取得主机端的服务信息