zoukankan      html  css  js  c++  java
  • JavaWeb基础Day17 (JSP EL表达式 jstl标签库 beanutil工具类)

    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类型,那么就需要我们自己进行转换
  • 相关阅读:
    架构师之路--视频业务介绍,离线服务架构和各种集群原理
    架构师之路--怎样聊技术天,限流技术和各类编程语言
    一条项目中常用的linux命令引发的经典算法题
    架构师之路--应用架构的选型和dubbo
    乐视开放平台技术架构-servlet和spring mvc篇
    架构师之路--从业务角度谈缓存的选型
    架构师之路--谈业务的合理架构
    IO回忆录之怎样过目不忘(BIO/NIO/AIO/Netty)
    520特篇-爱的境界
    编程十年的十种武学境界
  • 原文地址:https://www.cnblogs.com/ZhuX-H/p/13393873.html
Copyright © 2011-2022 走看看