JSP基础语法

来源:互联网 发布:工期优化步骤 编辑:程序博客网 时间:2024/06/03 20:02

一、JSP简介

JSP是Java Server Pages的缩写,是由Sun公司于1999年6月推出的技术,通过在传统的HTML中插入JSP脚本代码从而构成JSP页面。JSP是基于java Servlet及整个Java体系的Web开发技术,可以利用这一技术来构建安全的、跨平台的动态Web站点。JSP目前在不断的进行更新和优化。

JSP具有如下主要特点:

1.程序逻辑和显示分离

使用JSP技术可以把界面的开发与程序逻辑的开发分离开。Web开发人员使用HTML或XML标记来设计界面,使用JSP标记或脚本生成页面上的动态内容,动态内容的逻辑被封装在标记和JavaBeans组件中,并被捆绑在脚本中,所以的脚本在服务器端运行。

JSP技术使得开发人员的分工更加明确,页面设计者可以修改内容而不影响逻辑,应用程序的开发这可以修改逻辑而不影响内容。

2.可重用组件

绝大多数JSP页面依赖于可重用的、跨平台的组件(JavaBeans或Enterprise JavaBean)来执行应用程序要求的复杂处理。开发人员可用共享和交换组件,或把这些组件提供给更多的用户使用。基于组件的开发方法有效地提高了应用程序的开发效率,加速了项目的总体开发进程。

3.使用标签简化页面开发

JSP封装了许多功能,这些功能是生成与JSP相关的HTML或XML的动态内容时所需要的,标准的JSP标记能够访问和实例化JavaBeans组件,设置或检索组件的属性,下载Applet,以及执行使用其他方法难以实现的功能。

JSP标记具有可扩充性,允许开发者扩展JSP标记,开发人员能够定制常用功能标记库。第三方或其他开发人员也可以创建自己的标记库,由于页面制作者可以使用标记库中的功能,因此大大减少了对脚本语言的依赖,并降低了页面制作的复杂度。

4.具有JAVA的特点

由于JSP页面的内置脚本是基于Java语言的,而且所有的JSP页面都被编译成Servlet,所有JSP具有Java的特点,如健壮的存储管理、安全性、跨平台性、“一次编写,各处运行”等特点。


二、JSP运行机制

HelloJSP.jsp

[html] view plain copy
print?
  1. <html>  
  2. <head>  
  3.     <title>HelloJSP</title>  
  4. </head>  
  5. <body>  
  6. <%  
  7.     out.println(“Hello JSP!”);    //在网页上打印输出”Hello JSP!”语句  
  8.  %>  
  9. </body>  
  10. </html>  
<html><head>    <title>HelloJSP</title></head><body><%    out.println("Hello JSP!");    //在网页上打印输出"Hello JSP!"语句 %></body></html>
运行结果:

使用浏览器打开该JSP页面后,查看页面源代码,如下所示:

[html] view plain copy
print?
  1. <html>  
  2. <head>  
  3. <title>HelloJSP</title>  
  4. </head>  
  5. <body> Hello JSP! </body>  
  6. </html>  
<html><head><title>HelloJSP</title></head><body> Hello JSP! </body></html>
可以把JSP页面的执行分成两个阶段,一个是转译阶段,一个是请求阶段。

转译阶段:JSP页面转换成Servlet类。

请求阶段:Servlet类执行,将响应结果发送至客户端。

执行流程如下:

(1)用户(客户机)访问相应的JSP页面。

(2)服务器找到相应的JSP页面。

(3)服务器将JSP转译成Servlet的源代码。

(4)服务器将Servlet源代码编译为class文件。

(5)服务器将class文件加载到内存并执行。

(6)服务器将class文件执行后生成的HTML文件代码发送给客户机,客户机浏览器根据相应的HTML代码进行显示。

如果该JSP页面为第一次执行,那么会经过这两个阶段,而如果不是第一次执行,那么只会请求阶段。这也是为什么第二次执行JSP页面时明显比第一次执行要快的原因。

如果修改了JSP页面,那么服务器将发现该修改,并重新执行转译阶段和请求阶段。这就是为什么修改页面后访问速度变慢的原因。


三、JSP脚本元素

JSP脚本元素包含JSP声明语句、JSP Scriptlets、JSP表达式。

1.JSP声明语句

JSP声明语句以<%!开始,以%>结束,其语法格式为:<%! 声明语句 %>

使用声明语句声明的变量为全局变量,也就是说,当有多个用户在执行此JSP页面时,将共享该变量。

DeclarationsDemo.jsp

[html] view plain copy
print?
  1. <html>  
  2. <head>  
  3.     <title>DeclarationsDemo</title>  
  4. </head>  
  5. <body>  
  6.     <%! int a=1; %>  
  7.     <%  
  8.         out.println(“a=” + a);  
  9.         a++;  
  10.      %>  
  11. </body>  
  12. </html>  
