您的位置:首页 > Web前端 > JavaScript

Hello JSP!——基础语法篇

2015-08-05 18:48 585 查看
一、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.具有J***A的特点

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

二、JSP运行机制

HelloJSP.jsp

<html>
<head>
	<title>HelloJSP</title>
</head>
<body>
<%
	out.println("Hello JSP!");    //在网页上打印输出"Hello JSP!"语句
 %>
</body>
</html>
运行结果:



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

<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>
<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>
<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>
<head>
	<title>DeclarationsDemo</title>
</head>
<body>
	<%
		String str="Hello";   //声明字符串str
	 %>
	<%= str%>
</body>
</html>
运行结果:



代码解析:

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

4.注释

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

HTML注释:

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

CommentsDemo1.jsp

<%@ 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

<%@ 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>
<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>
<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还是很开心的,丢人也不可怕。

这篇博文的内容基本上都是我照着书上打的,通过将每一个知识点敲成博文的形式再一次加深了自己的记忆。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: