EL和JSTL学习笔记

主要内容

  1. JSP
    *之前已经学习了JSP的入门学习,本次继续学习JSP的剩余内容
    1. 指令
    2. 注释
    3. 内置对象
  2. MVC开发模式
  3. EL表达式
  4. JSTL标签

JSP继续学习

  1. 指令
    • 作用
      用于配置JSP页面,导入资源文件
    • 格式
      <%@ 指令名称 属性名1=属性值1 属性名2=属性值2 … %>
      例如:<%@ page contentType=“text/html;charset=UTF-8” language=“java” %>
    • 分类
      1. page :配置JSP页面的
        • contentType :等同于response.setContentType()
          1. 可以用来设置响应体的mime类型以及字符集
          2. 设置当前页面的编码(只适用于高级IDE,若为低级,则需要设置pageEncoding属性才能生效)
        • import :导包,类似于Java类的导包
        • errorPage :当前页面发生异常后,会自动跳转到指定的错误页面
        • isErrorPage :标识当前页面是否是错误页面
          • true :是,可以使用内置对象exception
          • false :否,默认值;不可以使用内置对象exception
      2. include :包含页面的,导入页面的资源文件,减少不同页面相同代码的重复性编写
        <%@include file=“top.jsp”%>
      3. taglib :导入库资源。一般用于导入标签库
        使用时需要导入相应的额jar包到该工程中,然后才可以在JSP页面导入该资源
        <%@taglib prefix=“c” uri=“http://java.sun.com/jsp/jstl/core” %>
        prefix :前缀,用来自定义所导入的标签库使用前缀
  2. 注释
    • html注释 :只能注释html代码片段;且该注释依然会被发送给客户端,只是客户端不解析
    • JSP注释:推荐使用
      <%-- --%> :可以注释所有代码片段;且该注释的内容不会被发送到客户端
  3. 内置对象
    在jsp页面中不需要创建,可以直接使用的对象
    一共有9个:
    变量名 真实类型 作用
    pageContext PageContext 在当前页面共享数据,还可以获取其他8个内置对象
    request HttpServletRequest 一次请求访问的多个资源(转发来实现)
    session HttpSession 一次会话间的多个请求间共享数据
    application ServletContext 所有用户间共享数据
    response HttpServletResponse 响应对象
    page Object 当前页面的对象(Servlet),相当于this
    out JspWriter 输出对象,数据输出到页面上
    config ServletConfig Servlet的配置对象
    exception Throwable 异常对象

MVC开发模式

  1. JSP的演变历史

    1. 早期只有Servlet,只能使用response输出标签数据,非常麻烦
    2. 后来有了JSP,简化了Servlet的开发;若过度使用JSP,则会造成JSP中包含大量的java代码,以及html标签,非常难以维护,难以分工合作
    3. 再后来,java的web开发,借鉴了MVC开发模式,使得程序更加的合理化
  2. MVC:是模型(Model)-视图(View)-控制器(Controller)三部分的缩写,是一种软件开发模式

    • M:Model;模型,完成具体的业务操作,如:查询数据库,封装数据等
    • V:View;视图,主要用来展示数据
    • C:Controller;控制器,主要用来干3件事
      1. 获取用户的输入数据
      2. 调用模型
      3. 将数据交给视图进行展示
        在java-web开发中,用Servlet充当Controller控制器;用JavaBean充当Model模型,用JSP充当View视图
  3. MVC开发模式主要结构图
    MVC开发模式主要结构图

  4. MVC的优缺点

    1. 优点
      • 代码耦合性降低,便于维护,便于分工合作
      • 代码重用性得到提高
    2. 缺点
      • 使得项目架构变得复杂,对开发人员要求提高

EL表达式

1. 概念   :Expression Language 表达式语言
2. 作用   :用来替换和简化JSP页面中的java代码的编写
3. 语法   :${表达式}
4. 注意
    **JSP默认是支持El表达式的,若要忽略EL表达式;可以**
    1. 设置JSP中的page指令:isELIgnored="true" 忽略当前页面中所有的EL表达式
    2. EL表达式前加反义字符"\",忽略当前这个EL表达式;\${3 > 4}
5. 使用
    5.1. 运算
        运算符
            1. 算术运算符:+ - * /(div) %(mod)
            2. 比较运算符:> < >= <= == !=
            3. 逻辑运算符:&&(and) ||(or) !(not)
            4. 空运算符: empty
                - 功能:用于判断字符串、集合、数组对象是否为null,或者长度是否为0
                - ${empty list}     :判断字符串、集合、数组对象是否为null,或者长度是否为0
                - ${not empty list} :判断字符串、集合、数组对象是否不为null,或者长度大于0
    <h4>empty运算符</h4>
      <%
        List alist = new ArrayList();
        //alist.add("asd");
        request.setAttribute("list", alist);
        String str = "";
        request.setAttribute("str",str);
      %>
      ${
   empty str}<br>
      ${
   not empty list}<br>

empty运算符结果
empty运算符结果

    5.2. 获取值
        **EL表达式只能从域对象中获取值**
        
         -  语法
            1. ${域名.键名} :从指定的域对象中获取指定键的值
                - 域名
                    1. pageScope        --> pageContext
                    2. requestScope     --> request
                    3. sessionScope     --> session
                    4. applicationScope --> application(ServletContext)

                - 举例:在request域中存储了name=张三
                - 获取:${requestScope.name}
            2. ${键名}    :表示依次从最小的域中查找,是否有该键对应的值,直到找到为止;上述域名的范围由小到大
            3. 获取对象,List集合,Map集合的值
                3.1. 对象   :${域名.键名.属性名}
                    - 通过对象的属性方法来获取值
                    - 实际上是访问setter或getter方法,去掉set或get,将剩余部分首字母变为小写,调用该方法
                    - 如setName方法-->Name-->name;即通过name属性名便可调用setName方法了
                    - 这里实际上调用的是getter方法
                       <%
                         User user = new User();
                         user.setName("张三");
                         user.setAge(34);
                         user.setBirthday(new Date());
                         request.setAttribute("user", user)
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值