JSP指令
page
- language:表明所用的语言
- contentType:具体请求媒体类型
- pageEncoding:页面编码
- isErrorpage:该页面是否是错误跳转页面
- session:该页面是否可以用session
include
file:表明包含了哪个页面
但是这个指令是把另外一个页面的所有内容拿到这个页面后再一起来执行
taglib
prefix(标签库别名) uri(标签库路径)
需要导入标签的jar,一般采用1.1版本的,因为1.1支持EL表达式,1.0不支持EL
JSP动作标签
- include:把另外一个页面包含进来,但是是先把另外一个页面执行再把结果放到这个页面中
- forward:请求转发,等同于 request.getRequestDispatcher(“xxx.jsp”).forward(request,response)
- param:在跳转到另一个页面的时候,加入参数时用到
JSP内置对象(9个)
作用域对象
- pageContext:作用域只在当前页面
- request:限于一次请求(重定向——两次请求取不到值)
- session:限于一次对话(在新的的对话中取不到值)
- application:整个项目内可以取到(application就是servletContext对象)
普通对象
- out:JspWriter
- exception:只有错误页面中存在
- page:该JSP翻译成的实例对象
- config:ServletConfig
- response:response
EL表达式
隐式对象(11个)
作用域对象
- pageScop
- requestScop
- sessionScop
- applicationScop
头相关对象
- header
- headerValues
参数相关对象
- param
- paramValues
cookie相关对象
- cookie
全局化参数相关对象
- initParam
当前页面的处理
- pageContext
EL应用实例
----------存的是单个的字符----------
<%
pageContext.setAttribute("name", "pageContext");
request.setAttribute("name","request");
application.setAttribute("name","application");
session.setAttribute("name","session");
%>
使用EL表达式取出作用域的值
${ pageScope.name }
${ requestScope.name }
${ applicationScope.name }
${ sessionScope.name }
----------存的是数组----------
<%
String[] arr01 = {"request01","request02","request03"};
application.setAttribute("array", arr01);
String[] arr = {"pageContext01","pageContext02","pageContext03"};
request.setAttribute("array", arr);
%>
使用EL表达式取出作用域的数组的值
${ array[0] }
${ array[1] }
${ array[2] }
(上面名字相同时,取值是按照四个作用域的先后来的 pageContext > request > session > application)
----------存的是集合----------
<%
List<String> list = new ArrayList<String>();
list.add("Collection01");
list.add("Collection02");
list.add("Collection03");
pageContext.setAttribute("collection",list);
%>
使用EL表达式取出作用域中的集合的值<br>
${ collection[0] }
${ collection[1] }
${ collection[2] }
----------Map数据----------
<%
Map<String,String> map = new HashMap<String,String>();
map.put("name","jack");
map.put("sex","man");
map.put("age","20");
map.put("address","china");
map.put("address.house","ctgu");
pageContext.setAttribute("map",map);
%>
使用EL表达式取出作用域中的map的值
${ map.name }
${ map.sex }
${ map.age }
${ map.address }
${ map["address.house"] }
## JSTL
/* String name = jack 存在域中,可以用el表达式取出 (默认存到page里边) */
<c:set var="name" value="jack" scope="session"></c:set>
${sessionScop.name }
<c:set var="age" value="18"></c:set>
<c:if test="${age > 16}">
age大于16岁..........
</c:if>
<c:if test="${age <= 16}">
age小于等于16岁........
</c:if>
/* 从1遍历到10,得到的结果赋值给i,并且存在page域中,step表示增幅为2 */
<c:forEach begin="1" end="10" var="i" step="2">
${i }
</c:forEach>
<%
List<User> list = new ArrayList<User>();
list.add(new User("jack",18));
list.add(new User("merry",28));
list.add(new User("mark",38));
list.add(new User("json",48));
pageContext.setAttribute("list",list);
%>
${list[0] },${list[1] },${list[2] },${list[3] }
/* var表示遍历的每一个对象用var的名称来接受,items表示遍历哪一个集合,里边只能用el表达式来写 */
<c:forEach var="user" items="${list }">
${user.name } --------- ${user.age }
</c:forEach>