天天看点

JSP中的Scriptlet

       在JSP中大部分都是由脚本小程序组成,所谓的脚本小程序就是里面直接包含了JAVA代码。

在JSP中Scriptlet一共分为三种:

       · <%%>:定义局部变量,编写语句

       · <%!%>:定义全局变量,可以编写类、方法

       · <%=%>:表达式输出,专门输出变量或一个具体值

       此为最常见的Scriplet代码,代码如下:

<b>JSPDemo02.jsp</b><b>:</b>

&lt;%

         int i = 10 ;

         int j = 20 ;

         out.println(i * j) ;

         out.println("&lt;h1&gt;"+(++i)+"&lt;/h1&gt;") ;

%&gt;

       发现,以上的程序无论怎么刷新页面,i的内容依然是11,是固定的,因为每次都重新声明了。

       一般情况下都会使用此Scriplet定义一个全局变量,全局变量是无论怎么刷新,都只声明一次,只有很少的情况下才会用此语句去定义一个方法,但是100%情况下是不可能去定义一个类的。

&lt;%!

       程序中,只要一刷新页面,则就自己增加,因为声明的是一个全局变量,所以只声明一次。

<b>例如:</b>在&lt;%!%&gt;定义一个方法,不要轻易这样使用

<b>         public int add(int x,int y){</b>

<b>                   return x + y ;</b>

<b>         }</b>

         out.println(add(10,20)) ;

       表达式输出,专门输出一个变量或一个具体的值。

<b>例如:</b>以下代码使用了表达式输出

&lt;%=i%&gt;

&lt;%="hello World!!!"%&gt;

       之前已经学过了两种输出数据:

              · out.println

              · &lt;%=%&gt;

       为了验证此程序,下面通过两段代码进行比较,此代码的功能就是在屏幕上打印一个表格。

<b>1</b><b>、  </b><b>使用out.println()</b><b>完成</b>

         out.println("&lt;table border=\"1\"&gt;") ;

         for(int i=0;i&lt;10;i++){

                   out.println("&lt;tr&gt;") ;

                   for(int j=0;j&lt;10;j++){

                            out.println("&lt;td&gt;"+(i*j)+"&lt;/td&gt;") ;

                   }

                   out.println("&lt;/tr&gt;") ;

         }

         out.println("&lt;/table&gt;") ;

       以上确实已经完成了功能。但是现在需要美化表格的话,根本无法用网页工具进行编辑。因为把JAVA代码和HTML代码绑在一起了,所以修改困难

<b>2</b><b>、  </b><b>使用&lt;%=%&gt;</b><b>完成</b>

       所以,最好将HTML与JAVA代码进行分割

&lt;table border="1"&gt;

                   &lt;tr&gt;

                            &lt;td&gt;&lt;%=i*j%&gt;&lt;/td&gt;

                   &lt;/tr&gt;

&lt;/table&gt;

       通过以上实现的代码,发现使用表达式输出要比直接使用out.println输出更方便,而且便于修改,所以在开发中严格要求,不允许出现任何的out.println语句。

       要求JSP页面可以根据用户前台表单输入的信息,打印表格,例如:前台可以输入表格的行数和列数。接收之后进行打印。

<b>JSPDemo08.htm</b><b>:</b>

&lt;FORM METHOD="POST" ACTION="JSPDemo08.jsp" border="1"&gt;

&lt;TABLE&gt;

&lt;TR&gt;

         &lt;TD colspan="2"&gt;打印表格&lt;/TD&gt;

&lt;/TR&gt;

         &lt;TD&gt;输入要打印表格的行数:&lt;/TD&gt;

         &lt;TD&gt;&lt;input type="text" name="rownum"&gt;&lt;/TD&gt;

         &lt;TD&gt;输入要打印表格的列数:&lt;/TD&gt;

         &lt;TD&gt;&lt;input type="text" name="colnum"&gt;&lt;/TD&gt;

         &lt;TD colspan="2"&gt;

                   &lt;input type="submit" value="打印"&gt;

                   &lt;input type="reset" value="重置"&gt;

         &lt;/TD&gt;

&lt;/TABLE&gt;

&lt;/FORM&gt;

<b>JSPDemo08.jsp</b><b>:</b>

         // 需要接收请求内容

         int row = 0 ;

         int col = 0 ;

         try{

                   row = Integer.parseInt(request.getParameter("rownum")) ;

                   col = Integer.parseInt(request.getParameter("colnum")) ;

         }catch(Exception e){

                   &lt;h1&gt;ERROR!!!&lt;/h1&gt;

         for(int i=0;i&lt;row;i++){

                   for(int j=0;j&lt;col;j++){

       整个程序上体现出了完整的交互性的效果,根据用户输入的内容可以自己进行相应的输出。而且JAVA中的所有语句,在此处都可以使用。

本文转自 李兴华 51CTO博客,原文链接:http://blog.51cto.com/lixinghua/101379,如需转载请自行联系原作者