欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

EL表达式

程序员文章站 2022-03-02 12:15:54
...

1、首先jsp顶部

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>

jstl语言理论上可以去四大域里面的任何值,但是有优先级:

pageContext, request, session、application四个作用域中

        1、如果把变量放到pageContext里,就说明它的作用域是page,它的有效范围只在当前jsp页面里。 从把变量放到pageContext开始,到jsp页面结束,你都可以使用这个变量。

        2、如果把变量放到request里,就说明它的作用域是request,它的有效范围是当前请求周期。所谓请求周期,就是指从http请求发起,到服务器处理结束,返回响应的整个过程。在这个过程中可能使用forward的方式跳转了多个jsp页面,在这些页面里你都可以使用这个变量。

        3、如果把变量放到session里,就说明它的作用域是session,它的有效范围是当前会话。所谓当前会话,就是指从用户打开浏览器开始,到用户关闭浏览器这中间的过程。这个过程可能包含多个请求响应。也就是说,只要用户不关浏览器,服务器就有办法知道这些请求是一个人发起的,整个过程被称为一个会话(session),而放到会话中的变量,

        4、如果把变量放到application里,就说明它的作用域是application,它的有效范围是整个应用。整个应用是指从应用启动,到应用结束。我们没有说“从服务器启动,到服务器关闭”是因为一个服务器可能部署多个应用,当然你关闭了服务器,就会把上面所有的应用都关闭了。application作用域里的变量,它们的存活时间是最长的,如果不进行手工删除,它们就一直可以使用。与上述三个不同的是,application里的变量可以被所有用户共用。如果用户甲的操作修改了application中的变量,用户乙访问时得到的是修改后的值。这在其他scope中都是不会发生的,page, request, session都是完全隔离的,无论如何修改都不会影响其他

那么前后端怎么进行值传递呢?session里面要少放数据,但是数据要放在哪呢?回答是数据放在request域,参考链接:

https://www.cnblogs.com/mengzhen123/p/5968831.html

 

这两段分别表示引入jstl语言和设置jsp页面编码方式

<%
    out.print("今天天气不错");
    request.setAttribute("NAME","问问");
%>   

<!--意思是获取request请求域里的NAME键值-->
    <c:out value="${requestScope.NAME}" default="error"></c:out>

    <!-- 存值到scope中 -->
    <c:set var="NAME" value="哦哦" scope="session"></c:set>

    <!--remove掉NAME变量-->
    <%--<c:remove var="NAME" scope="session"/>--%>

    <!-- 输出 -->
    <c:out value="${sessionScope.NAME}" default="error"></c:out>

    <c:if test="${sessionScope.NAME==null}">
        <c:out value="ture"></c:out>
    </c:if>

    <%--向request里添加一个值--%>
    <c:set var="SCORE" value="80" scope="request" />


相当于if-else函数
    <c:choose>
        <c:when test="${SCORE==20}">
            <c:out value="极差"></c:out>
        </c:when>
        <c:when test="${SCORE<=40}">
            <c:out value="很差"></c:out>
        </c:when>
        <c:when test="${SCORE<=50}">
            <c:out value="不行"></c:out>
        </c:when>
        <c:otherwise>
            <c:out value="。。。。"></c:out>
        </c:otherwise>
    </c:choose>


    <!--循环-->
    <c:forEach var="i" begin="1"  step="2" end="5" varStatus="in">

            <c:out value="${in.index}"></c:out>

    </c:forEach>

输出135


对于保存在model或者session里面的数据,可用c:foreach函数找到
<c:forEach items="${list1}" var="list" varStatus="status" >
输出实体类内容:
<c:out value=${list.count} />
输出序号:
<c:out value=${list.index+1} />
</c:forEach>

1.<%= %>只能得到当前面定义的值.即你在这个页里有<% int a=100%>--你在下面才可以使用<%=a%>
2.${ }这个是el表达式.可以从上下文中得到值
3. <%%> 内写的是 Servlet 方法体的内容,你如果把静态的内容也直接写到 <%%> 里,是不合法的,JSP 中的静态内容默认使用 System.out.println() 进行标准输出,你若非要写到一个 <%%> 里也行,示例如下:

欢迎: <%= session.getAttribute("userName") %>

写成:

<% System.out.println("欢迎: " + session.getAttribute("userName")) %>