EL&JSTL

一、简介

  1. EL表达式,全程即Expression Language是表达式语言,作用是替代JSP页面中的表达式脚本进行输出,因为EL表达式更加的简介方便
      <!-- 传统的jsp表达式脚本输出 -->
      <%request.setAttribute("key1","value1");%>
      <%=request.getAttribute("key1")%>
      <!-- EL表达式 -->
      ${key1}

    EL表达式输出null值的时候,输出的是空串,而JSP表达式脚本则会输出null字符串

二、EL表达式脚本输出域数据的顺序`

  • 当四个域中存在相同的key数据时,EL表达式脚本会按照四个域即pageContext-->request-->session-->application的顺序进行搜索,找到就输出
  • EL表达式中输出Bean的普通属性、数组属性、List集合属性、map集合属性

三、EL表达式运算-->  $(运算表达式)

  1. 关系运算
  2. 逻辑运算
  3. 算数运算
  4. empty运算                           判断一个数据是否为空,如果为空,则返回true,否则返回false
  5. 三元运算
  6.  . 运算和 []运算                    . 可以输出bean对象某个属性的值,[]可以输出有序集合中某个元素的值,还可以输出map集合的key中含有特殊字符的值

四、EL表达式的十一个隐含对象       EL表达式中自己定义的,可直接使用

  1. pageContext           pageContextImpl      - ->可获取pageContext中的九大内置对象
  2. pageScope             Map<String,Object> - ->可获取pageContext域中的数据
  3. requestScope         Map<String,Object> - ->可获取request域中的数据
  4. sessionScope         Map<String,Object> - ->可获取session域中的数据
  5. applicationScope    Map<String,Object> - ->可获取servletContext域中的数据
  6. param                     Map<String,String> - ->可获取请求的参数的值
  7. paramValus            Map<String,String[]> - ->可获取请求的参数的值,获取多个值时使用
  8. header                    Map<String,String> - ->可获取请求头信息
  9. headerValues         Map<String,String[]> - ->可获取请求头信息,获取多个值时使用
  10. cookie                    Map<String,Cookie> - ->可获取当前请求的cookie信息
  11. initParam               Map<Sting,String>  - ->可获取在web.xml中配置的<context-param>上下文参数

五、EL表达式获取四个特定域中的数据

  ${pageScope key}

六、pageContext对象的使用   

  1. 协议
  2. 服务器ip
  3. 服务器端口号
  4. 获取工程路径
  5. 获取请求方法
  6. 获取客户端ip地址
  7. 回去会话的id编号
  ${req.scheme}
  ${pageContext.request.serverName}
  ${pageContext.request.serverPort}
  ${pageContext.request.contextPath}
  ${pageContext.request.method}
  ${pageContext.request.remoteHost}
  ${pageContext.session.id}

七、EL表达式其它隐含对象的使用

  1. param                    ${param.username} 获取请求参数的值
  2. paramValues         ${paramValues.username[0]}获取多个值时使用
  3. header                  ${header['User-Agent']}
  4. headerValues       ${headerValues['User-Agent'][0]}

八、JSTL标签库

  1. 简介:JSTL,全程即JSP Standard Tag Library JSP标准标签库。是一个不断完善的开放源代码的JSP标签库,主要是为了替换JSP中的代码脚本
  2. JSTL由五个不同功能的标签库组成,先导包,taglibs-tandar-impl-1.21.jar  、  taglibs-tandar-spec-1.21.jar  在向JSP标签库中使用taglib指令引入标签库 <%@ taglib prefix='c' uri=" "  %>

EL&JSTL

九、core核心库的使用 

  1.  <c:set/>  标签可以往向域中添加数据- - ><c:set scope="session" var="key1" value="value1"/>
  2. <c:if/>  标签可用来做if判断
  3. <c:choose/>    <c:when/>    <c:other/>标签     多路判断,作用和switch...case...defalut非常接近
  4. <c:forEach  items="被遍历的数据,可以使数组,Map,集合"   var="item"> 遍历时输出   

十、文件的上传

  1. 要有一个form标签,method=post请求
  2. form标签中的encType属性值必须为multipart/form-data的值
  3. 在form标签中使用input type=file添加上传的文件
  4. 编写服务器代码(servlet程序)去接收,处理上传的数据
  5. 注意:encType = multipart/form-data 表示提交的数据,以多段(每个表单项一个数据段)的形式进行拼接,然后以二进制流发送给服务器
  6. 常用的jar包 :commons-fileupload.jar 和 commos - io.jar包
  • 常用类:
  • ServletFileUpload,用于解析上传的数据
  • FileItem,表示每一个表单项
  • 常用方法
  • boolean ServletFileUpload.isMultipartContent(HttpServletRequest req , HttpServletResponse resq);用于判断当前解析上传的数据是否是多段
  • public List<FileItem> parseRequest (HttpServletRequest req)  解析上传的数据
  • boolean FileItem.isFormField() 判断这个表单项是普通表单项还是上传的文件类型
  • String getFieldName() 获取表单项的name属性值
  • String getString()获取当前表单项的值
  • String FileItem.getName() 获取上传的文件名

十一、文件的下载

  • response.getOutputStream()
  • servletContext.getResourceAsStream();
  • servletContext.getMimiType();
  • response.setContentType();
  • response.setHeader("ContentDispoistion","attachment;fileName=1.jpg") 表示告诉浏览器,跟在它下载的附件是图片类型的,名称为1.jpg
上一篇:JSP~~JSTL~~核心标签库~~循环标签forEach的使用


下一篇:遇到需要判断后台传过来的数据时