PageContext
本身也是一个域对象:它可以操作其它三个域对象(request session application)的数据
void setAttribute(String name,Object o);
Object getAttribute(String name);
void removeAttribute(String name);
操作其它域对象的方法
void setAttribute(String name,Object o,int Scope);
Object getAttribute(String name,int Scope);
void removeAttribute(String name,int Scope);
scpoe的值:
PageContext.PAGE_SCOPE
PageContext.REQUEST_SCOPE
PageContext.SESSION_SCOPE
PageContext.APPLICATION_SCOPE
代码例子:
1.jsp: (上下代码相互等价)
//pageContext.setAttribute("a", "aa");
pageContext.setAttribute("a", "aa",PageContext.PAGE_SCOPE);
//request.setAttribute("a", "request");
pageContext.setAttribute("a", "request",PageContext.REQUEST_SCOPE);
//session.setAttribute("a", "session");
pageContext.setAttribute("a", "session", PageContext.SESSION_SCOPE);
//request.getRequestDispatcher("/2.jsp").forward(request, response);
//response.sendRedirect(request.getContextPath()+"/2.jsp");
pageContext.forward("/2.jsp");
2.jsp:
<%=pageContext.findAttribute("a") %>
findAttribute(String name); 自动从page request session application依次查找,找到了就取值,结束查找。
四大域对象
- PageContext : pageConext 存放的数据在当前页面有效。开发时使用较少。
- ServletRequest: request 存放的数据在一次请求(转发)内有效。使用非常多。
- HttpSession: session 存放的数据在一次会话中有效。使用的比较多。如:存放用户的登录信息,购物车功能。
- ServletContext: application 存放的数据在整个应用范围内都有效。因为范围太大,应尽量少用。
EL表达式
- EL概述和基本语法
- EL表达式:expression language 表达式语言
- 要简化jsp中java代码开发。
- 它不是一种开发语言,是jsp中获取数据的一种规范
- EL的具体功能
- 获取数据
- EL表达式只能获取存在4个作用域中的数据
- ${u} 原理: pageContext.findAttribute(“u”);
- EL获取对于null这样的数据,在页面中表现为空字符串
- url?name=tom ${param.name}
- 点(.) 运算符相当于调了getter方法,点后页面跟的是属性名。
- ${u.name} == u.getName()方法
- []运算符:点能做的,它也能做; 它能做的,点不一定能做
- EL表达式只能获取存在4个作用域中的数据
- 运算
- empty :判断null,空字符串和没有元素的集合(即使集合对象本身不为null)都返回true
- 三元运算符
${empty list ? "你还没有买东西" : "你买的东西有:" }
- <input type=“radio” name=“sex” value=“m” ${s==0 ? “checked=‘checked’”:"" }/>男
- <input type=“radio” name=“sex” value=“f” ${s==1 ? “checked=‘checked’”:"" }/>女
- 隐式对象
- 获取数据
<form action="${pageContext.request.contextPath }/success.jsp" method="post">
用户名:<input type="text" name="userName" /><br />
密码:<input type="password" name="pwd" /><br /> <input type="submit" value="登录" /><br />
</form>