1. JSP页面的基本结构
2. JSP的运行原理
在tomcat服务器运行时,会为每一个jsp文件页面生成对应java文件和java文件得到的字节码文件。当用户访问tomcat服务器时,tomcat将为每一个用户启动一个线程,这些线程由tomcat服务器来管理,服务器将CPU的使用权在各个线程之间快速切换,以保证每个线程都有机会执行字节码文件(涉及到操作系统中的CPU分片)。
3. JSP页面的成员变量和方法
1. 声明变量
<%! %>
之间可以放置java的变量声明语句,声明的变量在整个JSP页面内均有效,因为tomcat服务器将JSP转换为java文件时,将这些变量作为类的成员变量,这些变量的内存空间直到服务器关闭才释放。当多个客户请求一个JSP页面时,由tomcat启动的线程将共享JSP页面的成员变量。由此特性可以实现一个简单的计数器。
<%@ page contentType="text/html;charset=GB2312" %>
<HTML><BODY BGCOLOR=pink><FONT size=4>
<%! int i=0;
%>
<% i++;
%>
<P>您是第<%=i%>个访问本站的客户。
</BODY></HTML>
2. 声明方法
<%! %>
JSP页面在**<%! %>**中声明若干个方法,这些方法可以在java程序片中被调用。
<%@ page contentType="text/html;charset=GB2312" %>
<HTML><BODY bgcolor=yellow>
<%! int add(int x,int y)
{ return x+y;
}
int sub(int x,int y)
{ return x-y;
}
%>
<% out.println("<BR>调用add方法计算200与123之和:");
int a=add(200,123);
out.println(a);
out.println("<BR>调用sub方法计算200与123之差:");
int b=sub(200,123);
out.println(b);
%>
</BODY></HTML>
4. JSP页面中的Java程序片
<% %>
<% %>间可以插入程序片,一个JSP页面可以有多个程序片,这些程序片按顺序执行。在一个程序片中声明的变量称为局部变量,因为tmocat服务器将JSP页面转译成Java文件时,将程序片中声明的变量作为类中某个方法的变量使用。当不同的用户访问该jsp文件时,每个用户线程都将执行一次程序片。
上述可知,当多个用户请求一个JSP页面时,JSP页面的程序片就会被多次调用,分别运行在不同的线程中,而一个线程在执行程序片期间可以调用JSP页面的方法操作JSP页面的成员变量(全局变量),这些成员变量时被所有线程共享的,此时若想让一个用户在调用JSP成员方法时,不让其他用户同时调用,可以将成员变量的方法加上 synchronized 关键字修饰。当一个线程在执行 synchronized 方法时,其他线程若想调用就必须等待。
<%@ page contentType="text/html;charset=GB2312" %>
<HTML>
<BODY>
<%! int count=0; //被客户共享的count
synchronized void setCount() //synchronized修饰的方法
{ count++;
}
%>
<% setCount();
out.println("您是第"+count+"个访问本站的客户");
%>
</BODY>
</HTML>
5. JSP页面中的Java表达式
<%= %>
<%= %>之间可以时一个Java表达式,这个表达式必须能求值。表达式的值由服务器负责计算,并将计算结果用字符串的形式发送到客户端显示。
<%@ page contentType="text/html;charset=GB2312" %>
<HTML><BODY bgcolor=cyan><FONT size=4>
<P> Sin(0.9)除以3等于
<%=Math.sin(0.90)/3%>
<p>3的平方是:
<%=Math.pow(3,2)%>
<P>12345679乘72等于
<%=12345679*72%>
<P> 5的平方根等于
<%=Math.sqrt(5)%>
<P>99大于100吗?回答:
<%=99>100%>
</BODY></HTML>
6. JSP中的注释
常见的JSP注释由两种:
1. HTML注释:
JSP引擎把HTML注释交给客户,客户通过浏览器查看JSP源文件时,能够看到HTML注释。
<!--添加注释内容-->
2. JSP注释:
JSP引擎把回自动忽略JSP注释,即客户查看源码时,不能够看到JSP注释。
<%--添加注释内容--%>