初体验jstl和EL的优雅

EL和jstl给了我们在jsp页面中去掉scriptlet的两个有利的武器,我们为什么要在jsp页面中消除
scriptlet?原因在于:scriptlet不利于的页面可读性、可维护性和可重用性.当你看到使用jstl和EL给我们

带来优雅的表示时,我想你一定会决定在jsp页面中消除嵌入的java代码。那就好好学jstl、el和

自定义的tag吧。

Example 1:

(scriptlet形式)

<%@ page contentType="text/html;charset=GB2312" %>
<HTML>
<BODY BGCOLOR=cyan><FONT size=1>
  <%!int i=0;
  %>
  <%i++;
  %>
<P>您是第
   <%=i%>
  个访问本站的客户。
</BODY>
</HTML> 

(jstl和EL形式)

<%@page contentType="text/html;charset=GB2312" %>
<%@taglib prefix="c" uri="http://java.sun.com/jstl/core"%>
<html>
     <body bgcolor="cyan"><font size=4>
      <c:set var="sessionCounter" scope="session"
      value="${sessionCounter+1}"/>
     你是第<b>
      <c:out value="${sessionCounter}"/>
     </b> 个访问本站的客户。
    </font>
   </body>
</html>

Example 2

(scriptlet形式):
<%@ page contentType="text/html;charset=GB2312" %>
<HTML>
<BODY bgcolor=cyan><FONT size=1>
   <%!
      long continueSum(int n)
          { int sum=0;
             for(int i=1;i<=n;i++)
              { sum=sum+i;
              }
            return sum;
          }
   %>
<P>1到100的连续和:<BR>
   <% long sum;
      sum=continueSum(100);
      out.print(""+sum);
   %>
</BODY>
</HTML>

(jstl和EL形式):

<%@page contentType="text/html;charset=GB2312" %>
<%@taglib prefix="c" uri="http://java.sun.com/jstl/core" %>
<html>
   <body bgcolor=cyan>
 <font size=4>
   <p>1到100的连续和:<br>
      <c:forEach  begin="1" end="100" step="1">
        <c:set var="number" value="${number+1}" scope="request"/>
        <c:set var="sum" value="${sum+number}" scope="request"/>
      </c:forEach>
      <c:out value="${sum}"/>
 </font>
   </body>
</html>

Example 3:

<%@ page contentType="text/html;charset=GB2312" %>
<%@ page import="java.util.*" %>
<MHML>
<BODY bgcolor=cyan>
<Font size=1 >  
<BR>客户使用的协议是:
   <% String protocol=request.getProtocol();
      out.println(protocol);
   %>
<BR>获取接受客户提交信息的页面:
   <% String path=request.getServletPath();
      out.println(path);
   %>
<BR>接受客户提交信息的长度:
   <% int length=request.getContentLength();
      out.println(length);
   %>
<BR>客户提交信息的方式:
   <% String method=request.getMethod();
      out.println(method);
   %>
<BR>获取客户的IP地址:
   <% String  IP=request.getRemoteAddr();
      out.println(IP);
   %>
<BR>获取客户机的名称:
   <% String clientName=request.getRemoteHost();
      out.println(clientName);
   %>
<BR>获取服务器的名称:
   <% String serverName=request.getServerName();
      out.println(serverName);
   %>
<BR>获取服务器的端口号:
   <% int serverPort=request.getServerPort();
      out.println(serverPort);
   %>
<BR>获取客户端提交的所有参数的名字:
   <% Enumeration enum=request.getParameterNames();
       while(enum.hasMoreElements())
            {String s=(String)enum.nextElement();
             out.println(s);
            }     
      %>
<BR>获取头名字的一个枚举:
   <% Enumeration enum_headed=request.getHeaderNames();
      while(enum_headed.hasMoreElements())
            {String s=(String)enum_headed.nextElement();
             out.println(s);
            }     
   %>
<BR>获取头文件中指定头名字的全部值的一个枚举:
   <% Enumeration enum_headedValues=request.getHeaders("cookie");
      while(enum_headedValues.hasMoreElements())
            {String s=(String)enum_headedValues.nextElement();
             out.println(s);
            }     
   %>
</Font>
</BODY>
</HTML>

(jstl和EL形式)

<%@ page contentType="text/html;charset=GB2312" %>
<%@ page import="java.util.*" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jstl/core"%>
<MHML>
<BODY bgcolor=cyan>
<Font size=3 >  
<BR>客户使用的协议是:
   <c:out value="${pageContext.request.protocol}"/>
<BR>获取接受客户提交信息的页面:
   <c:out value="${pageContext.request.servletPath}"/>
<BR>接受客户提交信息的长度:
   <c:out value="pageContext.request.contentLength"/>
<BR>客户提交信息的方式:
   <c:out value="pageContext.request.method"/>
<BR>获取客户的IP地址:
   <c:out value="${pageContext.request.remoteAddr}"/>
<BR>获取客户机的名称:
   <c:out value="${pageContext.request.remoteHost}"/>
<BR>获取服务器的名称:
   <c:out value="${pageContext.request.serverName}"/>
<BR>获取服务器的端口号:
   <c:out value="${pageContext.request.serverPort}"/>
<BR>获取客户端提交的所有参数的名字<br>:
      <c:forEach items="${param}" var="p">
       <c:out value="${p.key}"/><br>
        <c:out value="${p.value}"/><br>
      </c:forEach>
<BR>获取头的一个枚举:<br>
   <c:forEach items="${headerValues}" var="h">
       <c:out value="${h.key}"/><br>
        <c:forEach items="${h.value}" var="value">
         <br><c:out value="${value}"/>
          </c:forEach>
   </c:forEach>
  <br>获取cookies的内容:<br>
    <c:forEach items="${pageContext.request.cookies}" var="c">
       <c:out value="${c.name}"/><br>
        <c:out value="${c.value}"/><br>
      </c:forEach>
</Font>
</BODY>
</HTML>

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值