JSP和MVC,EL表达式,JSTL标签,三层架构

JSP和MVC,EL表达式,JSTL标签,三层架构

1. JSP

1. 指令

​ 1. 格式:<%@ 指令名称 属性名 = 属性值%>

2. 分类:
  	1. page:设置contentType;pageEncoding;language;buffer;import;errorPage;isErrorPage
  	2. include:页面中包含的资源页面,共有组件
  	3. taglib:包含的库文件;<%@ taglib prefix="c" uri="uri" %>

2. 注释

  1. html注释 在html源码中会显示
  2. jsp注释<%-- --%>在html源码中不会显示

3. 内置对象

1. pageContext对应PageContext
2. request对应HttpServletRequest
3. session对应HttpSession
4. application对应ServletContext
5. response对应HttpServletResponse
6. page对应Object
7. out对应JspWriter
8. config对应ServletConfig
9. exception对应Throwable

2. MVC

  1. jsp演变历史:

    1. 早期只有Servlet,只能使用response输出标签数据,比较麻烦
    2. 后来有了JSP,简化了Servlet开发方式,但是造成代码复杂,可读性、可维护性差
    3. JavaWeb开发借鉴MVC开发模式让,程序的设计更加合理
  2. 什么是MVC开发模式?

    1. M odel:JavaBean

      完成具体业务操作,例如查询,封装对象

    2. V iew:JSP

      展示数据

    3. C ontroller:Servlet

      1. 获取用户输入
      2. 调用模型
      3. 将数据返回给视图展示
  3. 优缺点

    1. 优点:方便维护,利于分工协作,耦合性低(模块相互联系紧密程度)
    2. 缺点:使得项目架构复杂,不适合小型项目

3. EL表达式

  1. 概念:Expression Language 表达式语言
  2. 作用:替换和简化JSP页面中Java代码的编写
  3. 语法:${expression}
  4. 注意:浏览器默认开启EL功能,关闭需要在头中使用isELIgnored属性,或者直接在元素前加\转义字符
  5. 具体:
    1. 运算
      1. 算术
      2. 比较
      3. 逻辑 and or not
      4. 空 empty 判断对象是否空,长度是否为0
    2. 获取值
      1. 注意事项:只能从域对象中获取值
      2. 语法:
        1. ${field.keyname} 在指定域中获取指定值
          1. pageScope--->pageContext
          2. requestScope--->request
          3. sessionScope--->session
          4. applicationScope--->application / ServletContext
        2. ${keyname} 依次从最小的域中查找,直到找到为止
        3. 如果keyname只是一个Object类型,直接用keyname.value,可以调用其get方法找到值
          1. List:listname[index]
          2. Map:mapname.name or mapname[name]
        4. empty和not empty:判断字符串,集合,数组是否空,长度是否为0
        5. 11个隐式对象
          1. pageContext 可以用来获取JSP其他的内置对象

JSTL标签

  1. 下载链接:下载1.1.2版本

  2. 概念:Java Server Pages Tag JSP标准标签库

    扫描二维码关注公众号,回复: 11131302 查看本文章
  3. 作用:简化和替换JSP页面上的Java代码

  4. 使用方法:

    1. 导入jstl的jar包
    2. 引入标签库:taglib <% @ taglib %>
    3. 使用
  5. 常用的JSTL标签

    1. if

      <c:if test="true">
              <p>我是c:if块</p>
      </c:if>
      

      true为表达式,if没有else配对,如果需要分别两种情况只能再写一个if

    2. choose

       <c:choose>
              <c:when test="${number==1}">星期一</c:when>
              <c:when test="${number==2}">星期二</c:when>
              <c:when test="${number==3}">星期三</c:when>
              <c:when test="${number==4}">星期四</c:when>
              <c:when test="${number==5}">星期五</c:when>
              <c:when test="${number==6}">星期六</c:when>
              <c:when test="${number==7}">星期日</c:when>
              <c:otherwise>错误</c:otherwise>
       </c:choose>
      

      c:choose 可以和c:otherwise联合一起用

    3. foreach

      简单循环

      <c:forEach begin="1" end="10" var="i" step="1">
              ${i}<br>
      </c:forEach>
      

      begin初始值,end结束值,var临时变量,step步长,varStatus.index当前标,varStatus.count循环次数

      遍历容器

      <c:forEach items="${list}" var="str" varStatus="s">
              ${s.index}---${s.count}---${str}
              <br>
      </c:forEach>
      

      items容器对象,var临时变量,varStatus.index,varStatus.count同上

猜你喜欢

转载自www.cnblogs.com/lijiext/p/12783737.html