ITKeyword,专注技术干货聚合推荐

注册 | 登录

初体验jstl和EL的优雅

fuliangliang 分享于 2005-11-05

2019阿里云全部产品优惠券(新购或升级都可以使用,强烈推荐)
领取地址https://promotion.aliyun.com/ntms/yunparter/invite.html

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>

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

相关阅读排行


用户评论

游客

相关内容推荐

最新文章

×

×

请激活账号

为了能正常使用评论、编辑功能及以后陆续为用户提供的其他产品,请激活账号。

您的注册邮箱: 修改

重新发送激活邮件 进入我的邮箱

如果您没有收到激活邮件,请注意检查垃圾箱。