JSP基础和EL表达式核心标签

jsp基础
 (1)什么是jsp?
 (2)如何写一个jsp?
  1)html(css,js)  直接写。
  2)java代码
   a. java代码片断
   <% java代码  %>
   b. jsp表达式
   <%= java表达式 %>
   c.jsp声明   (a1.jsp)
   <%!     %>
  3)指令
   a.什么是指令
   b.page指令
    import属性
    pageEncoding属性
    contentType属性
    session属性(a2.jsp): true(缺省)/false,当值为
       false,就不能使用session隐含对象了。
    errorPage属性(a3.jsp,a4.jsp):
       指定一个异常处理页面。
    isErrorPage属性:true/false(缺省值),当值
       为true时,表示这是一个异常处理页面,
       此时,可以使用exception隐含对象。
   c.include指令
     file属性:告诉容器,在将jsp文件转换成
        servlet类时,将file属性指定的文件的
        内容包含进来。
        比如
         <%@include file="header.jsp"%>
   d.taglib指令
    引入jsp标签。
  4)隐含对象
   a.什么是隐含对象
   b.为什么可以直接使用这些对象
   c.有哪些隐含对象
    out
    request
    response
    session
    application
    exception: 必须设置isErrorPage=true时才能
       使用。
    pageContext(a1.jsp,a2.jsp):容器会为每一个jsp实例创建唯
       一的一个符合PageContext接口要求的
       对象。该对象有两个特点:
        唯一性:一个jsp实例分配一个pageContext
        持久性:只要jsp实例还在,pageContext
           就一直存在。
       作用1:
        绑订数据 setAttribute getAttribute removeAttribute
       作用2:
        获得其它所有隐含对象
    config(a3.jsp):ServletConfig
    page: jsp实例本身。
   5)注释 (a4.jsp)
    a.<!--注释-->   如果注释的内容是java代码,
       会执行。
    b.<%--注释--%> 如果注释的内容是java代码,
       不会执行。
 (3)jsp是如何执行的?
  step1,容器要将jsp文件转换成一个servlet类。
   html(css,js)  ------> service方法,out.write()
   <%    %> -----> service方法,照搬。
   <%=   %> -----> service方法,out.print()。
   <%!     %> -----> 为servlet类增加新的成员
          变量或者方法。
  step2,调用该servlet。

2.jsp标签和el表达式
 (1)什么是jsp标签
  jsp标签类似于html标签(有开始标记,结束标记,有
  属性),用来替换jsp中的java代码。
  注:
   a.直接在jsp文件当中写java代码,不方便jsp
   文件的维护,比如,将包含有java代码的jsp
   交给美工来修改就很不方便。
   b.jsp标签其实就是一个占位符,容器遇到jsp
   标签之后,会找到对应的标签类然后执行。
   c.使用jsp标签之后,jsp方便美工修改,也利于
   代码的复用(将一些常用的java代码封装成jsp标签,
   以后就可以重复使用了)。
 (2)什么是el表达式
  是一套简单的运算规则,计算的结果用于给标签
 的属性赋值,也可以直接输出。
 (3)el表达式的使用  
  1)访问bean的属性  (e1.jsp)
    方式一
      ${user.name} 依次从pageContext,request,
            session,application查找绑订名称
            为"user"的对象,找到之后,会
            调用该对象的"getName"方法,
            然后输出该方法的运行结果。
           注:
            a.会将null转换成""输出。
            b.找不到绑订名对应的对象,会
             输出""。
           c.如果要指定查找范围,可以使用
             "pageScope","requestScope",
             "sessionScope","applicationScope"。
     方式二  (e1.jsp)
      ${user["name"]}
           注:
            a.允许[]里面出现绑订名。
            b.允许[]里面出现从0开始
            的下标,用来访问数组中的
            指定下标的元素。
  2)做一些简单的运算,运算的结果可以给
   标签的属性赋值,也可以直接输出(e2.jsp)。
   a.算术运算  "+","-","*","/","%"
      注意: "+"只能求和。
   b.关系运算 ">",">=","<","<=","==","!="
   c.逻辑运算 "&&","||","!"
   d.empty运算 empty
      注:用来判断集合是否为空,或者是
      不是一个空字符串。
      以下四种情况结果为true
      d1.空的集合
      d2.空字符串
      d3.null
      d4.找不到对应的对象  
  3)读取请求参数值 (e3.jsp)
   ${param.name}
    等价于request.getParameter("name")
   ${paramValues.city}
    等价于request.getParameterValues("city")

 (3)jstl标签(java standard taglib)
  1)jstl是什么?
   apache提供的一系列标签,后来捐献给了sun
   (作为javaee5.0的一部分)。
  2)编程步骤
   step1,将jstl相关的jar文件拷贝到WEB-INF\lib下。
    注:如果使用的是javaee5.0或者以上的版本,
   不用拷贝了。
   step2,使用taglib指令引入要使用的标签。
    <%@taglib uri="" prefix=""%>
    注
     uri:命名空间(是为了区分同名的元素而
     定义的一个字符串,经常是一个域名)。
     prefix:设置命名空间的前缀(别名)
  3)几个核心的标签
   a.if标签 (jstl01.jsp)
    <c:if test="" var="" scope="">
     标签体
    </c:if>
    当test属性值为true时,容器会执行标签体的
    内容。 test属性可以使用el表达式来赋值。
    var属性:指定一个绑订名。
    scope属性:指定绑订范围("page","request",
         "session","application")
   b.choose标签 (jstl02.jsp)
    <c:choose>
     <c:when test="">
     </c:when>
     ...
     <c:otherwise>
     </c:otherwise>
    </c:choose>
    when可以出现1次或者多次,表示一个分支,
    当test属性值为true,执行标签体的内容。
    otherwise可以出现0次或者1次,表示例外。
   c.forEach 标签(jstl03.jsp)
    <c:forEach items="" var="" varStatus="">
    </c:forEach>
    该标签用于遍历集合或者数组,其中,items
    属性用于指定要遍历的集合或者数组,可以
    使用el表达式来赋值。
    var属性:用于指定绑订名称,绑订范围是
      pageContext(该标签每一次从集合或者
      数组中取一个元素,然后绑订到pageContext
      上)。
    varStatus属性:用来指定绑订名称,绑订范围是
      pageContext,绑订值是一个特殊的对象,该
      对象提供了一系列方法用于获得当前遍历的
      状态:
       getCount() : 返回当前正在访问的元素的
          次数。
       getIndex():返回当前正在访问的元素的
          下标。
     
     
      1.自定义标签
 step1,写一个java类,继承SimpleTagSupport类。
 step2,在doTag方法里面,编写相应的处理逻辑。
 step3,描述标签(.tld文件)。
  <body-content>可以设置为"empty","
  scriptless","JSP"。
  empty : 没有标签体。
  scriptless:有标签体,但是,标签体里面不能够
     出现java代码(<%  %> <%=  %>,<%!   %>)
  JSP:有标签体,并且,标签体里面可以出现java代码。
    但是,只有复杂标签技术才支持,简单标签
    技术只支持empty和scriptless。


   
     
   
  
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值