JSP理想中的功能:
1.接收属性;
2.判断;
3.输出;
4.尽量少用Scriptlet;
因此JSP中应该尽可能的把功能减少到这个程度。
一、表达式语言介绍
因此表达式语言的目的:更方便的显示;
一般表达式语言的形式:${.....}
二、表达式语言的简单实例:
表达式语言的优点:传统获取属性的方法
<%@ page contentType="text/html" pageEncoding="GBK"%>
<html>
<head>
<title>Ttitle</title>
</head>
<body>
<%
request.setAttribute("name","xiazdong");
%>
<%
if(request.getAttribute("name")!=null){
%>
<h3><%=request.getAttribute("name")%></h3>
<%
}
%>
</body>
</html>
因为还需要判断是否为空的情况,如果为null,则会输出null;
但是表达式语言不需要考虑这种情况,如果为null,则会转换为“”的空字符串;
<%@ page contentType="text/html" pageEncoding="GBK"%>
<html>
<head>
<title>Ttitle</title>
</head>
<body>
<%
request.setAttribute("name","xiazdong");
%>
<h3>${name}</h3>
</body>
</html>
三、表达式语言内置对象
这个时候可以利用内置对象1.pageScope、requestScope、sessionScope、applicationScope内置对象
如上session.setAttribute("info","request属性范围"),可用<%= request.getAttribute("info")%>等同于${requestScope.info}即可进行显示;
${ sessionScope.userlist } 1
${ sessionScope.userlist } 2
${ applicationScope.userlist } 3
${ pageScope.userlist } 4
${uselist} 含义:执行顺序为4 1 2 3。
“.”后面的只是一个字符串,并不是真正的内置对象,不能调用对象。
2.param和paramValues内置对象
< %=request.getParameter(“username”)% > 等价于 ${ param.username } 用来接收传来的参数;
request.getParameter("a")类似于param.a;
request.getParameterValues("a")类似于paramValues.a;
如果想要取得第二个a的值,则通过${paramValues.a[1]},以此类推;
3.pageContext内置对象
pageContext对象可以取得request,session,application对象;
pageContext.request取得request内置对象;
pageContext.session取得session内置对象;
pageContext.application取得application对象;
还可以调用JSP内置对象的方法:举例:(都是通过反射调用)
(1)${pageContext.request.remoteAddr}; 调用getRemoteAddr();
(2)${pageContext.session.new};调用isNew()函数
(3)${pageContext.session.id};调用getId()函数
但是在开发中用的最多的还是param对象接受一个参数,因此从MVC设计模式来讲,所有参数接受应该交给servlet。
4.用JSP EL读取JavaBean中的值
<%=user.getAddr( ) %> 等价于 ${user.addr}