El表达式

来源:互联网 发布:爱知目标内容 编辑:程序博客网 时间:2024/05/17 22:57

EL表达式

读取requestScope的对象

  1. 编写一个servlet,转发到显示页面
  2. 在requestScope里面存现一个Person对象
  3. 在显示页面使用el表达式将对象去取
public void doGet(HttpServletRequest request, HttpServletResponse response)            throws ServletException, IOException {        response.setContentType("text/html");        //设置request和response编码格式        request.setCharacterEncoding("utf-8");        response.setCharacterEncoding("utf-8");        PrintWriter out = response.getWriter();        Person person = new Person("王二",99,"男");        request.setAttribute("person", person);        request.getRequestDispatcher("/el/getElTest01.jsp").forward(request, response);        out.flush();        out.close();    }

显示页面

  1. 可以通过“ . ”直接获取person的属性值
  2. person.age 相当于调用person的age的get方法
    ----获取requestScope里面的person对象-------        ${requestScope.person.name }<br>           <!--             直接获取person.xxx,没有指定从哪个域对象开始取值            从pageScope, requestScope,sessionScope,applicationScope开始取值         -->        ${person.age +1 }<br> --------------------Boolean表达式---------------------------------<br>         ${person1 == null } &nbsp; person1在所有域里面都为null <br>        ${person != null }   person不为null<br>         ${empty person.age}  判断age是否为null<br>         ${person != null ? "正确" : "错误"}  <br>

结果:


三目运算符的使用

    <input type="radio" name="gender" ${person.sex=="男"? "checked":" "}>男     <input type="radio" name="gender" ${person.sex=="女"? "checked":" "}>女

结果:


获取Map集合里面的值

    <%            //创建一个map集合            Map<String,String> map = new HashMap<String,String>();            //向map集合添加元素            map.put("k1", "v1");            map.put("k2", "v2");            map.put("k2", "v2");            //将map集合放到requestScope域里面            request.setAttribute("map", map);         %>        <!-- 去取map的k1的值 -->        map集合里面k1的值为:${map.k1 };


获取请求头

    <h3>获取请求头</h3>        获取请求头${header}<br><br><br>        获取请求头的Accept:${header.Accept}<br>        <%-- 当获取Accept-Encoding,"${header.Accept-Encoding}"这样写会报错,其中的“-”是特殊符号  --%>        获取请求头的Accept-Encoding:${header["Accept-Encoding"]} <br>        获取请cookie对象:${cookie }<br>        获取cookie.JSESSIONID的值:${cookie.JSESSIONID.value }<br>        获取请求方式:${pageContext.request.method }


web.xml文件中配置初始化参数

web.xml文件<context-param>    <param-name>name</param-name>    <param-value>张三</param-value></context-param>
获取初始化参数取web.xml的初始化参数:${initParam.name }

  • 域对象重小到大的排序
    pageScope , requestScope,sessionScope,applicationScope

pageScope在当前页有效,相当于this,不管是转发还是重定向都会丢失属性和参数。

  • ${param.name}
      name: "${param.name }"<br>    //相当于    <%        out.println(request.getParameter("name"));     %>
  • age: ${param.age2 + 10}可以进行类型转换,将String装换成Int
 age: ${param.age2 + 10}<br>     <%      String age = request.getParameter("age2");        Integer.parseInt(age);     %>
  • ${paramValues.color } 接收数组类型
  color: "${paramValues.color }"<br>    <%        String[] color = request.getParameterValues("color");     %>
  • ${applicationScope.time } 获取 applicationScope里面的time对象
    ${applicationScope.time }    <%        application.getAttribute("time");     %>
  • ${sessionScope.person.name }接收实体对像可以采用联级的方式来获取属性值

    Person对像用于测试


重域对象里面取值的问题
            Person personSession = new Person();            personSession.setAge(25);            //这里是sessionScope里面的            session.setAttribute("perScope", personSession);            Person personRequesr = new Person();            personRequesr.setAge(20);            request.setAttribute("perScope", personRequesr);
  • ${perScope.age }先重小范围属性小的开始查找当小的范围查找到就取出(key,value)
    所以age = 25

//指定重session域对象,里面取出person在取出namesessionAttrtubite: ${sessionScope.person.name }<br>    <!-- 对于key有特殊符号的要使用[] -->    sessionAttrtubite: ${sessionScope["com.zx.entity.Person"].name }<br>
  • ${sessionScope.person.name }解析

    1. sessionScope进入session的域对象里面
    2. seesionScope.person调用getAttribute(String s)
    3. sessionScope.person.name调用Person的getName方法
  • “${paramValues.color[0]}获取第一个数组

  • ${pageContext.request.contextPath }获取web Application的名称
    pageContext即为pageContext类型,但只能是只读属性,就可以一直的.下去

原创粉丝点击