编写无脚本的JSP页面

概述

在当代JSP页面开发中,一个最佳的Java Web开发实践就是在MVC架构模式中,综合使用JavaBean、EL、JSP自定义标记库以及JSP标准标记库JSTL,编写无Java脚本的JSP页面。通过综合使用这些技术,我们可以实现让熟悉各种标记的的界面设计师。与熟悉java编码的java程序员分工协作完成Javaweb项目的开发。

 

JSP表达式语句:EL

JSP页面中显示结果 jsp:useBean和jsp:getProperty两个元素冗长而笨拙
jsp:getProperty只支持对简单Bean属性的访问

 

<span style="color:#000099;">public class Person implements Serializable {
    private String name;
    private Dog dog;
     ……
}

public class Dog implements Serializable {
    public String name;
     ……
}

</span>

<jsp:useBean id="person" class="com.lovobook.Person" scope="request" />

 

 

 

第一种:jsp脚本表达式

我的狗的名字是:<jsp:getProperty name="person" property="dog" />

结果:
我的狗的名字是:com.lovobook.Dog@e3570c (打印的是内存地址

 

第二种:EL表达式

我的狗的名字是:${person.dog.name}

结果:

我的狗的名字是:小白

 

相同点:

两种表达式都可以让我们在静态内容中插入动态信息。

web容器会以同样的方式处理二者。即,一旦接收到请求,容器将计算表达式,将其转换为一个字符串,然后插入到响应输出流中。

 

不同点:

二者处理表达式内部变量的方式

1.JSP脚本表达式定义变量(但定义变量是java代码):<%!  int  num  = 100 ; %>

2.EL表达式不能在脚本中定义变量。由于它的主要目标是从JSP页面中消除java代码。

 

 

在EL表达式中使用隐式变量

 

 

 

EL运算符

EL运算符可以分为四类

  1. 属性和集合访问运算符:点运算符、数组形式取值
  2. 算术运算符:加、减、乘、除
  3. 关系运算符:大于、小于、等于
  4. 逻辑运算符:逻辑与、逻辑或、逻辑非

 

EL函数

为JSP提供了完全的业务逻辑和表现逻辑分离


使用EL函数的步骤

 

  1. 方法类(.java):包含需要在JSP中使用的Java方法;
  2. 标记库描述文件(*.tld):映射每个Java方法到XML函数名;
  3. 部署描述文件(web.xml):映射TLD到标记库URI
  4. JSP页面(*.jsp):使用标记库URI和函数名调用方法。

 

 

方法类:

public class StrMethods {
  public static String upper( String x )
  {
    return x.toUpperCase();
  }
……
}

标记库描述文件:

TLD文件
<tlib-version>1.0</tlib-version>
<jsp-version>1.2</jsp-version>
<function>
    <name>upper</name>
    <function-class>myFunc.StrMethods</function-class>
    <function-signature>
      java.lang.String upper(java.lang.String)
    </function-signature>
  </function>


部署描述文件:

Web.xml文件
<taglib>
        <taglib-uri>
            http://myFunc/Functions
</taglib-uri>
        <taglib-location>
            /WEB-INF/myFunc/Functions.tld
        </taglib-location>
    </taglib>


JSP页面

JSP文件
<%@ taglib prefix=myString uri=…%>
${myString:upper(param.x)}


 

自定义标记库与标准标记库JSTL

 

需要两个JAR文件。

第一个文件是jstl.jar,它为JSTL标记库提供API类。

第二个文件是standard.jar,它提供了标记库的实现类 。复制到WEB-INF目录下的lib子目录下。
通过<%@ taglib uri=“http://java.sun.com/jsp/jstl/core” prefix=“c” %>引入到JSP

 

 

 

JSTL通用标记

 

使不使用JSP脚本执行Java程序成为可能
 

支持变量:
 

 

JSTL流程控制

<c:if test="${x == '9'}">
  ${x}
</c:if>


<c:choose>
  <c:when test="${color == 'white'}">
    Light!
  </c:when>
  <c:when test="${color == 'black'}">
    Dark!
  </c:when>
  <c:otherwise>
    Colors!
  </c:otherwise>
</c:choose>


循环:

 <c:forEach var="x" begin="0" end="30" step="3">
    ${x}
  </c:forEach>

 

循环赋值

<c:forEach var="num" items="${numArray}">
  <c:set var="num" value="100" />
</c:forEach>


用JSTL访问URL信息

<c:url> 用于URL重写

            <c:url value="/page.html" var="pagename"/>
            <c:url value="/page.html" var="pagename">
            <c:param name="param1" value="${2*2}"/>
            <c:param name="param2" value="${3*3}"/>
            </c:url>

 

<c:import>用于访问Servlet容器外的内容

             <c:import url="/content.html" var="newstuff" scope="session">
             <c:param name="par1" value="val1"/>
            <c:param name="par2" value="val2"/>
            </c:import>

 

<c:redirect> 与sendRedirect()方法相同

 

总结:

  1. JSP EL的主要目的是简化JSP的开发
  2. EL表达式总是放在大括号里,而且前面有一个美元符前缀
  3. EL中提供了隐式变量
  4. EL函数为JSP提供了完全的业务逻辑和表现逻辑分离
  5. JSTL1.1规范中定义了五个标准标记库,分别是核心标记库、XML标记库、SQL标记库、国际化标记库、函数标记库
  6. JSTL核心标记包括通用标记<c:catch>和<c:out>、变量支持标记<c:set>和<c:remove>、流程控制标记<c:if>、<c:choose>、<c:forEach>和<c:forTokens>、URL处理标记<c:url>、<c:import>和<c:redirect>


 

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值