JSP

jsp的实质就是指在html界面中嵌入Java代码

  • jsp脚本

    • <%  Java代码  %>  相当于写在service方法中。
    • <%=java 变量或者表达式 %> 相当于在service 内部写了  out.println
    • <%! java代码 %>  实质上翻译成servlet ,出现在成员变量的位置
    • <!-- 注释内容 -->,源码可见,编译后的Java文件可见,最终的html文件可见
    • // 单行注释  /*多行注释*/ 源码可见,编译后的文件可见,最终的html文件不可见
  • jsp的运行原理

    • jsp文件在第一次被访问时会被解析成servlet ,所以jsp的实质就是一个servlet类,将内部的html标签在servlet内部使用  response.getWrite.write() 的方式进行输出
  • jsp的指令

    • page 指令

      • language:jsp脚本中可以嵌入的语言种类
      • pageEncoding:当前jsp文件的本身编码-----内部可以包含contentType
      • contentType:response.setContentType("text/html;charset=UTF-8");
      • import :导入Java的包
      • errorPage:当前页面出错后跳转到设定的报错页面
      • isErrorPage :当前页面是一个处理错误的页面,配置后可以获取异常信息
    • include 指令,是包含文件的指令<%@ include  file  =  "被包含的文件地址" %>
    • taglib指令 : 用于导入标签库<%@  taglib  uri  =  "标签库地址"  prefix="前缀"  %>
  • jsp九大内置对象

    • pageContext      jsp的页面容器
    • session                   当前会话对象
    • application                   servlet 配置 , 获取servlet 信息
    • config                           servlet 配置,获取servlet信息
    • out                                页面输出对象
    • page                             当前servlet对象
    • request                         request对象
    • response                      response对象
    • exception                     jsp页面所发生的异常,在错误页中才起作用
  • pageContext对象

    • 域对象

      • pageContext域中放入数据,所以也是可以存放数据的
    • 数据的写入,读取,删除

      • 向pageContext域中放入数据 setAtrribute(String name , object  obj);
      • 从pageContext域中获取数据 getAttribute(String name);
      • 从pageContext域中删除数据 removeAttribute (String name);
    • 作用范围当前jsp文件

      • 域对象的作用范围只在当前的jsp页面中,所以一般不适用这个域对象存放数据
    • 指定向其他域中存取数据

      • 向指定域中存放数据  setAttribute(String name ,object obj,int scope)
      • 从指定域中获取数据 getAttribute (String name ,int scope)
      • 从指定域中删除数据 removeAttrbute(String name,int  scope)
    • 依次从四大域中获取数据

      • 依次从 pageContext , request , session , servletContext这四大域中获取数据,找到即停止 findAttribute(String  name)
    • 通过pageContext对象获取其他8大内置对象

      • pageContext.getRequest();
      • pageContext.getResopnse();
  • out对象

    • 用于向指定页面输出语句,在jsp 被翻译后的文件中看到的  out.write(),在jsp中使用的<%="abc"%>使用的都是out对象,将数据写入呕吐、缓存区,然后再从out缓冲区刷入response 缓冲区
  • config对象

    • 获取当前servlet的配置信息
  • exception对象

    • 如果当前页面是一个errorpage ,就是再page指令的属性中的配置 isErrorPage = true ,通过这个对象可以获取异常信息<%=exception.getLocalizedMessage%>
  • 404错误总结

  • 1.已启动web应用里面的任何资源都是404
    |-web应用是否已经部署
    |-看localhost:8080,直接出不来,基本可以断定服务器 没有启动
    |tomcat重新装,1,2,3,将磁盘中的tomcat删 除,重新解压新的tomcat,重新配
    |- web.xml问题,导致web应用启动不起来,重新看控制 台找异常信息
    2.一启动单个资源是404
    |-如果是servlet,看web.xml中的url-pattern是否和 浏览器中的一致
    |-如果是html,看文件名称,看这个html在不在webCont ent
    3.界面能显示,一点击提交按钮404
    |-看当前form中的action的路径,看是否是对应的servl et的url-pattern
    |- 明明正确还是404,有可能是浏览器的缓存问题,在当前 网页右键查看源代码, 看路径是否和eclipse中一致,如果不一致,清除浏览 器缓存
    4.图片不正常显示
    |-在浏览器中点击右键查看源代码,看当前img的路径,是 否是正确的路径
    |- 看你的img放的目录是否是在webContent中 以后凡是遇到写路径先写/,除了内部转发以外,其他的所有路径 都是从web应用的名字开始, 内部转发从/从webContent目录下开始

      

