转自:http://www.cnblogs.com/linwen5723/p/5967674.html

什么是Scriptlet?

在JSP中,Scriptlet称为脚本小程序,所有嵌套在HTML代码中的Java程序都必须使用Scriptlet标记出来。

第一种:<% %>

在此Scriptlet中可以定义局部变量(并非全局变量)编写语句

例如:

<%

  int x=10;

  out.println("<p>x="+x+"</P>");

%>

<%

  out.println("<p>x="+x+"</P>");

%>

初学JSP者看到上面这段代码可能会觉得陌生又熟悉,那是因为这完全就是java代码,却又输出了HTML语句,没错!这就是使用java语句在网页上显示"x=10"

第二次在网页上显示变量x时,同样是"x=10",小编以前以为<% %>里面定义的变量是局部变量所以出了<% %>就会报错,但其实不是,想想Java中对局部变量的定义,局部变量存在在一个方法中或者以个代码块中,如果上面的<% %>全部去掉,是不是像Java中的一个代码块了呢?所以第二次输出也是正确的。

第二种:<%! %>

在这种Scriptlet中可以定义全局变量,方法,类

 

<%!public static final String info = "www.baidu.com";//定义全局变量

public int add(int a, int b) {//定义方法
return a + b;
}

class Person {//定义类
private String name;
private int age;

public Person() {
}

public Person(String name, int age) {
this.name = name;
this.age = age;
}

public String toString() {
return "name=" + this.name + "\tage=" + this.age;
//在此方法中不可以有输出语句
}
}%>
<%
out.println("<p>info=" + info + "</p>");
out.println("<p>3+5=" + add(3, 5) + "</p>");
out.println("<p>个人信息:" + new Person("张三", 12).toString() + "</p>");
%>

网页上显示结果:

第三种:<%=%>

 在此Scriptlet中输出一个变量或一个具体的常量,称为表达式输出

将上面的输出形式换成下面的输出形式:

<p>info=<%=info %></p>
<p>3+5=<%=add(3,5) %></p>
<p>个人信息:<%=new Person("张三",12).toString() %></p>

将得到同样的效果.

那么问题来了,既然这两种输出形式的效果一样,那么以后是不是随便写那个都可以呢?

尽量不要使用out.println();输出,而使用表达式输出

在jsp的开发中,实际上就是在HTML中加入一些控制及输出的语句,所以在输出时为了使HTML代码和Java代码相分离,最好的做法是只输出由Java(JSP)程序产生的变量,那么这时使用表达式输出就比使用out.println()更加方便.

posted on 2018-12-05 01:33  Sharpest  阅读(691)  评论(0编辑  收藏  举报