码迷,mamicode.com
首页 > 编程语言 > 详细

表达式语言--内置对象

时间:2015-11-26 13:06:39      阅读:152      评论:0      收藏:0      [点我收藏+]

标签:

在表达式语言中存在很多内置对象,

pageContext, pageScope,requestScope,sessionScope,applicationScope,param,paramValues,header,headerValues,cookie,initParam

<%@ page contentType="text/html" pageEncoding="GBK"%>
<html>
<head><title>www.mldnjava.cn,MLDN高端Java培训</title></head>
<body>
<%
    pageContext.setAttribute("info","page属性范围") ;
    request.setAttribute("info","request属性范围") ;
    session.setAttribute("info","session属性范围") ;
    application.setAttribute("info","application属性范围") ;
%>
<h3>${info}</h3>
</body>
</html>

上述在不同的属性范围,保存了同名的属性的话,那么EL的查找范围是page->request->session->application

此时,要想准确定位,就可以依靠内置对象帮忙:pageScope,requestScope,sessionScope,applicationScope

上述代码可以改成:

<%@ page contentType="text/html" pageEncoding="GBK"%>
<html>
<head><title>www.mldnjava.cn,MLDN高端Java培训</title></head>
<body>
<%
    pageContext.setAttribute("info","page属性范围") ;
    request.setAttribute("info","request属性范围") ;
    session.setAttribute("info","session属性范围") ;
    application.setAttribute("info","application属性范围") ;
%>
<h3>PAGE属性内容:${pageScope.info}</h3>
<h3>REQUEST属性内容:${requestScope.info}</h3>
<h3>SESSION属性内容:${sessionScope.info}</h3>
<h3>APPLICATION属性内容:${applicationScope.info}</h3>
</body>
</html>

 

通过EL的内置对象也可以发现pageContext,之前讲解内置对象的时候强调,pageContext可以取得request,session,application等对象,现在就可以通过EL直接完成内置对象的方法调用:

<%@ page contentType="text/html" pageEncoding="GBK"%>
<html>
<head><title>www.mldnjava.cn,MLDN高端Java培训</title></head>
<body>
<h3>IP地址:${pageContext.request.remoteAddr}</h3>
<h3>SESSION ID:${pageContext.session.id}</h3>
<h3>是否是新session:${pageContext.session.new}</h3>
</body>
</html>

上述的命名和操作都是为了依靠反射机制完成,is,get都自动转换。

 

还可以接收参数,通过URL重写传递参数,如果要想接收参数,通过param参数完成。

<%@ page contentType="text/html" pageEncoding="GBK"%>
<html>
<head><title>www.mldnjava.cn,MLDN高端Java培训</title></head>
<body>
<h3>通过内置对象接收输入参数:<%=request.getParameter("ref")%></h3>
<h3>通过表达式语言接收输入参数:${param.ref}</h3>
</body>
</html>

没有参数传过来的时候,第一行显示null,第二行显示 空白。

接收参数的第一个方式:URL重写:http://localhost:8080/wly/eldemo/get_param_demo.jsp?ref=lixinghua

传递参数:

<html>
<head><title>www.mldnjava.cn,MLDN高端Java培训</title></head>
<body>
<form action="param_values_demo.jsp" method="post">
    兴趣:    <input type="checkbox" name="inst" value="唱歌">唱歌
            <input type="checkbox" name="inst" value="游泳">游泳
            <input type="checkbox" name="inst" value="看书">看书
            <input type="submit" value="显示">
</form>
</body>
</html>

接收param_values_demo.jsp,需要使用paramValues接收一组参数,由于现在接收过来的是数组,就需要下标访问:

<%@ page contentType="text/html" pageEncoding="GBK"%>
<html>
<head><title>www.mldnjava.cn,MLDN高端Java培训</title></head>
<body>
<%    // 正经开发中,此代码要通过过滤器实现
    request.setCharacterEncoding("GBK") ;
%>
<h3>第一个参数:${paramValues.inst[0]}</h3>
<h3>第二个参数:${paramValues.inst[1]}</h3>
<h3>第三个参数:${paramValues.inst[2]}</h3>
</body>
</html>

 

实际开发中,使用最多的还是param对象,接收一个参数。从MVC模式来讲,所有的参数接收应该交过Servlet。

  

总结:

1. EL采取顺序方式输出属性:page<request<session<application,但是一般开发中避免同名属性的存在

2. 通过param可以进行参数的接收 $(属性)

 

表达式语言--内置对象

标签:

原文地址:http://www.cnblogs.com/wujixing/p/4997138.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!