EL表达式
EL表达式是为了代替JSP的java代码,让JSP看起来更加整洁美观,JSP中夹杂着各种java代码就会让文件混乱不好维护
第一功效:从某个域中取数据,将取出的数据转成字符串,将字符串输出到浏览器
EL表达式是属于JSP语法的一种
在没有指定范围的情况下,EL表达式优先从最小的范围中取值
EL表达式有四个隐式的范围对象pageScope,applicationScope,requestScope,sessionScope
这四个隐式的范围对象可以指定我们取值的域
EL表达式表示取值还可以使用[]包括的方式来实现
[]这个主要是为了解决我们的参数内有.的情况下使用的,针对特殊字符设计
<%@ page contentType="text/html;charset=UTF-8" isELIgnored="false" %>
忽略EL表达式,设置后就无法使用EL表达式取值
如果是针对某一个标签禁用EL表达式,就直接用\就可以了
<%-- JSP九大内置对象中的request,就是我们pageContext获取的那个request--%>
<%-- 但是在我们的EL表达式里面没有这个JSP九大内置对象的request,我们就需要用pageScope去获取这个request对象--%>
<%-- 为什么要获取我们的request对象--%>
<%--因为我们要用request.getContextPath来获取应用的根路径--%>
<%-- 这样就做到了使用EL表达式获取应用根路径--%>
EL表达式的隐含对象
pageContext,param,paramValues,initParam,以及其他
param对应的是对单取值,paramValues对应的是对多取值,pageContext这个对应的是当前JSP的
页面域,initParam可以从我们的应用域内取出内容进行输出,它对应的是我们的application即ServletContext对象
EL表达式运算符+-*/,只做数据的计算,不做字符串的拼接,加号两边哪怕不是数字也会转数字,如果转不成就报错
关系运算符
<%-- EL表达式的双等号实际调用了equals方法--%>
<%-- EL表达式的双等号和eq都是调用的equals方法--%>
<%-- !=也会调用equals方法--%>
<%-- 判断是否为空,为空就false,不为空为true--%>
<%-- empty运算符结果为布尔类型--%>
JSTL标签库,Filter过滤器,Listener监听器
EL表达式
EL表达式是为了代替JSP的java代码,让JSP看起来更加整洁美观,JSP中夹杂着各种java代码就会让文件混乱不好维护
第一功效:从某个域中取数据,将取出的数据转成字符串,将字符串输出到浏览器
EL表达式是属于JSP语法的一种
在没有指定范围的情况下,EL表达式优先从最小的范围中取值
EL表达式有四个隐式的范围对象pageScope,applicationScope,requestScope,sessionScope
这四个隐式的范围对象可以指定我们取值的域
EL表达式表示取值还可以使用[]包括的方式来实现
[]这个主要是为了解决我们的参数内有.的情况下使用的,针对特殊字符设计
<%@ page contentType="text/html;charset=UTF-8" isELIgnored="false" %>
忽略EL表达式,设置后就无法使用EL表达式取值
如果是针对某一个标签禁用EL表达式,就直接用\就可以了
<%-- JSP九大内置对象中的request,就是我们pageContext获取的那个request--%>
<%-- 但是在我们的EL表达式里面没有这个JSP九大内置对象的request,我们就需要用pageScope去获取这个request对象--%>
<%-- 为什么要获取我们的request对象--%>
<%--因为我们要用request.getContextPath来获取应用的根路径--%>
<%-- 这样就做到了使用EL表达式获取应用根路径--%>
EL表达式的隐含对象
pageContext,param,paramValues,initParam,以及其他
param对应的是对单取值,paramValues对应的是对多取值,pageContext这个对应的是当前JSP的
页面域,initParam可以从我们的应用域内取出内容进行输出,它对应的是我们的application即ServletContext对象
EL表达式运算符+-*/,只做数据的计算,不做字符串的拼接,加号两边哪怕不是数字也会转数字,如果转不成就报错
关系运算符
<%-- EL表达式的双等号实际调用了equals方法--%>
<%-- EL表达式的双等号和eq都是调用的equals方法--%>
<%-- !=也会调用equals方法--%>
<%-- 判断是否为空,为空就false,不为空为true--%>
<%-- empty运算符结果为布尔类型--%>
JSTL标签库,Filter过滤器,Listener监听器
<%@ page contentType="text/html;charset=UTF-8" isELIgnored="false" language="java" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>欢迎页</title>
</head>
<body>
<h1>用户登录</h1>
<hr>
<form action="<%=request.getContextPath()%>/user/login" method="post">
username:<input type="text" name="username"><br>
password:<input type="password" name="password"><br>
10天免登录:<input type="checkbox" name="flag" value="1"><br>
<input type="submit" value="login">
</form>
<h1>
<a href="<%=request.getContextPath()%>/cookie/generate">
服务器生成Cookie,然后把Cookie传给浏览器,浏览器收到,再放到客户端上
</a>
</h1>
<h1>
<a href="<%=request.getContextPath()%>/sendCookie">
浏览器发送Cookie给服务器
</a>
</h1>
<%=pageContext.getRequest()%>
<br>
<%-- JSP九大内置对象中的request,就是我们pageContext获取的那个request--%>
<%-- 但是在我们的EL表达式里面没有这个JSP九大内置对象的request,我们就需要用pageScope去获取这个request对象--%>
<%=request%>
<br>
${pageContext.request}
<%-- 为什么要获取我们的request对象--%>
<%--因为我们要用request.getContextPath来获取应用的根路径--%>
<br>
<%=((HttpServletRequest)pageContext.getRequest()).getContextPath()%>
<br>
<%-- 这样就做到了使用EL表达式获取应用根路径--%>
${pageContext.request.contextPath}
<br>
用户名:<%=request.getParameter("username")%>
<%-- 这两个方法效果是一样的--%>
<%-- 这个param可以用来获取用户提交的信息--%>
用户名:${param.username}
<br>
<%--假设用户提交的数据是多个,比如说复选框--%>
爱好:${param.aihao}
<br>
一维数组:${paramValues.aihao}
<br>
一维数组:${paramValues.aihao[0]},${paramValues.aihao[1]},${paramValues.aihao[2]}
<%
String pageSize = application.getInitParameter("pageSize");
String pageNumber = application.getInitParameter("pageNumber");
String k1 = new String("hello");
String k2 = new String("hello");
%>
<br>
<%=pageSize%>
<%=pageNumber%>
${initParam.pageSize}
${initParam.pageNumber}
${1 + "2"}
${"abc" == "abc"}
<%-- EL表达式的双等号实际调用了equals方法--%>
<%-- EL表达式的双等号和eq都是调用的equals方法--%>
<%-- !=也会调用equals方法--%>
${kq eq k2}
${k1 == k2}
<%=k1.equals(k2)%>
<%=k1 == k2%>
<%-- 判断是否为空,为空就false,不为空为true--%>
<%-- empty运算符结果为布尔类型--%>
${empty k1}
</body>
</html>
<%@ page contentType="text/html;charset=UTF-8" isELIgnored="false" language="java" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>欢迎页</title>
</head>
<body>
<h1>用户登录</h1>
<hr>
<form action="<%=request.getContextPath()%>/user/login" method="post">
username:<input type="text" name="username"><br>
password:<input type="password" name="password"><br>
10天免登录:<input type="checkbox" name="flag" value="1"><br>
<input type="submit" value="login">
</form>
<h1>
<a href="<%=request.getContextPath()%>/cookie/generate">
服务器生成Cookie,然后把Cookie传给浏览器,浏览器收到,再放到客户端上
</a>
</h1>
<h1>
<a href="<%=request.getContextPath()%>/sendCookie">
浏览器发送Cookie给服务器
</a>
</h1>
<%=pageContext.getRequest()%>
<br>
<%-- JSP九大内置对象中的request,就是我们pageContext获取的那个request--%>
<%-- 但是在我们的EL表达式里面没有这个JSP九大内置对象的request,我们就需要用pageScope去获取这个request对象--%>
<%=request%>
<br>
${pageContext.request}
<%-- 为什么要获取我们的request对象--%>
<%--因为我们要用request.getContextPath来获取应用的根路径--%>
<br>
<%=((HttpServletRequest)pageContext.getRequest()).getContextPath()%>
<br>
<%-- 这样就做到了使用EL表达式获取应用根路径--%>
${pageContext.request.contextPath}
<br>
用户名:<%=request.getParameter("username")%>
<%-- 这两个方法效果是一样的--%>
<%-- 这个param可以用来获取用户提交的信息--%>
用户名:${param.username}
<br>
<%--假设用户提交的数据是多个,比如说复选框--%>
爱好:${param.aihao}
<br>
一维数组:${paramValues.aihao}
<br>
一维数组:${paramValues.aihao[0]},${paramValues.aihao[1]},${paramValues.aihao[2]}
<%
String pageSize = application.getInitParameter("pageSize");
String pageNumber = application.getInitParameter("pageNumber");
String k1 = new String("hello");
String k2 = new String("hello");
%>
<br>
<%=pageSize%>
<%=pageNumber%>
${initParam.pageSize}
${initParam.pageNumber}
${1 + "2"}
${"abc" == "abc"}
<%-- EL表达式的双等号实际调用了equals方法--%>
<%-- EL表达式的双等号和eq都是调用的equals方法--%>
<%-- !=也会调用equals方法--%>
${kq eq k2}
${k1 == k2}
<%=k1.equals(k2)%>
<%=k1 == k2%>
<%-- 判断是否为空,为空就false,不为空为true--%>
<%-- empty运算符结果为布尔类型--%>
${empty k1}
</body>
</html>