EL表达式
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")) %>
上一篇: MonkeyC的一些错误写法
下一篇: EL表达式