您的位置:首页 > 编程语言 > Java开发

Day28 JavaWeb知识 (5)JSP & EL & JSTL

2019-06-07 20:28 651 查看

(一)JSP

一.概述

  1. Java Server Page
  2. jsp:
    - - 从用户角度:就是一个网页
    - - 从程序员角度:其实就是一个java类,它继承了servlet,所以可以说jsp就是一个Servlet

二. 三大指令

     <%@ 指令名字 %>

  1. page指令 language
    - - 表明jsp页面中可以写java代码
  2. contentType
    - - 文件类型,告诉浏览器自己是什么内容类型,以及使用什么编码
  3. pageEncoding
    - - jsp内容编码
  • include指令
    <%@ include file="index.jsp" %>
      包含另外一个jsp的内容进来
    1. 把另外一个页面的所有内容拿过来一起输出,所有的标签元素都包含进来
  • taglib指令
    <%@ taglib prefix=""  uri="" %>
    uri:标签库路径
    prefix:标签库的别名
  • 三.动作标签(常用)

    <jsp:include page=""></jsp:include>
    <jsp:forward page=""></jsp:forward>
    <jsp:param value="" name=""/>

    1. jsp:include
      包含指定的页面,这里是动态包含.也就是不把包含的页面所有元素标签全部拿过来输出,而是把它的运行结果拿过来.
    2. jsp:forward
      前往一个页面,  实际是通过请求转发
    3. jsp:param
      在包含某个页面的时候,或者在跳转某个页面的时候,加入这个参数
      <jsp:forward page="">
                 <jsp:param value="" name=""/>
      </jsp:forward>

    四.内置对象(九个)

    内置对象:就是我们可以直接在jsp页面中使用这些对象,不用创建
     pageContext  request  session  application   //四个作用域对象

    1. pageContext   [pageContext]  :作用域仅限于当前的页面  ,还可以获取其他八个内置对象
    2. request  [HttpServletRequest]:作用域仅限于一次请求,只要服务器对该请求做出了响应,这个域中存的值就没有了
    3. session  [HttpSession]:作用域限于一次会话(多次请求与响应)当中
    4. application   [ServletContext]:整个工程都可以访问,服务器关闭后就不能访问了

     out  exception  page  config  response

    1. out  [JspWriter]
    2. response  [HttpServletResponse]
    3. exception  [Throwable]
    4. page  [Object]   ---就是这个jsp翻译成的java类的实例对象. this
    5. config  [ServletConfig]

    (二)EL表达式

    为了简化jsp里面的java代码

    一.写法格式

    1. ${ 表达式 }
      <% pageContext.setAttribute("name" , "page"); %>
      普通手段取值  <%= pageContext.getAttribute("name")%>
      EL表达式取作用域中的值  ${ pageScope.name }
    2. 如果域中所存的值是数组
      <%
               String[ ] a = {"aa","bb","cc"};
               pageContext.setAttribute("array" , a);
      %>
      使用EL表达式取出作用域中数组的值
      ${array[0]},${array[1]},${array[2]}
    3. 取值方式:
      如果这份值是有下标的,那么直接使用[ ]
      如果没有下标,直接使用 . 的方式去取
    4. 一般使用EL表达式,用的比较多的,就是从一个对象中取出它的属性值,比如取出某一个学生的姓名

    二.EL表达式的内置对象(11个)

    ${ 对象名 , 成员 }

    pageContext  
    pageScope  requestScope  sessionScope  applicationScope  //作用域相关对象
    header  headerValues      //头信息相关对象
    param  paramValues     //参数相关对象
    cookie 
    initParam     //全局初始化参数

    (三)JSTL

    一.概述

    1. JSTL(JSP Standard Tag Library, JSP标准标签库)
    2. 简化JSP的代码编写,替换<%%>写法, 一般与EL表达式配合

    二.使用方法

    1. 导入jar文件到工程的WebContent/Web-Inf/lib  jstl.jar  standard.jar
    2. 在jsp页面上,使用taglib指令,来引入标签库
    3. 注意:如果想支持EL表达式,那么引入的标签库必须选择1.1的版本

    三.常用标签

    <c:set></c:set>
    <c:if test=" "></c:if>
    <c:forEach></c:forEach>

    1. c:set
      声明一个对象name, 对象的值是me,存储在page(默认)
      <c:set var="name" value="me" scope="page"></c:set>
      ${pageScope.name}
    2. c:if
      <c:set var="age" value="18" ></c:set>
      <c:if test=" ${ age >18 } "  var="flag" scope="session">                //满足条件,就会输出if中的语句
              我是成年人...
      </c:if>
      ${sessionScope.flag}
    3. c:foreach
      <c:forEach begin="1" end="10" var="i" step="2">          //从1开始遍历到10,得到的结果赋值给i,存储在page域中
             ${ i }                                     //1 3 5 7 9         step是每次递增的值
      </c:forEach>
      ------------------------------------------------------
      <%  
                  List list = new ArrayList();
                  list.add(new User("zhangsan",23));  
                  pageContext.setAttribute("list",list);                            
      %>
      <c:forEach var="user" items=" ${list} " >            //items:表示遍历的是哪个对象,这里必须写EL表达式
                   ${user.name}--------${user.age}           //var:遍历出来的的每一个元素用user去接收
      </c:forEach>

    四.学生信息管理系统

    1. 先写login.jsp  并且搭配一个LoginServlet去获取登录信息
    2. 创建用户表,里面只要有id,username,password
    3. 创建UserDao,定义登录的方法
    4. 创建UserDaoImpl, 实现定义的方法
    5. 在LoginServlet里面访问UserDao, 判断登陆的结果,
    6. 创建stu_list.jsp, 让登录成功的时候跳转过去
    7. 创建学生表,字段随意
    8. 创建学生的Dao ,StuDao
    9. 创建StuDaoImpl实现
    10. 登录成功时,查询所有学生,学生集合存在作用域中,跳转到stu_list.jsp
    11. 在stu_list.jsp中,取出域中的集合,然后使用c标签遍历集合       //c标签是jstl
    内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
    标签: