• JSP


    简介

    概念:可以运行在服务器端的动态显示页面技术

    作用:负责动态数据展示,替代servlet中view的servlet程序

    书写:在HTML标签中,个别嵌套java代码

    JSP脚本元素

    可以书写Java代码标签

    表达式脚本

    1.作用:运行java代码,并产生结果    将结果显示给浏览器

    2.语法给是:<%= java的表达式%>

    3.注意事项:不能再java表达式结尾写 ;

    声明脚本

    1.作用: 声明变量(相当于view的servlet的属性),定义函数

    2.语法格式: < %! 代码%>

    普通脚本

    1.作用: 书写并运行流程控制普通java代码

    2.语法格式: <% 普通java代码 %>

    3.注意问题: JSP中java脚本标签不能嵌套

    JSP执行原理

      浏览器-->ABC.jsp---->tomcat将jsp翻译成servlet  ABC.java  ----(编译)----ABC.class---调用service方法

    JSP指令元素

    page页面指令
        语法:
            <%@ 指令名  属性名=‘值’%>
            <%@page 属性名='值’%>
    常用指令属性:
        pageEncoding:tomcat读取jsp翻译成servlet时,使用字符流编码
        import:导包
        isErrorPage:boolean类型,是否为错误页面(true为错误页面,内置java对象exception)
        erroPage:指定错误页面(指定错误页面的rul-pattern)
        contentType:设置浏览器解析内容响应类型
        session:boolean类型(true 饿汉式  相当于req.getSession(); falst  懒汉式 相当于没有)
    
    包含指令
        语法:
            <%@include file="被包含文件的url-pattern"%>
        作用:复用部分jsp代码
        原理: 源代码包含(静态包含)。存在java变量冲突问题
    
    动作指令 语法:      
    <jsp:动作名称 属性名=“属性值”/>    <jsp:include page="被包含的jsp的url-pattern“/> 作用:复用jsp的效果 原理:动态包含

    JSP内置对象(9个)

    • 概念: 可以直接在java脚本中使用的对象(不需要创建和声明)
    • 原理:service方法的局部变量
    • 注意:内置对象只能在表达式脚本和普通脚本中使用

    常见内置对象

    • 1.exception:只能在isErrorPage='true'
    • 2.request:代表请求对象,service方法的形参
    • 3.session:代表HttpSession
    • 4.application:servletContext对象
    • 5.response:代表响应对象response
    • 6.page: this 当前jsp翻译后的servlet的对象
    • 7.out:JspWriter(相当于PrintWriter),面向浏览器的输出流对象
    • 8.config:相当于ServletConfig   配置常量信息  init加载时
    • 9.PageContext(重要): 
    作用域:当前JSP页面内的生命周期
      存:pageContext.setAttribute("name",值);
      取:pageContext.getAttribute("name");
        
    管理4个作用域:   存值:
        pageContext.setAttribute(String 名字,Object 值,
    int);   int参数:    PageContext.PAGE_SCOPE;将命名属性存入PageContext作用域   PageContext.REQUEST_SCOPE;存入request作用域   PageContext.SESSION_SCOPE;存入session作用域   PageContext.APPLICATION_SCOPE;存入application作用域   取值:
        pageContext.getAttribute(String 名字,
    int 作用域常量值);  
    管理其他8个内置对象   动态获得项目名:     req.getContextPath();   借助于pageContext动态获得项目名     pageContext.getRequest().getContextPath();

    EL表达式

    • 作用:执行表达式,并且将表达式结果,响应输出浏览器
    • 语法:${el 表达式}

     获得作用域中的值

    EL内置对象:
    获得PageContext作用域: ${pageScope.命名属性的name}
    获得request作用域:${requestScope.命名属性的name}
    获得session作用域:${sessionScope.命名属性的name}
    获得application作用域:${application.命名属性的name}

    访问对象的属性

    语法:${对象.属性名}
       ${对象.属性名.属性的属性名}
    
    原理(重点):${对象.get属性的方法名取消get,首字母小写}
    
    el内置对象:pageContext
    动态获得项目名
    方法:pageContext.getRequest().getContextPath();
    EL:${pageContext.request.contextPath}

    获得请求参数

    请求参数:浏览器发送servlet的请求数据(超链接、form提交、地址栏)
    servlet接收:req.getParameter("name");
    JSP: ${param.请求参数名字}

    访问list和map集合

    EL访问List集合
        访问list集合中i下标的元素:${list集合[i]}    //相当于list.get(i)
    
    EL访问Map集合
        根据map的key获得对应的值
        要求:key必须是数字或者字符串类型
        语法:${map.key}    key不能为数字
                 ${map["key"]}  通用

    访问cookie中值

    ${cookie.cookie的name.value}//得到对应name的cookie对象

     

    JSTL标签库

       第三方提供的标签库

      语法:<前缀:if 属性名='值'></前缀:标签名>

      使用:

    1.导入jstl标签库jar
    2.在jsp中引入标签库
        <%@taglib uri="****"  prefix =' c 前缀名'%>
    3.使用标签库
        <c: 标签名  属性名 = '值'></c:标签名>

      

      常见的jstl标签  

    1.单条件判断
      <c:if test = "el表达式写条件"> 条件成立后执行的代码 </c:if> 2.多条件分支 <c:choose> <c:when test="条件1">条件1成立运行的代码</c:when> <c:when test="条件2">条件2成立运行的代码</c:hwen> <c:otherwise>所有条件都不成立,执行的代码</c:otherwise> </c:choose> 3.循环遍历
      List集合遍历:
    <c:forEach var="p" items="被遍历的list集合"> 被循环执行的代码
         获得当前遍历对象//将p自动存入pageContext作用域中
         ${p}
    </c:forEach> 常用属性: items:被遍历的集合 var:当前被遍历对象的名字 begin:起始下标 end:截止下标 step:步长 varStatus:描述下标和序号 varStatus=“**” ${**.count}//序号 从1开始的序号 ${**.index}//下标 从0开始的下标
      
      Map集合遍历:
      <c:forEach items="被遍历的map集合" var = "en">
        ${en} //Map.Entry 包含key-value
        en.key
        en.value
      </c:forEach>

    4.c:set标签
      作用:可以向作用域中存入数据(命名属性:name value)
      本质:pageContext.setAttribute("name",value,int作用域);
      语法:<C:set var="name" value="值" scope="那个作用域"></c:set>
      scope可选值: page request session application
      <c:set var="命名属性的name" scope="作用域">
        值
      </c:set>

    5.c:remove标签
      作用:从作用域中删除某个值
      语法:<c:remove var="命名属性的name" scope="那个作用域">

    6.c:url标签
      作用:1.自动追加项目名
         2.在cookie被禁用的情况下,自动url重写
      语法:
         <c:url value="url-pattern路径"></c:url>

    7.日期格式化显示标签
      需要先导入fmt标签路径
      语法:
         <fmt:formatDate value="" pattern=""/>
         value:需要格式化显示的日期
         pattern:格式

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

  • 相关阅读:
    ChartCtrl源码剖析之——CChartTitle类
    ChartCtrl源码剖析之——CChartObject类
    如何在BCGControlBar工程的工具栏里面新增下拉列表控件
    如何在BCGControlBar界面库的CBCGPFormView子视图里面添加工具栏
    记一次调试串口设备Bug的经历
    复数学习笔记
    2021 新高考Ⅰ卷数学试卷及答案
    博客搬家了
    塔伯自我指涉由图片生成K值python程序
    塔伯自我指涉公式作图程序(matplotlib)
  • 原文地址:https://www.cnblogs.com/lhl0131/p/13203663.html
Copyright © 2020-2023  润新知