zoukankan      html  css  js  c++  java
  • 表达式语言--内置对象

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

    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可以进行参数的接收 $(属性)

  • 相关阅读:
    BBS
    BBS
    BBS
    BBS
    6.1
    Django
    Django
    tomcat——启动项目报错:java.lang.IllegalStateException
    Java——java.lang.NullPointerException
    Java——反射三种方式的效率对比
  • 原文地址:https://www.cnblogs.com/wujixing/p/4997138.html
Copyright © 2011-2022 走看看