jsp_EL表达式

1: EL表达式
    1):作用
        向页面输出显示内容,可以用来替代我们的JSP表达式
    2):JSP页面注意
        在JSP页面中我们不建议写java代码或者是不写java代码,因为jsp作为一个页面来说,在里边写java代码会显得代码很乱,
        所以建议尽量使用JSP标签和表达式(EL)
    3): 语法: ${内容 }
    4): EL中的隐藏对象            
        名称                  作用
        pageScope           获取pageContext域范围里的属性
        requestScope        获取request域范围里的属性
        sessionScope        获取session范围里的属性
        applicationScope    获取ServletContext域里范围里的属性
        param               相当于ServletRequest.getParameter(String name)
        paramValues         相当于ServletRequest.getParameterValues(String name)
        header              相当于ServletRequest.getHeader(String name)
        headerValues        相当于ServletRequest.getHeaders(String name)
        cookie              相当于ServletRequest.getCookies()
        initParam           相当于ServletContext.getInitParameter(String name)
        PageContext         表示JSP的PageContext
<%@page import="java.util.*"%>
<%@page import="com.tz.servlet.bean.User"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%
    String path = request.getContextPath();
    String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
    request.setCharacterEncoding("utf-8");
%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>

    <%
        pageContext.setAttribute("aaa", "123");
    %>
    <%=pageContext.getAttribute("aaa") %>
    ${pageScope.aaa }
    <hr>


    <%-- EL表达式获取域对象中的数据  --%>
    <%
        pageContext.setAttribute("name", "青小蛙");
        request.setAttribute("name", "小红");
        session.setAttribute("name", "小明");
        application.setAttribute("name", "小花");
    %>
    ${pageScope.name }<br>
    ${requestScope.name }<br>
    ${sessionScope.name }<br>
    ${applicationScope.name }<br>
    <hr>

    <%-- EL表达式自动查找(如果没有指定域对象,则就会到四域对象里依次的查找指定属性) 相当于findAttribute()--%>
    ${name }
    <hr>

    <%-- EL表达 式获取对象的属性 --%>
    <%
        User user = new User("小梅","123");
        pageContext.setAttribute("user", user);
    %>
    ${pageScope.user }-- ${pageScope.user.userName }: ${pageScope.user.password }
    <hr>

    <%-- EL获取数组里的数据 --%>
    <%
        User user1 = new User("小红","123");
        User user2 = new User("小花","456");
        User user3 = new User("小梅","789");
        User user4 = new User("小芳","123456");
        User[] users = new User[]{user1, user2, user3, user4};
        pageContext.setAttribute("userArray", users);
    %>
    ${pageScope.userArray[0] }-- ${pageScope.userArray[0].password } <br>
    ${pageScope.userArray[1] }<br>
    ${pageScope.userArray[2] }<br>
    ${pageScope.userArray[3] }<br>
    <hr>

    <%-- EL表达式 获取 List 集合里的数据 --%>
    <%
        List<User> userList = new ArrayList<User>();
        userList.add(user1);
        userList.add(user2);
        userList.add(user3);
        userList.add(user4);
        pageContext.setAttribute("userList", userList);
    %>
    ${pageScope.userList[0] }<br>
    ${pageScope.userList[1] }<br>
    ${pageScope.userList[2] }<br>
    ${pageScope.userList[3] }<br>
    <hr>

    <%-- EL表达式获取Map里的数据 --%>
    <%
        Map<String, User> userMap = new HashMap<String, User>();
        userMap.put("user1", user1);
        userMap.put("user2", user2);
        userMap.put("user3", user3);
        userMap.put("user4", user4);
        pageContext.setAttribute("userMap", userMap);
    %>
    ${pageScope.userMap }<br>
    ${pageScope.userMap["user1"] }<br>
    ${pageScope.userMap.user2 }<br>
    ${pageScope.userMap.user3 }<br>
    ${pageScope.userMap.user4 }--${pageScope.userMap.user4.password }<br>
    <hr>

    <%-- EL中特殊字符处理 --%>
    <%
        pageContext.setAttribute("aa.bb", "123");
    %>
    ${pageScope["aa.bb"] }
    <hr>

    <%
        pageContext.setAttribute("bbb", null);
    %>
    <%=pageContext.getAttribute("bbb") %><br>
    ${pageScope.bbb }
    <hr>

    <%-- EL获取请求参数 --%>
    用户名: ${param.userName }
    密码: ${param.password }
    <hr>

    <%-- EL获取请求参数(多个值  如获取复选框值) --%>
    兴趣: ${paramValues.hobby }<br>
        ${paramValues.hobby[0] }<br>
        ${paramValues.hobby[1] }<br>
        ${paramValues.hobby[2] }<br>
        ${paramValues.hobby[3] }<br>
    <hr>

    <%-- EL表达式获取Cookie的信息 --%>  
    <%
        Cookie cookie = new Cookie("book1","java");
        response.addCookie(cookie);
    %>
    ${cookie.book1 }--${cookie.book1.name }: ${cookie.book1.value }
    <hr>

    <%-- EL算术运算符(+,-,*,/,%) --%>
    ${1+2+3 }<br>
    ${1+"2"+"3" }
    <hr>

    <%-- EL关系运算符(==, !=, >, >=等等) --%>
    ${1==2 } --> ${1 eq 2 }
    ${1<10 }
    <hr>

    <%-- EL逻辑运算符(并,或,非) --%>
    ${1==2 && 2==2 }
    <%
        User user5 = new User("aaa", "123");
        pageContext.setAttribute("user5", user5);
    %>
    ${pageScope.user5.userName == "aaa" && pageScope.user5.password == "123" }
    <hr>

    <%-- EL Empty表达式 (判断值是否空) 如果为空 则返回true --%>
    <%
        pageContext.setAttribute("abc", null);
        pageContext.setAttribute("abc", "123");
        pageContext.setAttribute("abc", "");
    %>
    ${empty pageScope.abc  }
    <hr>

    <%-- EL条件表达式 --%>
    ${1==2? "1等于2" : "1不等于2" }



</body>
</html>
2: JSP标签
    1): 作用 
        替代JSP中的java代码
    2): JSP标签可以分为 三大类
        a): 内置标签    (直接使用,不需要另外导入)
        b): jstl标签  (需要在jsp页面导入jstl标签库)
        c): 自定义标签   (由程序员自定义,需要在页面导入自定义标签)


3: 内置标签
    1): 转发标签
        作用: 可以使用做页面的转发
        如: <jsp:forward page="/index.jsp"></jsp:forward>
    2): 页面包含标签
        作用: 包含其它的页面
        如: <jsp:include page="/a.jsp">
                <%-- 设置传递到被包含页面的参数 --%>
                <jsp:param value="狗娃" name="userName"/>
                <jsp:param value="123" name="password"/>
            </jsp:include>
        与<%@include %>指令的对比:
            a): <%@include %>指令叫做静态包含, <jsp:include>这种包含叫做动态包含
            b): 动态包含可以设置参数传递到被包含页面, 而静态包含不能
            c): 动态包含先把被包含的页面(jsp)翻译再合并,所以会生成多个java文件
                静态包含会先合并,再翻译只会生成一个java文件
            ps: 如果在获取参数时出现乱码  则可以在当前包含的页面设置请求编码(如: request.setCharacterEncoding("utf-8");)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值