目录
1.jsp的四大作用域
- 范围从大到小: application>session>request>pageContext
- 同名获取优先级: page > request > session > application
- 常用方法:
setAttribute();//存值
getAttribute();//取值
removeAttribute();//移除值
getAttributeNames();//获取指定作用域保存所有值的对象集合
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//3个范围中都保存了name
req.setAttribute("name","zyw");
req.getSession().setAttribute("name","lisi");
ServletContext application = req.getServletContext();
application.setAttribute("name","zhangsan");
req.getRequestDispatcher("/test.jsp").forward(req,resp);
}
<%--
application ,内置对象--在jsp中
在Servlet中没有内置对象一说。。
特点: 应用级别的 数据存储对象。A 点存储,所有客户端共享
--%>
<%
Object objCounter = application.getAttribute("objCounter");
if(objCounter == null){
application.setAttribute("objCounter",1);
}
application.setAttribute("objCounter",
(Integer)objCounter+1);
%>
访问次数:${applicationScope.objCounter}
<%--//Servlet 中如何获取application对象
ServletContext application = req.getServletContext();
application.setAttribute("k1","100");--%>
<%
//在当前jsp某个位置存储数据,只能当前页面获取
//它是数据共享级别中 最小的
//pageContext < reqquest < session < application
//保存一个数据
pageContext.setAttribute("uname","zyw");
%>
<div>其他内容</div>
${pageScope.uname} ==== ${uname}
<%
pageContext.setAttribute("name","xiaoming");
%>
<div>
<%--同名获取优先级: page > request > session > application --%>
按name名查找获取:${name}
</div>
<div>
分级别获取同名:
<p>${pageScope.name}</p>
<p>${requestScope.name}</p>
<p>${sessionScope.name}</p>
<p>${applicationScope.name}</p>
</div>
<c:if test="${2>3}" var="b">
execute if
</c:if>
<c:if test="${!b}">
execute else
</c:if>
.first},${s.last},${s.index},${s.count} <br/>
</c:forEach>
2.jsp的九大内置对象
request :当前的请求对象
response:当前响应对象
session:对应当前请求的客户会话对象
out:对应当前响应对象的输出流
application:Web应用对象
pageContext:封装当前请求内此Jsp页面信息的对象
page:指向页面自身的方式,相当于this关键字
config:与当前jsp页面的Servlet对应的ServletConfig对象
exception:其他地方抛出的Throwable对象,仅当 < %@page idErrorPage="True"%>时有效
3.Jstl标签库的使用
3.1、<c: if>标签
判断
<c:if test="${2>3}" var="b">
execute if
</c:if>
<c:if test="${!b}">
execute else
</c:if>
3.2、<c: forEach>标签
循环遍历
<%
String[] arr = {"a1","a2","a3","a4"};
pageContext.setAttribute("arr",arr);
%>
<%--var 当前元素
items 数组或集合
begin 下标开始位置
end 下标结束位置
step 元素间隔 默认1
varStatus 提供一个变量名
--%>
<c:forEach var="item" items="${arr}" varStatus="s">
${item}, ${s.first},${s.last},${s.index},${s.count} <br/>
</c:forEach>
3.3、<c: set>标签
set标签用于在作用域中保存一个变量或修改一个javaBeans变量的属性
<c:set var="username" value="li" scope="request"/>
或 <c:set var="username" scope="request">
li
</c:set>