JSP;EL和JSTL基本入门总结

一:JSP
    1、JSP注释
        <!--  -->  HTML注释,它注释的是HTML标签代码
        //, /* */, /** */ :Java代码注释,在jsp中依然可用,在<% %>里面使用
        <%-- --%> :JSP特有的注释,它注释java代码

        总结:html注释在整个过程是可见的,而其他两种注释在生成页面是不可见。

    2、JSP指令
        page:设置jsp页面的属性
            contentType="text/html;charset=UTF-8" :浏览器打开网页时的字符集
            pageEncoding="UTF-8"              :存储文件的字符集
            import="java.util.*"              :导包,可以出现多个

        include:静态包含,引入其他页面的源代码,统一在一个jsp中进行编译
            file :相对路径

        taglib:引入其他标签库
            uri:标签库的uri路径
            prefix:标签库的别名

    3、JSP内置对象
        response        :HttpServletResponse
        request            :HttpServletRequest
        session            :HttpSession
        application        :ServletContext
        page            :Oject
        out            :JspWriter :先输出到response.getWriter()的缓冲区,然后一起输出到浏览器
        config            :ServletConfig
        exception        :Thorwable
        pageContext        :PageContext
            1、获取其他的8个内置对象:抽取公共代码(通用性代码、框架性代码)    
            2、操作四个作用域
                PageScope    :页面范围内,            pageContext
                RequestScope    :一次请求范围内(转发),        request
                SessionScope    :一次会话(多次请求),        session
                ApplicationScope:整个应用            application
            
    4、JSP作用域
        1、操作四个作用域
                PageScope    :页面范围内,            pageContext
                RequestScope    :一次请求范围内(转发),        request
                SessionScope    :一次会话(多次请求),        session
                ApplicationScope:整个应用            application
        2、方法:
            getAttribute(String name);
            getAttribute(String name, int scope);

            setAttribue(String name, Object value);
            setAttribue(String name, Object value, int scope);

            findAttribute(String name); :从pageContext -》request-》session-application依次查找,如果找到,就停下来,如果说找不到就依次向上查找。
    5、JSP的动作标签
        <jsp:forward />
        

        index.jsp  和  logo.jsp:

        静态包含和动态包含的区别(面试)
            静态包含:使用的是<%@ include file="" %>, 它会将要包含的页面(logo.jsp)的源代码进行复制,复制到要包含的页面(index.jsp),统一进行一次翻译,翻译成一个index_jsp.java的Servlet,会将该java文件编译成一个index_jsp.class字节码文件,进行执行
            动态包含:使用的是<jsp:include />, 被包含的页面(logo.jsp)和要包含文件的页面(index.jsp)分别会生成相对应的java文件,并被编译为class文件,然后在index执行结果中引入logo的执行的结果


二:EL表达式
    概述:格式${表达式} 目的是为简化jsp页面中<%= %>符号的书写

    功能: 用来获取数据
        1、获取JSP作用域中的数据【重点】
            ${name}和${requestScope.name}一样吗?   不一样
            
            ${requestScope.name}    :指定了需要在request域中寻找一个key为name的键对应的值
            ${name}            :和pageContext.findAttribute()方法一样,从page域-request域-session域-application域依次查找
            

            1、指定作用域:使用pageScope、requestScope、sessionScope、applicationScope指定域的范围

            2、获取数组的数据: ${name[0]} :获取域中name数组的第一个元素

            3、获取集合的数据: ${list[0]} :获取集合中第一个元素

            4、获取map的数据:   ${map.key} :获取map中key所对应的数据

            5、获取一个对象中的属性:${user.username} :获取user对象中的username属性,前提这个username属性必须对应一个标准的get方法
    
            []和.的区别:
                []:取数组、list集合元素的值,可以取属性中包含特殊符号的属性的值
                . :获取对象中属性对应的值,属性就是一个不包含特殊字符的属性。


        2、执行运算
            数学运算
            逻辑运算【重点】
                > < >= <= ==  !=
            关系运算【重点】
                &&  ||  !
            非空或者空判断【重点】
                ${empty user}  ${user == null}

        3、操作web常用的开发对象

            EL中可以使用11个web对象(常见的对象):
                域对象:pageScope、requestScope、sessionScope、applicationScope
                pageContext对象,通过该对象可以获取其他8个JSP的内置对象
                cookie对象,获取指定的cookie
                header对象,获取请求头信息


                其余四个:param,paramValues,initParam,headerValues不是很常用


            经常使用的表达式:
                获取项目名:${pageContext.request.contextPath}(EL的域对象pageContext获取JSP的内置对象request,request调用contextPath方法)
                获取cookie:${cookie.history.value}
                获取浏览器类型:${header["User-Agent"]}

                使用EL表达式进行逻辑运算、关系运算、非空判断比较多

            特殊字符:.  -  空格 单引号  双引号
        
        4、调用java方法(几乎不用)

    注意:EL表达式一般经常会与JSTL标签一起使用

三、JSTL标签
    概述:经常和EL表达式一起使用,简化jsp页面的java代码书写

    版本:    1.0  不支持el表达式;
        1.1、1.2:支持el表达式

    标签库:
        core        :核心标签库
            <c:forEach>
            <c:if>

        fn        :函数库
            ${ fn:contains("Hello World","Hello") }
            ${ fn:length("HelloWorld") }
            ${ fn:toLowerCase("ABCDE") }

        fmt        :国际化标签库


    使用标签:
        1、添加jar : jstl.jar, standard.jar        
        2、需要在jsp页面使用taglib指令引入这个标签库
            <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
        
    
    使用:c:set --> 向作用域中设置一个值
        <c:set var="n1" value="30" scope="page"></c:set>
            var:这个值定义的变量
            value:值
            scope:作用域    page  request  session  application

          c:if  --> 判断的标签,没有else
        <c:if test="${逻辑运算的表达式}" >
            当test的条件为真,就会输出
        </c:if>

          c:forEach  --> 在jsp页面遍历集合数据   ; 得到连续的数列
        例子:
        <c:forEach items="${list }" var="str" varStatus="status" begin="2" end="3">
            序号: ${status.count } - 数值: ${str}<br/>
        </c:forEach>
        如果说在遍历集合的时候,添加了bengin和end属性,那么遍历就会从集合以bengin为下标的元素开始,到以end为下标的元素结束的这些元素的遍历
        

    案例:在页面使用JSTL标签显示商品列表数据【重点·掌握】

        SELECT * FROM product LIMIT 0, 10   : 0 表示从索引为0的数据查起,10:查询10条记录
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值