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类型,那么就需要我们自己进行转换
  • 相关阅读:
    博客园
    未释放的已删除文件
    ssh连接缓慢
    剑指 Offer 38. 字符串的排列
    剑指 Offer 37. 序列化二叉树
    剑指 Offer 50. 第一个只出现一次的字符
    剑指 Offer 36. 二叉搜索树与双向链表
    剑指 Offer 35. 复杂链表的复制
    剑指 Offer 34. 二叉树中和为某一值的路径
    剑指 Offer 33. 二叉搜索树的后序遍历序列
  • 原文地址:https://www.cnblogs.com/ZhuX-H/p/13393873.html
Copyright © 2011-2022 走看看