• JSP EL表达式常用隐含对象详解

    EL 隐含对象共有 11 个,本节只介绍几个常用的 EL 隐含对象,即 pageScope、requestScope、sessionScope、applicationScope、param 以及 paramValues。

    1)与作用范围相关的隐含对象

    与作用范围相关的 EL 隐含对象有 pageScope、requestScope、sessionScope 和 applicationScope,分别可以获取 JSP 隐含对象 pageContext、request、session 和 application 中的数据。

    如果在 EL 中没有使用隐含对象指定作用范围,则会依次从 page、request、session、application 范围查找,若找到就直接返回,不再继续找下去;如果所有范围都没有找到,就返回空字符串。获取数据的格式如下:

    ${EL隐含对象.关键字对象.属性}

    ${EL隐含对象.关键字对象}

    例如:

    <jsp:useBean id="user" class="bean.UserBean" scope="page"/><!--bean标签-->
    <jsp:setProperty name="user" property="name" value="EL隐含对象"/>
    name:${pageScope.user.name}

    再如,在 Controller 或 Servlet 中有这样一段话:

    ArrayList<UserBean> users = new ArrayList<UserBean>();
    UserBean ub1 = new UserBean("zhang",20);
    UserBean ub2 = new UserBean("zhao",50);
    users.add(ub1);
    users.add(ub2);
    request.setAttribute("array",users);

    其中,UserBean 有两个属性 name 和 age,那么在对应视图 JSP 中 request 有效的范围内可以使用 EL 取出 UserBean 的属性,代码如下:

    ${array[0].name} ${array[0].age}
    ${array[1].name} ${array[1].age}

    2)与请求参数相关的隐含对象

    与请求参数相关的 EL 隐含对象有 param 和 paramValues。获取数据的格式如下:

    ${EL隐含对象.参数名}

    例如,input.jsp 的代码如下:

    <form method="post" action="param.jsp">
        <p>
            姓名:<input type="text" name="username" size=" 15" />
        </p>
        <p>
            兴趣:
            <input type="checkbox" name="habit" value="看书" />看书
            <input type="checkbox" name="habit" value="玩游戏"/>玩游戏
            <input type="checkbox" name="habit" value="旅游"/>旅游
        </P>
            <input type="submit" value="提交" />
    </form>

    那么在 param.jsp 页面中可以使用 EL 获取参数值,代码如下:

    <%request.setCharacterEncoding("GBK");%>
    <body>
    <h2>EL隐含对象param、paramValues</h2>
    姓名:${param.username}</br>
    兴趣:
    ${paramValues.habit[0]}
    ${paramValues.habit[1]}
    ${paramValues.habit[2]}

    示例

    编写一个 Controller,在该控制器类处理方法中使用 request 对象和 Model 对象存储数据,然后从处理方法转发到 show.jsp 页面,在 show.jsp 页面中显示 request 对象的数据。

    运行控制器的处理方法,在 IE 地址栏中输入“http://localhost:8080/springMVCDemo11/input”。程序运行结果如图 1 所示。

    使用EL获取数据
    图 1  使用EL获取数据

更多...

加载中...