目录
前言
当今互联网上存在许多不同的编程语言,每一种都有其应用和特点。在Web应用程序开发中,JSP(Java Server Pages)是最为流行的技术之一,这是因为它简单易学、高效且效率高。今天,我们将介绍JSP的语法和一些基本概念。
2.1JSP页面的基本结构
2.1.1 一个JSP页面可由5种元素组合而成
(1) 普通的HTML标记和JavaScript标记。
(2) JSP标记,如指令标记、动作标记。
(3) 变量和方法的声明。
(4) Java 程序片。
(5) Java 表达式。
2.1.2原理
一个JSP页面被第一次请求执行时,Tomcat服务器首先将JSP页面文件转译成一个Java文件,再将这个Java文件编译生成字节码文件,然后通过执行字节码文件响应用户的请求。
当多个用户请求一个JSP页面时,Tomcat服务器为每个用户启动一个线程,该线程负责执行常驻内存的字节码文件来响应相应用户的请求。这些线程由Tomcat服务器来管理,将CPU的使用权在各个线程之间快速切换,以保证每个线程都有机会执行字节码文件。
2.2声明变量和定义方法
在<%!和%>标记符号之间声明变量,定义方法以及定义类。 <%!和%>标记符号的内容习惯上放在JSP 页面指令之后,<HTML>之前,也可以写在<HTML>与</HTML>之间。
Tomcat服务器将JSP页面转译成Java 文件时,将“<%!”、“%>” 标记符之间声明的变量作为类的成员变量,这些变量占有的内存空间直到Tomcat服务器关闭才释放。 当多个用户请求一个JSP页面时,Tomcat服务器为每个用户启动一个线程,这些线程由Tomcat服务器来管理,这些线程共享JSP页面的成员变量,因此任何一个用户对JSP页面成员变量操作的结果,都会影响到其他用户
2.3Java程序片
<% %>:这种标记包含Java代码,用于在页面上执行一些操作。
2.4Java表达式
<%= %>:这种标记用于在页面上打印Java表达式的值。
<%@ page contentType = "text/html" %>
<%@ page pageEncoding = "utf-8" %>
<HTML><body bgcolor=pink>
<% int x=12,y=9;
%>
<p style="font-family:宋体;font-size:36">
计算表达式x+y+x%y,即<%= x %>+<%= y %>+<%= x %>%<%= y %>的值:
<%= x+y+x%y %>
<br>计算表达式x>y即<%= x %> > <%= y %>的值:
<%= x>y %>
<br>计算表达式sin(<%= Math.PI %>/2)的值:
<%= Math.sin(Math.PI/2) %>
<br>
<% if(x-y>=0) {
%>
如果<%= x %>大于<%= y %>,计算<%= x %> - <%= y %>即
<%= x-y %>的平方根:
<%=Math.sqrt(x-y)%>
<% }
%>
</p></body></HTML>
2.5JSP指令标记
<%@ %>:这种标记用于定义JSP页面的属性和指令,例如引入外部样式表或定义页面的语言、字符集等。
<%@ page contentType="image/jpeg" %>
<%@ page import="java.awt.*" %>
<%@ page import="java.io.OutputStream" %>
<%@ page import="java.awt.image.BufferedImage" %>
<%@ page import="java.awt.geom.*" %>
<%@ page import="javax.imageio.ImageIO" %>
<% int width=320, height=300;
BufferedImage image = new BufferedImage(width,height,BufferedImage.TYPE_INT_RGB);
Graphics g = image.getGraphics();
g.setColor(Color.lightGray);
g.fillRect(0, 0, width, height);
Graphics2D g_2d=(Graphics2D)g;
Ellipse2D ellipse=new Ellipse2D. Double (70,90,120,60);
g_2d.setColor(Color.blue);
AffineTransform trans=new AffineTransform();
for(int i=1;i<=24;i++) {
trans.rotate(15.0*Math.PI/180,160,130);
g_2d.setTransform(trans);
g_2d.draw(ellipse);
}
g_2d.setColor(Color.red);
Arc2D arc= new Arc2D.Double (200,220,100,40,0,270,Arc2D.PIE);
g_2d.fill(arc);
arc.setArc(5,5,100,40,0,-270,Arc2D.PIE);
g_2d.fill(arc);
g_2d.setColor(Color.black);
g_2d.setFont(new Font("",Font.BOLD,18));
g_2d.drawString("耿祥义, Graphic Drawer",10,280);
g_2d.dispose();
OutputStream outClient= response.getOutputStream(); //获取指向用户端的输出流
boolean boo =ImageIO.write(image,"jpeg",outClient);
%>
2.6JSP动作标记
动作标记是JSP的特有标记,可以用于执行与页面相关的操作。这些操作可能包括读取和输出数据、从数据库中检索数据、分页等等。以下是一些常见的JSP动作标记:
- <jsp:forward>:将请求转发到另一个页面或Servlet。
<%@ page contentType="text/html" %>
<%@ page pageEncoding = "utf-8" %>
<HTML><body>
<h1> 产生一个1-10之间的随机数
<% double i=(int)(Math.random()*10)+1;
if(i<=5) {
%> <jsp:forward page="example2_12_a.jsp" >
<jsp:param name="number" value="<%= i %>" />
</jsp:forward>
<% }
else {
%> <jsp:forward page="example2_12_b.jsp" >
<jsp:param name="number" value="<%= i %>" />
</jsp:forward>
<% }
%>
</body></HTML>
- <jsp:include>:将另一个JSP页面包含在当前页面中。
<jsp:include page = "文件的URL"/>
或
<jsp:include page = "文件的URL"/>
param 子标记
</jsp:include>
- <jsp:useBean>:用于实例化JavaBean并将它们放在作用域中以便在页面上使用。