Jsp中有九大隐藏对象
主要掌握:
page:当前页面;对应的域对象pageContext;类型:PageContext,
request:当前请求;对应的域对象request;类型:HttpServletRequest,转发不用请求,重定向会请求
session:当前会话;对用的域对象session;类型:HttpSession
application:当前Web应用;对应的域对象application;类型:ServletContext
四个域对象都有以下方法:
void setAttribute(String key,Object value);//添加参数
Object getAttribute(String key)//获取参数
void removeAttribute(String key)//删除参数
EL表达式
1、主要输出域中属性的值
2、代替jsp表达式<%=%>在页面进行输出操作
3、只读取,不修改
4、如果数据是null,则不输出
5、表达式语法:${EL表达式(可完成取值、简单的判断、简单的运算等) }
6、查询规则:从小到大
EL给我们提供了四个Scope对象,用来精确获取指定域中的值
pageScope:request
requestScope:page
sessionScope:session
applicationScope:application
方法:Scope.属性名称
<%
Date date = new Date();
request.setAttribute("time", date);
%>
现在的时间是:${requestScope.time}
另外:
request不是EL的隐含对象,但是pageContext既是Jsp又是El的隐含对象,
可以通过pageContext.getRequest()方法 ->pageContext.request.属性获取request等其他八个隐含对象。
如下文中的request.getContextPath,转换成了:${pageContext.request.contextPath }
帮助理解的代码:
<%
//创建对象并将对象放到域中
Date date = new Date();
request.setAttribute("time", date);
User user = new User("afei","1");
pageContext.setAttribute("user", user);
//添加参数
pageContext.setAttribute("pageKey","pageValue");
%>
通过jsp表达式输出当前的时间:<%=date %><br>
通过EL表达式输出当前的时间:${requestScope.time} <br>
通过EL表达式输出request域中当前的时间:${requestScope.time}<br>
通过EL表达式输出User对象的name属性值:${pageScope.user.name }<br>
<!-- 只要有get方法就可以,eg:getAfeiName-> .afeiname 即可 -->
通过EL表达式输出getAfei的返回值:${pageScope.user.afei }<br>
通过EL表达式输出项目的虚拟路径:${pageContext.request.contextPath }<br>
通过jsp表达式输出项目的虚拟路径:<%=request.getContextPath() %><br>
通过jsp通过 jsp隐含对象.getAttrbute("key")方法访问对应域中的值:
page=<%=pageContext.getAttribute("pageKey") %><br>