EL作用
使用EL表达式替换掉jsp表达式
EL表达式作用: 向浏览器输出域对象中的变量值或表达式计算的结果!!!
语法: ${变量或表达式}
EL语法
输出基本数据类型变量
从四个域获取
${name}等价于<%=pageContext.findAttribute("name")%>
指定域获取
${pageScope.name}等价于<%= pageContext.getAttribute("name",PageContext.PAGE_SCOPE)%>
域范围: pageScope / requestScope / sessionScope / applicationScope
<body>
<%//11111111111111111111
Student student=new Student("kaihua",20);
//将对象放入域中
pageContext.setAttribute("student", student,PageContext.SESSION_SCOPE);
%>
获取域中的对象的变量:${sessionScope.student.name }<br/>
<%-- ${student.name} 等价于 (点相对于调用getName()方法) --%>
<%//22222222222222222222222
List<Student> list=new ArrayList<Student>();
list.add(new Student("siyu",20));
list.add(new Student("yucai",22));
list.add(new Student("yidan",23));
list.add(new Student("lijuan",25));
//将List放入域对象中
pageContext.setAttribute("list", list,PageContext.REQUEST_SCOPE);
%>
<%--使用EL获取List对象 --%>
${requestScope.list[0].name } - ${requestScope.list[0].age }<br/>
${list[1].name } - ${list[1].age }<br/>
${list[2].name } - ${list[2].age }<br/>
<%//33333333333333333
//Map
Map<String,Student> map = new HashMap<String,Student>();
map.put("100",new Student("mark",20));
map.put("101",new Student("maxwell",30));
map.put("102",new Student("narci",40));
//放入域中
pageContext.setAttribute("map",map);
%>
<%--使用EL获取Map对象 --%>
${map['100'].name } - ${map['100'].age }<br/>
${map['101'].name } - ${map['101'].age }<br/>
${map['102'].name } - ${map['102'].age }<br/>
</body>
动作标签
转发标签: <jsp:forward />
参数标签: <jsp:pararm/>
包含标签: <jsp:include/>
// 参数
<jsp:forward page="/07_action2.jsp">
<jsp:param value="xiaohua" name="name"/>
<jsp:param value="JSADSAGF" name="QQ"/>
</jsp:forward>
//包含
<jsp:include page="/07_action2.jsp">
<jsp:param value="xiaohua" name="name"/>
</jsp:include>
<%@include file="/07_action2.jsp" %>
jsp:include/>原理: 包含与被包含的页面先各自翻译成java源文件,然后再运行时合并在一起。
(先翻译再合并),动态包含
静态包含 vs 动态包含的区别?
1) 语法不同
静态包含语法: <%@inclue file="被包含的页面"%>
动态包含语法: <jsp:include page="被包含的页面">
2)参数传递不同
静态包含不能向被包含页面传递参数
动态包含可以向被包含页面传递参数
3)原理不同
静态包含: 先合并再翻译
动态包含: 先翻译再合并