EL表达式

  EL  表达式可以嵌入在jsp页面内部,在于简化从域中获取数据的操作

  • 从域中获取值(重要)

    • 获取四个域中的数据

      • pageScope :能获取pageContext域中的数据
      • requestScope :能获取request域中的数据 ${requestScope.key}
      • sessionScope :能获取session域中的数据 ${sessionScope.key}
      • applicationScope :能获取servletContext域中的数据${applicationScope.key}
      • 依次从四个域中查找对应的值,如果存在就停止查找 ${key}
  • 内置pageContext对象

    • 最常用的方法就是通过EL获取应用程序的名称${pageContext.request.contextPath}
    • <form action="${pageContext.request.contextPat h}/check" method="post">
      <input type="text" name="username">
      <input type="password" name="pwd">
      <input type="submit"> 篮球
      <input type="checkbox" value="lq" name="hob by">足球
      <input type="checkbox" value="zq" nam e="hobby">乒乓球
      <input type="checkbox" value="pp q"name="hobby">
      </form>

        

  • 常用表达式

    • ${name eq "张三"} 返回true 或者false, 比较字符串  (  ==  是比较内存地址)

JSTL标签库

  • jstl常用标签

    • c:url  路径标签 <a href="<c:url value="/index.jsp"/>"> 超链接</a> == <a href="${pageContext.request.contextPath}/index.jsp">超链接</a>
    • c:if 判断标签 <c:if test="${1==1}"> 判断成功  </c:if>
    • c:choose  多条件,判断标签
      • <c:choose>
        <c:when test="${name == 1 }">
        <h1 style="color: red;">判断正确了</h1>
        </c:when> <c:when test="${name == 2 }">
        </c:when> <c:when test="${name == 3 }">
        </c:when> <c:otherwise>上述情况均不满足</c:otherwise>
        </c:choose>
    • c:forEach   循环遍历标签
      • begin  表示开始索引
      • end   表示结束索引
      • step     表示频率
      • varstatus  表示当前的状态
        • index属性 表示循环当前的索引
        • count属性表示循环的当前次数 从 1 开始
      • items   表示遍历的集合元素
      • var       表示每次将集合的元素赋值给的变量名
      • <c:forEach begin="0" end="100" step="1" varStat us="status">
        <!--获取当前循环的索引值-->
        ${status.index }
        <!--获取当前循环的次数-->
        ${status.count }
        </c:forEach>
        遍历集合
        <c:forEach items="${list }" varStatus="status" var="item">
        ${status.index }:${item.name }
        </c:forEach>
      • fmt:formatDate  格式化日期标签
        • 需要导入fmt标签库  <%@  taglib  prefix = "fmt"  uri = " http://java.sun.com/jsp/jstl/fmt "  %>
        • <fmt:formatDate value="${user.updateTime}" type="both" pattern="MM-dd HH:mm"/>
  • BeanUtils工具类

    • 在servlet中获取表单数据使用 Map<String, String[]> map= request.getParameterMap(); ,并创建对应的model对象 People pe = new People();
      调用DBUtils的 BeanUtils.populate(pe, map); 此方法会将表单数据封装到对应的pe的属性中
    • 意BeanUtils会进行默认的数据类型封装,也就是说如果我们定义的成员变量的类型是int,BeanUtils会自动的将String转换为int类型,但是对于多选框 checkbox 类型的,我们必须将成员变量的类型定义为 String [] 否则就会出现转换异常,如果是在有需求是List类型,那么就需要我们自己进行转换

