Java Server Pages
Servlet简化设计,逻辑与界面设计分开,开发更方便;
HTML语法的java 扩展,加入新的标签(<%, %>,…);
强大的组件(Java Bean)支持功能;
JSP语法概述
JSP原始代码中包含了JSP元素和Template(模板) data两类
Template data指的是JSP引擎不处理的部分,即标记<%……%>以外的部分,例如代码中的HTML的内容等,这些数据会直接传送到客户端的浏览器
JSP元素则是指将由JSP引擎直接处理的部分,这一部分必须符合JSP语法,否则会导致编译错误。
(一)JSP简介
1.servlet和JSP(JavaServer Page)
– 已成为开发电子商务等动态网站的首选技术,它们都是运行在服务器上的Java程序
– servlet
HTML的编写和维护都比较困难,使用print语句生成HTML并不容易,非Java开发人员很难处理这些HTML
– JSP
静态内容的输出都采用标准的HTML,只用java语言编写页面中生成动态内容的代码
提供了对Java编程语言以及针对动态部分的servlet技术的完全访问
JSP
– 简单的说,就是嵌入了Java代码的HTML,由静态HTML、专用的JSP标签和Java代码组成
– 服务器端的技术。在后台被自动转换成servlet
– 仅在修改后的第一次被访问时,才会被转换成servlet并进行编译,创建JSP唯一的一个一实例
JSP文件在服务器的部署
– 可以和常规的HTML页面放在相同的目录中,并使用和常规HTML相同的URL访问它们
– 除了不允许将WEB-INF和META-INF作目录名之外,可以使用任何喜欢的目录名
– Tomcat中JSP的默认目录是install_dir/webapps/ROOT,我们只要把编写好的JSP文件直接放在此目录下即可
例如install_dir/webapps/ROOT/SomeDirectory/SomeFile.jsp 则对应的URL为http://host:port/SomeDirectory/SomeFile.jsp
2.JSP语法概述
除了标准的HTML以外,JSP主要包括三类组件
– 脚本元素(scripting elements)
使你可以向JSP文件产生的servlet文件中插入代码
– 指令标签(directives)
将影响由JSP页产生的servlet的总体结构
– 动作标签(actions)
影响JSP运行时的功能
(1)脚本元素
脚本元素——向JSP文件产生的servlet文件中插入代码,主要有三种形式
– 表达式<%= expression %>
<%和=之间不能有空格。expression必须能求值,服务器计算出值后以字符串形式发送到客户端显示
– 程序片<% code %>
一个JSP页面可以有许多,它们将被插入到生成的servlet文件的_jspService方法中
每次客户端请求都会新开一个线程,调用servlet的service方法,service方法再调用_jspService方法
–声明语句<%! Declaration %>
声明的内容包括变量和方法,将被插入到生成servlet的类体中,在_jspService方法之外,成为类变量和类方法,直到服务器关闭才被释放
当多个客户请求一个JSP页面时,多个线程将共享这些变量和方法,因而任何一个用户对这些变量操作的结果,都会影响到其他用户
(2)指令标签
–将影响由JSP页产生的servlet的总体结构
–其格式为<%@ directive attribute1="value1" , attribute2="value2" ,┄%>
directive代表指令名称
attribute代表该指令中可选的属性名称
value代表属性值并且总是用单引号或双引号括起来,要想在属性值value中输出引号,可在该引号前用一个反斜杠“\”
–在JSP中,有三种类型的指令
a.page指令
– 可放在文档内的任何位置,该指令对整个页面有效
– 可以定义一个或多个大小写敏感的属性,包括import、contentType、isThreadSafe、Session、buffer等
– import属性
为JSP页面引入Java核心包中的类,这样就可以在脚本部分使用这些类,如:<%@ page import="java.io.*" %>
可以为import属性指定多个值,这些值用逗号分割,这样就可以引入若干个包或类,如:<%@ page import="java.io.*", "java.awt.*", "java.util.Date"%>
JSP页面默认import属性已经有如下的值:"java.lang.*","javax.servlet.*","javax.servlet.jsp.*","javax.servlet.http.*“
除import属性外,Page指令的其它属性只能指定一个值
–contentType属性
定义JSP页面相应的MIME(Multipurpose Internet Mail Extension,多用途Internet 邮件扩展)类型和JSP页面字符编码
其属性使用以下两种格式之一
<%@ page contentType="MIME-Type ;charset=Character-Set"%>
或者
<%@ page contentType="MIME-Type"%>
例如
<%@ page contentType="application/vnd.m s-ex cel; charset=GB2312" %>
其属性默认值为
<%@ page contentType= "text/ html; charset=ISO-8859-1" %>
–isThreadSafe属性
用来设置JSP页面是否可多线程访问
设为true时,JSP页面能同时响应多个客户的请求
设为false时,同一时刻只能处理一个客户的请求,其它客户须等待
其默认值为true
–session属性
表示当前的JSP页面是否参与HTTP会话
设为true时,可以使用内置的javax.Ser