JSP

作者: 开心的小哈 | 来源:发表于2022-04-05 12:31 被阅读0次
  1. JSP:
    1. 指令
    2. 注释
    3. 内置对象
  2. MVC开发模式
  3. EL表达式
  4. JSTL标签
  5. 三层架构

JSP

  1. 指令
    • y作用:用于配置JSP页面,导入资源文件;
    • 格式:<% 指令名称 属性名 = 属性值 %>
    1. page:配置jsp页面的
      1. contentType:等同于response.setContentType
        1. 设置响应体的mime类型以及字符集
        2. 设置当前jsp页面编码,(只能是高级的IDE才能生效)如果使用低级工具,则需要设置pageEncoding属性设置当前页面的字符集
        3. langage="java" buffer="16kb"设置语言,设置缓冲区大小;
        4. import="java.util.List"导包的
        5. errorPage:当前页面发生异常后会自动跳转到指定的页面;
        6. isErrorPage:标识当前页面是否是错误页面;标注true可以使用exception对象来获得报错信息,标注false:否,默认值不可以使用内置对象exception对象
    2. include:页面包含的。导入页面资源文件
      <%@include file="logo.jsp"%>
    3. taglib:导入资源 prefix前缀,uri指定标签库
      <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
      前缀:prefix
      uri 资源地址
  2. 注释:
    1. html注释``````
    2. jsp注释(推荐)<%-- --%>(两个注释的区别:jsp注释后页面客户端页面上不会有注释信息,而html会有)
  3. 内置对象
    1. pageContext 当前页面共享数据,获取其他9个内置对象
    2. request 一次访问的多个资源(转发)
    3. session 一次会话的多个请求间
    4. application 所有用户间共享数据
    5. response 响应对象
    6. page 当前页面的对象
    7. out 输出对象,数据输出到页面上
    8. config Servlet的配置对象
    9. exception 异常对象

MVC:开发模式

  1. jsp演变历史
    1. 早期只有servlet,只能使用response输出标签数据,非常麻烦
    2. 后来有jsp,简化Servlet的开发,如果过度使用jsp,在jsp中写大量的java代码,html白哦,Javascript代码,难以维护;
    3. 再后来java的web开发,借鉴MVC开发模式,使得程序的设计更加合理性;
  2. MVC:
    1. M:Model,模型:完成具体的业务操作,如:查询数据库,封装对象,javabean
    2. V:view,视图:展示数据 jsp
    3. C:Controller ,控制器:获取用户输入,调用模型,将数据交给视图进行展示;servlet
  3. 优缺点
    1. 有点:耦合性低,重用性高,方便维护,利于分工协作;
    2. 缺点:使得项目架构变得负责,对于开发人员要求高;

EL表达式

概念:Expression Language表达式语言
作用:替换和简化jsp页面中java代码的编写
语法:{表达式} 注意: jsp默认支持表达式,isELigored=true,忽略全部el表达式,忽略一个```\{表达式}```
使用:

  1. 运算:运算符:
    1. 算数运算符+-*/(div) %(mod)
    2. 比较运算符:<> >= <= == !=
    3. 逻辑运算符||(or) &&(and) & | !(not)
    4. 空运算符:empty:功能用于判断字符串,集合数组对象是否为null并且长度为0,{empty list}不为空{not empty list}
  2. 获取值
    1. el表达式只能从域对象中获取值
    2. 语法:${域名称.键名称}从指定域中,获取指定的键的值
      域名称:1.pageScope-->pageContext
  3. requestScope->request
    3.sessionScope-->session
  4. applicationScope-->application(ServletContext)
    举例:在request域中存储了name=张三
    获取${requestScope.name},特点如果获取不到则不会打印任何内容
    1. 语法2:${键名}:标识依次从最小的域中查找是否有该键对应的值,直到找到位置。
    2. 获取对象:list集合,map集合
      1. 对象获取 ${域名称.键名.属性名},本质上会去调用对象的getter方法
      2. list集合:${域名称.键名[索引]}
      3. Map集合:{域名称.键名.key名称}or{域名称.键名.["key名称"]}
        隐式对象
        el表达式中有11个隐式对象
        pageContext:
        获取jsp其他八个内置对象
        ${pageContext.request.contextPath}:动态获取虚拟目录;

JSTL

