Java EL 表达式的使用
使用El表达式进行回显数据
-为什么要用el表达式,先来看之前 脚本输出
<body>
<form action="el.jsp">
username:<input type="text" name="name" value="<%=request.getParameter("name") %>" /><br>
<input type="submit" value="提交">
</form>
<br>
<%
out.print(request.getParameter("name"));
%>
</body>
效果:
这里我们发现 当我们用小脚本去回写数据的时候, 表单默认会显示为null 数据
当我们输入一些值,然后提交的时候,这时会正常显示
从这里我们会发现,其实小脚本 的使用就有点不合适了
还有我们可以举一个session取值的例子
<br>
<br>
<%
Customer customer = new Customer();
customer.username="zhangsan";
session.setAttribute("user", customer);
out.print(((Customer)session.getAttribute("user")).getUsername());
%>
效果虽然可以,但是写小脚本很麻烦
- 使用El表达式完成以上功能
<body>
<form action="el.jsp">
username:<input type="text" name="name" value="${param.name }" /><br>
<input type="submit" value="提交">
</form>
<br>
获取参数中的name值:<br>
${param.name}
<br>
<br>
<%
Customer customer = new Customer();
customer.username="zhangsan";
session.setAttribute("user", customer);
%>
获取session域当中的值:<br>
${sessionScope.user.username}
</body>
效果:
el表达式中括号运算符的方法
${sessionScope["com.xinhua.user"].username}
举例:
<br>
<%
Customer customer = new Customer();
customer.username="zhangsan";
session.setAttribute("com.xinhua.user", customer);
%>
获取session域当中的值:<br>
${sessionScope["com.xinhua.user"].username}
效果如上一致…
- El 可以进行自动的类型转换
<form action="el.jsp">
username:<input type="text" name="name" value="${param.name }" /><br>
<input type="submit" value="提交">
</form>
<br>
获取参数中的name值:<br>
${param.name+10}
<br>
<br>
效果:
- El 隐含对象
当我们不去书写作用域的时候,默认el表达式就会从作用域最小的范围内寻找值,如果找到则显示,找不到继续向更大的范围寻找
例如:
<br>
<%
Customer customer = new Customer();
customer.username="zhangsan";
session.setAttribute("user", customer);
%>
获取session域当中的值:<br>
${user.username}
- 这里的${user.username} 会 先去page范围内找user
- 再去request当中寻找user属性
- 如果找不到再去session当中去寻找user,这个时候找到了user 显示其属性值
- 如果上面都没找到则继续寻找application当中有没有user