<html><head>    <title>DeclarationsDemo</title></head><body>    <%! int a=1; %>    <%        out.println("a=" + a);        a++;     %></body></html>
运行结果:

第一次:                                                                                                                         第二次:


代码解析:

该示例代码第06行通过“<%! int a=1; %>”声明一个全局变量a,在第08行中使用”out.println(“a=”+a)”输出a的变量,在第09行通过“a++”进行自动递增,因为变量a为全局变量,所以这时如果有多个用户执行该JSP,将会共享该变量。

 

2.JSP Scriptlets

JSP Scriptlets以<%开始,以%>结束,其语法格式是为<% Java代码 %>。在JSP Scriptlets中科院包含多个语句,如:方法、变量、表达式等。

JSPScriptletsDemo.jsp

[html] view plain copy
print?
  1. <html>  
  2. <head>  
  3.     <title>JSPScriptletsDemo</title>  
  4. </head>  
  5. <body>  
  6.     <%  
  7.         String str“Java Scriptlets Demo”;  
  8.         out.println(str);  
  9.      %>  
  10. </body>  
  11. </html>  
<html><head>    <title>JSPScriptletsDemo</title></head><body>    <%        String str= "Java Scriptlets Demo";        out.println(str);     %></body></html>

运行结果:


 代码解析:

示例代码声明了一个字符串str,其值为“Java Scriptlets Demo”,通过out.println()方法在网页上输出该字符串的值。

 

3.JSP表达式

JSP表达式以<%=开始,以%>结束,其语法格式为<%= Java代码 %>。JSP表达式中的代码会首先执行,然后转换成字符串并显示到网页上。

DeclarationsDemo.jsp

[html] view plain copy
print?
  1. <html>  
  2. <head>  
  3.     <title>DeclarationsDemo</title>  
  4. </head>  
  5. <body>  
  6.     <%  
  7.         String str=“Hello”;   //声明字符串str  
  8.      %>  
  9.     <%= str%>  
  10. </body>  
  11. </html>  
<html><head>    <title>DeclarationsDemo</title></head><body>    <%        String str="Hello";   //声明字符串str     %>    <%= str%></body></html>
运行结果:


代码解析:

该示例代码中声明了一个字符串str,其值为:”Hello”,并通过使用表达式<%=str%>在网页上输出该字符串的值。


4.注释

        JSP的注释分为两类,一类为可以在客户端显示的注释,即HTML注释;一类是不能再客户端显示的注释,即JSP注释。

 HTML注释:

         使用<!–开始,以–>结束,中间包含的代码即为注释部分。

CommentsDemo1.jsp

[html] view plain copy
print?
  1. <%@ page pageEncoding=“UTF-8”%>  
  2.   
  3. <html>  
  4. <head>  
  5.     <title>CommentsDemo</title>  
  6. </head>  
  7. <body>  
  8.     <!– 声明变量a –>  
  9.     <%! int a=1; %>  
  10.     <!– 在网页上打印出变量a的值  –>  
  11.     <%  
  12.         out.println(“a=” +a);  
  13.      %>  
  14. </body>  
  15.   
  16. </html>  
<%@ page pageEncoding="UTF-8"%><html><head>    <title>CommentsDemo</title></head><body>    <!-- 声明变量a -->    <%! int a=1; %>    <!-- 在网页上打印出变量a的值  -->    <%        out.println("a=" +a);     %></body></html>

运行结果:


JSP注释:

       使用<%–开始,以–%>结束,中间包含的代码即为注释部分。

CommentsDemo2.jsp

[html] view plain copy
print?
  1. <%@ page pageEncoding=“UTF-8”%>  
  2.   
  3. <html>  
  4. <head>  
  5.     <title>CommentsDemo</title>  
  6. </head>  
  7. <body>  
  8.     <%– 声明变量a –%>  
  9.     <%! int a=1; %>  
  10.     <%– 在网页上打印出变量a的值  –%>  
  11.     <%  
  12.         out.println(“a=” +a);  
  13.      %>  
  14. </body>  
  15.   
  16. </html>  
<%@ page pageEncoding="UTF-8"%><html><head>    <title>CommentsDemo</title></head><body>    <%-- 声明变量a --%>    <%! int a=1; %>    <%-- 在网页上打印出变量a的值  --%>    <%        out.println("a=" +a);     %></body></html>

运行结果:

 

同样也可以在JSP脚本元素中使用Java注释,如Java单行注释“//”,该注释同样不会在HTML源代码中显示。

 

5.综合练习:

       Practice.jsp