概念:javaServer Pages Tag Library JSP标准标签库,是由Apache组织提供的开源的免费的jsp标签
作用:用于简化和替换jsp页面上的java代码
使用步骤:

  1. 导入jstl相关jar包

  2. 引入标签库:taglib指令:<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jst1/core" %>

  3. 使用标签

  4. 常用的JSTL标签

    1. if :相当于java代码的if语句,
      1. 属性:test 必须属性,截至boolean表达式
      2. 如果表达式为true则展示白哦前提内容,如果为false则不展示标签体内容
      3. 一般情况下,test属性会结合el表达式一起使用
      4. 注意注意他没有else如果想要则需要在定义c:if标签
    2. choose:相当于java的switch的语句
      1. choose相当于switch声明
      2. 使用when标签做出判断,相当于case
      3. otherwise标签做其他情况的声明,相当于default
    3. foreach:相当于java的foreach循环的语句
      1. 完成重复的操纵
      for(int i=0;i<10;i++){
      
      }
      属性:
          begin:开始值
          end:结束值
          var:临时变量
          step:步长
          varStatus:循环状态对象
              index:容器中元素的索引从0开始
              cont:循环次数从1开始
      
      
      

    定义成JSTL

    
    <c:forEach begin="1" end="10" var="i" step="1">
    ${i}<br>
    </c:forEach>
    
    
    1. 遍历容器

      
      List<User> list;
      for(User user:list){
      
      }
      属性:
          items:容器对象
          var容器中元素的临时变量
          varStatus循环状态对象
              index容器中元素的索引,从0开始
              count循环次数,从1开始
      

      定义成JSTL

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

    1. 需求:在request域中有一个存有User对象的LIST集合。需要使用jstl+el价格呢list集合数据展示到jsp页面的表格table中
<%@ page import ="java.util.Date"%>
<%@ page import ="java.util.ArrayList"%>
<%@ page import ="java.util.List"%>
<%@ page import ="dao.User"%>
<%@ page language="java" contentType="text/html;charset=UTF-8"
    pageEncoding="UTF-8" errorPage="500.jsp"%>  <!-- 声明出错处理的文件为error.jsp -->
 <%@ include file="logo.jsp"%>

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<%
List list=new ArrayList();
list.add(new User("张三",23,new Date()));
list.add(new User("李四",11,new Date()));
list.add(new User("王五",22,new Date()));
request.setAttribute("list",list);
%>

<h1>el获取值</h1>
<table border="1" width="500" align="center">
<tr><th>编号</th><th>姓名</th><th>年龄</th><th>生日</th></tr>
<c:forEach items="${requestScope.list}" var="user" varStatus="s">
<c:if test="${s.count % 2 != 0}">
<tr bgcolor="red">
<td>${s.count}</td>
<td>${user.name}</td>
<td>${user.age}</td>
<td>${user.birStr}</td>
</tr>
</c:if>
<c:if test="${s.count % 2 == 0}">
<tr bgcolor="green">
<td>${s.count}</td>
<td>${user.name}</td>
<td>${user.age}</td>
<td>${user.birStr}</td>
</tr>
</c:if>


</c:forEach>

</table>

</body>
</html>

相关文章

  • java基础-day43-JSP

    JSP 1. JSP 1.1 JSP概述 1.2 为什么要用JSP 1.3 JSP语法 1.3.1 JSP语法格式...

  • jsp学习 EL JSTL C标签

    JSP 第一个JSP程序 JSP对比servlet JSP中java脚本元素 JSP原理 JSP的翻译规则 JSP...

  • JSP基础学习笔记(3)--JavaBean

    JSP动作标签:

  • 用session对象实现用户登录

    index.jsp deal.jsp main.jsp exit.jsp

  • JavaWeb之JSP

    八、JSP 目录:什么是JSP、JSP原理、JSP基础语法、JSP指令、9大内置对象、JSP标签 JSTL标签 E...

  • jsp语法

    Jsp语法包含:注释、jsp指令、jsp脚本元素、jsp动作元素。 Jsp注释: Htm...

  • jsp

    jsp介绍 jsp语法 jsp指令 EL表达式 自定义标签 jsp指令 - page jsp指令 - includ...

  • JSP入门

    JSP的基本语法:1.JSP声明语法。2、JSP程序脚本。3、JSP脚本注释。4、JSP内容输出表达式。5、JSP...

  • jsp的内置标签

    jsp:forward 重定向标签

  • Java面试问题

    1、JSP: jsp和servlet的区别 jsp本质就是Servlet,jsp的工作原理是:JSP页面在执行的时...

网友评论

      本文标题:JSP

      本文链接:https://www.haomeiwen.com/subject/bbybjrtx.html