日期:2014-05-16 浏览次数:20540 次
6.1 JSP 简介 
6.1.1 JSP的需求和优点 
生成内容与表示相分离: 
虽然JSP的实质是Servlet,但与Servlet相比,内容生成与表示相分离是JSP的一个优点,这是Servlet无法解决的。 
Servlet用out.println()一句一句地输出,比如下面的一段简单程序 
Java代码 
1.Out.println(“html”);…………………? 
Out.println(“html”);…………………
??? 当整个网页内容非常多且复杂的时候,就会有很多out.println()输出HTML标记。这样写起程序来会很烦和容易出错。JSP则很好地解决了这个问题,JSP将内容的动态生成与静态表示很好地分离了开来。例如,在JSP代码中,HTML标记都由静态内容来表示,而不用Java代码去输出,这样就将HTML标记和Java程序动态输出的内容分开了。这样就可以有利于美工去美化网页,而不必去关注Java代码,也有助于Java 编程人员不必关注于网页的美化,而只关注于自己的Java代码。 
强调可重用组件: 
可重用组件是一个程序,它可以为多个子程序(如JavaBean)使用。Web程序员可以共享和交换JavaBean。JavaBean使得可以在JSP页面中执行复杂的功能。例如,JavaBean Calender可以用于显示当前日期和时间。Web应用程序的所有网页都可以使用此JavaBean Calender。基于此组件的方法有助于重用现有程序和加速开发过程。 
JSP还在JSP文件中使用其他JSP或HTML文件,这些文件被视为远程资源。JSP提供include指令,通过该指令可以在JSP页面中插入远程资源的内容。Include指令将文件内容替换。 
简化页面开发: 
JSP使得对脚本怨言不是很了解的Web开发人员也可以设计页面。例如,jsp:useBean标签用于指定在JSP页面中使用的JavaBean。程序员可以使用JSP提供的标准标签来生成动态内容。 
JSP提供的标准标签分别如下: 
— 访问和实例化JavaBean组件 
— 设置或检索Bean属性 
— 下载Applet 
— 执行其他功能,如检索服务器上的表中难于编码且耗时的行 
如果JSP中的现有标准标签不能用于执行所需的功能,则程序员可以创建标签,这些标签称为自定义标签。使用JSP的taglib指令可以创建自定义标签。 
JSP允许使用开发工具,如Macromedia Dreamweaver 和 Eclipse。使用这些工具可以简化和加速Web开发过程。 
6.1.2 对JSP的误解?? 
6.1.3 JSP的基本语法JSP页面里有什么元素呢?基本的JSP页面包含HTML标签和JSP标签。
Java代码 
1.<%@ page import="java.util.*"%>??? 
2.<%@ page contentType%>??? 
3.<%@ page import="java.io.*,java.sql.*"%>??? 
4.<html><head><title>JSP</title></head><body>??? 
5.<!-- HTML注释,此注释内容会发送到客户端 -->??? 
6.? <%!??????????????????????????????????????????? <%??? 
7.???????? // 全局变量、类、方法????????????????????? // 可以使用JAVA的单行注释??? 
8.??????? // 不加!表示局部变量?????????????????????? /*??? 
9.??????? int i = 0 ;????????????????????????????????????????????? 多行注释??? 
10.?? %>?????????????????????????????????????????????????????? */??? 
11.? <%=++i%>???????????????????????????????? %>??? 
12.<%=new Date()%>??? 
13.<%--? JSP中使用的注释??? 
14.接收传递过来的参数,并进行打印输出??? 
15.使用如下方法:??? 
16.? request.getParameter("参数名称") ;??? 
17.? 此方法返回String类型??? 
18.? getParameter方法定义:??? 
19.? public String getParameter("参数") ;??? 
20.--%>??? 
21.<%??? 
22.// 接收参数??? 
23.String name = request.getParameter("uname") ;??? 
24.%>??? 
25.<h1><%=name%></h1>??? 
26.<h1><%=request.getParameter("uname")%></h1>??? 
27.</body></html>?? 
28.? 
29.<%@page contentType="text/html; charset=GBK"??? 
30.language="java" import="java.util.Calendar"%>?? 
31.<%!?? 
32.String getHello(String name) {?? 
33.return "Hi," + name + "!";?? 
34.}?? 
35.%>?? 
36.<%Calendar now = Calendar.getInstance();%>?? 
37.<html>?? 
38.<head>?? 
39.<title>JSP 页面构成</title>?? 
40.</head>?? 
41.<body>?? 
42.<h1 align="center">JSP页面构成</h1>?? 
43.? 
44.<%=getHello("朋友")%><%if (now.get(Calendar.AM_PM) == Calendar.AM) {%>?? 
45.早上好!?? 
46.<%} else {%>?? 
47.下午好!?? 
48.<%}%>?? 
49.<br>?? 
50.<br>?? 
51.<jsp:include flush="false" page="welcome.jsp">?? 
52.<jsp:param name="str" value="参数"/>?? 
53.</jsp:include>?? 
54.</body>?? 
55.</html>? 
<%@ page import="java.util.*"%> 
<%@ page contentType%> 
<%@ page import="java.io.*,java.sql.*"%> 
<html><head><title>JSP</title></head><body> 
<!-- HTML注释,此注释内容会发送到客户端 --> 
? <%!??????????????????????????????????????????? <% 
???????? // 全局变量、类、方法????????????????????? // 可以使用JAVA的单行注释 
??????? // 不加!表示局部变量?????????????????????? /* 
??????? int i = 0 ;????????????????????????????????????????????? 多行注释 
?? %>??????????