[html] view plain copy
print?
  1. <html>  
  2. <head>  
  3.     <title>Practice</title>  
  4. </head>  
  5. <body>  
  6.     <%– 声明变量a,b,c –%>  
  7.     <%  
  8.         int a=2;  
  9.         int b=1;  
  10.         int c=0;  
  11.      %>  
  12.      <%– 对a,b进行运算,并将值赋值给c –%>  
  13.      <%  
  14.         c=a+b;                                          //对a和b进行加法运行,并将值赋值给c  
  15.         out.println(a + ” + ” + b + ” = ” + c + ”<br>“);  
  16.         c=a-b;                                          //对a和b进行减法运行,并将值赋值给c  
  17.         out.println(a + ” - ” + b + ” = ” + c + ”<br>“);  
  18.         c=a*b;                                          //对a和b进行乘法运行,并将值赋值给c  
  19.         out.println(a + ” * ” + b + ” = ” + c + ”<br>“);  
  20.         c=a/b;                                          //对a和b进行除法运行,并将值赋值给c  
  21.         out.println(a + ” / ” + b + ” = ” + c + ”<br>“);  
  22.       %>  
  23. </body>  
  24. </html>  
<html><head>    <title>Practice</title></head><body>    <%-- 声明变量a,b,c --%>    <%        int a=2;        int b=1;        int c=0;     %>     <%-- 对a,b进行运算,并将值赋值给c --%>     <%        c=a+b;                                          //对a和b进行加法运行,并将值赋值给c        out.println(a + " + " + b + " = " + c + "<br>");        c=a-b;                                          //对a和b进行减法运行,并将值赋值给c        out.println(a + " - " + b + " = " + c + "<br>");        c=a*b;                                          //对a和b进行乘法运行,并将值赋值给c        out.println(a + " * " + b + " = " + c + "<br>");        c=a/b;                                          //对a和b进行除法运行,并将值赋值给c        out.println(a + " / " + b + " = " + c + "<br>");      %></body></html>

运行结果:



修改上面的示例,使用JSP表达式输出变量c的值

[html] view plain copy
print?
  1. <html>  
  2. <head>  
  3. <title>Practice</title>  
  4. </head>  
  5. <body>  
  6.     <%– 声明变量a,b,c –%>  
  7.     <%  
  8.         int a = 2;  
  9.         int b = 1;  
  10.         int c = 0;  
  11.     %>  
  12.     <%  
  13.         c = a + b; //对a和b进行加法运行,并将值赋值给c  
  14.     %>  
  15.     <%– 输出c的值 –%>  
  16.     <%=a + ” + ” + b + ” = ” + c + ”<br>“%>  
  17.     <%  
  18.         c = a - b; //对a和b进行减法运行,并将值赋值给c  
  19.     %>  
  20.     <%=a + ” - ” + b + ” = ” + c + ”<br>“%>  
  21.     <%  
  22.         c = a * b; //对a和b进行乘法运行,并将值赋值给c  
  23.     %>  
  24.     <%=a + ” * ” + b + ” = ” + c + ”<br>“%>  
  25.     <%  
  26.         c = a / b; //对a和b进行除法运行,并将值赋值给c  
  27.     %>  
  28.     <%=a + ” - ” + b + ” = ” + c + ”<br>“%>  
  29. </body>  
  30. </html>  
<html><head><title>Practice</title></head><body>    <%-- 声明变量a,b,c --%>    <%        int a = 2;        int b = 1;        int c = 0;    %>    <%        c = a + b; //对a和b进行加法运行,并将值赋值给c    %>    <%-- 输出c的值 --%>    <%=a + " + " + b + " = " + c + "<br>"%>    <%        c = a - b; //对a和b进行减法运行,并将值赋值给c    %>    <%=a + " - " + b + " = " + c + "<br>"%>    <%        c = a * b; //对a和b进行乘法运行,并将值赋值给c    %>    <%=a + " * " + b + " = " + c + "<br>"%>    <%        c = a / b; //对a和b进行除法运行,并将值赋值给c    %>    <%=a + " - " + b + " = " + c + "<br>"%></body></html>

运行结果:


 

6. 小结:

        要开始学习JSP,最重要的是要了解其运行机制,必须了解什么时候进行转译,什么时候进行请求响应,JSP脚本元素是整个JSP体系中最基础的部分。

个人学习心得:

        接触一种新的语言,并且用心去学,收获真的挺大的,唯一不好的还是网页制作方面基础太差,HTML注释说是可以在客户端上显示,我以为是能够在网页上显示出来,结果并不然,HTML注释只是能在网页源代码中显示,而JSP注释不能,我把问题发到了和学长学姐们交流的群里,虽然并没有遭到嘲笑,但是找到问题原因后自己还是感觉一阵脸热,大一的计算机基础真是白学了。不过新知识GET还是很开心的,丢人也不可怕。

       这篇博文的内容基本上都是我照着书上打的,通过将每一个知识点敲成博文的形式再一次加深了自己的记忆。