JavaWeb基础Day17 (JSP EL表达式 jstl标签库 beanutil工具类)的更多相关文章

  1. jsp学习---mvc模式介绍和el表达式,jstl标签库的使用入门

    一.mvc模式介绍 下图是常用的mvc分层模式: 项目中的包命名规则,一般如下: com.amos.domain 封装JavaBean,一般我喜欢用model命名这个包com.amos.dao 封装d ...

  2. 2.EL表达式&JSTL标签库常用方法

    1.EL表达式 Expression Language表达式语言,主要是代替jsp页面中的表达式脚本在jsp页面中进行数据的输出. 格式为${表达式} EL表达式输出Bean的普通属性.数组属性.Li ...

  3. 重温JSP学习笔记--JSTL标签库

    以前写jsp的时候对jstl标签库是有些抵触的,因为我觉得嵌入java代码的方式几乎无往不利,没有必要使用标签库,不过这次复习还是好好地学习了一下,发现这个还是很有用处的,用得好能省不少事,JSTL是 ...

  4. javaweb学习总结(二十八)——JSTL标签库之核心标签

    一.JSTL标签库介绍 JSTL标签库的使用是为弥补html标签的不足,规范自定义标签的使用而诞生的.使用JSLT标签的目的就是不希望在jsp页面中出现java逻辑代码 二.JSTL标签库的分类 核心 ...

  5. javaWeb学习总结(9)- JSTL标签库之核心标签

    一.JSTL标签库介绍 JSTL标签库的使用是为弥补html标签的不足,规范自定义标签的使用而诞生的.使用JSLT标签的目的就是不希望在jsp页面中出现java逻辑代码 二.JSTL标签库的分类 核心 ...

  6. JavaWeb学习笔记(九)—— JSTL标签库

    一.JSTL概述 1.1 什么是JSTL  JSTL是apache对EL表达式的扩展(也就是说JSTL依赖EL),JSTL是标签语言!JSTL标签使用以来非常方便,它与JSP动作标签一样,只不过它不是 ...

  7. jsp之el表达式jstl标签

    不管是el表达式还是jstl标签最终的目的都是要消除jsp中的java代码,当然是消除显式的java代码 el表达式的出现是为了简化jsp中读取数据并写入页面的操作. el表达式的功能不多,也很好记 ...

  8. JSP总结(jsp/EL表达式/核心标签)

    1.概念 jsp,即java Server Pages,java服务器页面. 2.简单介绍 小示例 <%@ page language="java" contentType= ...

  9. el和jstl标签库讲解视频

    https://www.bilibili.com/video/av22415283/?p=1

随机推荐

  1. 「疫期集训day12」阴雨

    我们走进了泥泞的雨林----阿尔贡森林里艰难前进的士兵 今天考试一般,T1T2签到题没啥好说的,剩下三个小时全肛T3(我脑子有泡,前几天刚做了一道类似T4的难题,公式更难推),9:00->10: ...

  2. 一个howdoo的预兆

    原文链接:https://medium.com/howdoo/its-an-omen-for-howdoo-b33b831ed936 它是一个预兆.它是刻在墙上的.它不会消失 随着越来越多的人对Fac ...

  3. [JAVA]SpringBoot中让接口支持跨域

    官方原文:https://spring.io/blog/2015/06/08/cors-support-in-spring-framework ===抽空翻译 最简单办法:在方法上增加注解: @Cro ...

  4. 一、kafka 安装配置

    Kafka是什么 Kafka最初是由LinkedIn公司采用Scala语言开发的一个分布式.多分区.多副本且基于ZooKeeper协调的内部基础设置,现已捐献给Apache基金会.Kafka是一个流平 ...

  5. 数据可视化实例(十一): 矩阵图(matplotlib,pandas)

    矩阵图 https://datawhalechina.github.io/pms50/#/chapter9/chapter9 导入所需要的库 import numpy as np # 导入numpy库 ...

  6. log4j系统日志(转载)

    地址:http://www.codeceo.com/log4j-usage.html 日志是应用软件中不可缺少的部分,Apache的开源项目log4j是一个功能强大的日志组件,提供方便的日志记录.在a ...

  7. Go Pentester - HTTP Servers(3)

    Building Middleware with Negroni Reasons use middleware, including logging requests, authenticating ...

  8. springboot application.yml配置学习

    一.背景 为了更好的使用springboot,所以看一下application.yml配置这块.主要是看数据绑定这块. 主要参考:https://www.hangge.com/blog/cache/d ...

  9. BT面板安装教程

    面板特点 一键配置服务器环境(LAMP/LNMP) 一键安全重启 一键创建管理网站.ftp.数据库 一键配置(定期备份.数据导入.伪静态.301.SSL.子目录.反向代理.切换PHP版本) 一键安装常 ...

  10. Spring当中循环依赖很少有人讲,今天一起来学习!

    网上关于Spring循环依赖的博客太多了,有很多都分析的很深入,写的很用心,甚至还画了时序图.流程图帮助读者理解,我看了后,感觉自己是懂了,但是闭上眼睛,总觉得还没有完全理解,总觉得还有一两个坎过不去 ...