分享

JSP中的Scriptlet -- 经典

 bleach尸魂界 2014-06-22
本资源引自:
JSP中的Scriptlet - 李兴华 - 51CTO技术博客
http://lixinghua.blog.51cto.com/421838/101379
---------------------------------------------------------------------------------------------------------------------------------
JSP中的Scriptlet

3.2Scriptlet

       JSP中大部分都是由脚本小程序组成,所谓的脚本小程序就是里面直接包含了JAVA代码。
JSPScriptlet一共分为三种:
       · <%%>:定义局部变量,编写语句
       · <%!%>:定义全局变量,可以编写类、方法
       · <%=%>:表达式输出,专门输出变量或一个具体值

3.2.1<%%>

       此为最常见的Scriplet代码,代码如下:
JSPDemo02.jsp
<%
         int i = 10 ;
         int j = 20 ;
         out.println(i * j) ;
         out.println("<h1>"+(++i)+"</h1>") ;
%>
       发现,以上的程序无论怎么刷新页面,i的内容依然是11,是固定的,因为每次都重新声明了。

3.2.2<%!%>

       一般情况下都会使用此Scriplet定义一个全局变量,全局变量是无论怎么刷新,都只声明一次,只有很少的情况下才会用此语句去定义一个方法,但是100%情况下是不可能去定义一个类的。
<%!
         int i = 10 ;
         int j = 20 ;
%>
<%
         out.println(i * j) ;
         out.println("<h1>"+(++i)+"</h1>") ;
%>
       程序中,只要一刷新页面,则就自己增加,因为声明的是一个全局变量,所以只声明一次。
例如:<%!%>定义一个方法,不要轻易这样使用
<%!
         int i = 10 ;
         int j = 20 ;
         public int add(int x,int y){
                   return x + y ;
         }
%>
<%
         out.println(add(10,20)) ;
         out.println("<h1>"+(++i)+"</h1>") ;
%>

3.2.3<%=%>

       表达式输出,专门输出一个变量或一个具体的值。
例如:以下代码使用了表达式输出
<%
         int i = 10 ;
%>
<%=i%>
<%="hello World!!!"%>

3.2.4、使用那种输出更好呢?

       之前已经学过了两种输出数据:
              · out.println
              · <%=%>
       为了验证此程序,下面通过两段代码进行比较,此代码的功能就是在屏幕上打印一个表格。
1  使用out.println()完成
<%
         out.println("<table border=\"1\">") ;
         for(int i=0;i<10;i++){
                   out.println("<tr>") ;
                   for(int j=0;j<10;j++){
                            out.println("<td>"+(i*j)+"</td>") ;
                   }
                   out.println("</tr>") ;
         }
         out.println("</table>") ;
%>
       以上确实已经完成了功能。但是现在需要美化表格的话,根本无法用网页工具进行编辑。因为把JAVA代码和HTML代码绑在一起了,所以修改困难
2  使用<%=%>完成
       所以,最好将HTMLJAVA代码进行分割
<table border="1">
<%
         for(int i=0;i<10;i++){
%>
                   <tr>
<%
                   for(int j=0;j<10;j++){
%>
                            <td><%=i*j%></td>
<%
                   }
%>
                   </tr>
<%
         }
%>
</table>
       通过以上实现的代码,发现使用表达式输出要比直接使用out.println输出更方便,而且便于修改,所以在开发中严格要求,不允许出现任何的out.println语句。

3.2.5、思考?

       要求JSP页面可以根据用户前台表单输入的信息,打印表格,例如:前台可以输入表格的行数和列数。接收之后进行打印。
JSPDemo08.htm
<FORM METHOD="POST" ACTION="JSPDemo08.jsp" border="1">
<TABLE>
<TR>
         <TD colspan="2">打印表格</TD>
</TR>
<TR>
         <TD>输入要打印表格的行数:</TD>
         <TD><input type="text" name="rownum"></TD>
</TR>
<TR>
         <TD>输入要打印表格的列数:</TD>
         <TD><input type="text" name="colnum"></TD>
</TR>
<TR>
         <TD colspan="2">
                   <input type="submit" value="打印">
                   <input type="reset" value="重置">
         </TD>
</TR>
</TABLE>
</FORM>
JSPDemo08.jsp
<%
         // 需要接收请求内容
         int row = 0 ;
         int col = 0 ;
         try{
                   row = Integer.parseInt(request.getParameter("rownum")) ;
                   col = Integer.parseInt(request.getParameter("colnum")) ;
         }catch(Exception e){
%>
                   <h1>ERROR!!!</h1>
<%
         }
%>
<table border="1">
<%
         for(int i=0;i<row;i++){
%>
                   <tr>
<%
                   for(int j=0;j<col;j++){
%>
                            <td><%=i*j%></td>
<%
                   }
%>
                   </tr>
<%
         }
%>
</table>
       整个程序上体现出了完整的交互性的效果,根据用户输入的内容可以自己进行相应的输出。而且JAVA中的所有语句,在此处都可以使用。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多