JSP全名为Java Server Pages,中文名叫java服务器页面,其根本是一个简化的Servlet设计,它是由Sun Microsystems公司倡导、许多公司参与一起建立的一种动态网页技术标准。JSP技术有点类似ASP技术,它是在传统的网页HTML(标准通用标记语言的子集)文件(.htm,.html)中插入Java程序段(Scriptlet)和JSP标记(tag),从而形成JSP文件,后缀名为(*.jsp)。 用JSP开发的Web应用是跨平台的,既能在Linux下运行,也能在其他操作系统上运行。
它实现了Html语法中的java扩展(以 <%, %>形式)。JSP与Servlet一样,是在服务器端执行的。通常返回给客户端的就是一个HTML文本,因此客户端只要有浏览器就能浏览。
JSP技术使用Java编程语言编写类XML的tags和scriptlets,来封装产生动态网页的处理逻辑。网页还能通过tags和scriptlets访问存在于服务端的资源的应用逻辑。JSP将网页逻辑与网页设计的显示分离,支持可重用的基于组件的设计,使基于Web的应用程序的开发变得迅速和容易。
JSP(JavaServer Pages)是一种动态页面技术,它的主要目的是将表示逻辑从Servlet中分离出来。
Java Servlet是JSP的技术基础,而且大型的Web应用程序的开发需要Java Servlet和JSP配合才能完成。JSP具备了Java技术的简单易用,完全的面向对象,具有平台无关性且安全可靠,主要面向因特网的所有特点。
Jsp包含三个编译指令和七个动作指令。
三个编译指令为:page、include、taglib。
1.1 page指令
通常位于jsp页面的顶端,同一个页面可以有多个page指令。语法格式如下:
<%@ page language="java" import="java.util.*" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
其中language=”java”和contentType=”text/html”必有,其他为可选。
1.2 include指令
使用 include 指令,可以将一个外部文件嵌入到当前 JSP 文件中,同时解析这个页面中的 JSP 语句(如果有的话)。这是个静态的 include 语旬,不会检查所包含 JSP 页面的变化。
include 既可以包含静态的文本,也可以包含动态的 JSP 页面。静态的编译指令include ,是将被包含的页面加入进来,生成一个完整的页面。
include 编译指令的语法:
<% @include file="relativeURLSpec" %>
taglib使用很少,不再举例。
七个动作指令为:jsp:forward、jsp:param、jsp:include、jsp:plugin、jsp:useBean、jsp:setProperty、jsp:getProperty。
1、 forward指令:forward 指令用于将页面响应控制转发给另外的页面。既可以转发给静态的 HTML页面,也可以转发到动态的 JSP 页面,或者转发到容器中的 Servlet。
jsp:forward语法:
还可以这样写:
{
第二种语法用于在转发时增加额外的请求参数。增加的请求参数的值可以通过HttpServletRequest 类的 getParameter方法获取。
2、 include指令,它是一个动态的指令,可以用于导入某个页面。它的导入会每次检查被导入页面的改变。下面是included的语法:
或者:
注意它与 页面编译指令include 是不同的
主要有两个方面的不同;
2.1:执行时间上:
<%@ include file="relativeURI"%>
是在翻译阶段执行
在请求处理阶段执行.
2.2:引入内容的不同:
<%@ include file="relativeURI"%>
引入静态文本(html,jsp),在JSP页面被转化成servlet之前和它融和到一起.
引入执行页面或servlet所生成的应答文本.
另外在两种用法中file和page属性都被解释为一个相对的URI.如果它以斜杠开头,那么它就是一个环境相关的路径.将根据赋给应用程序的URI的前缀进行解释,如果它不是以斜杠开头,那么就是页面相关的路径,就根据引入这个文件的页面所在的路径进行解释.
3 . useBean、setProperty和getProperty指令
这三个指令都是与JavaBean相关的指令,其中useBean用于在jsp页面初始化一个java实例,setProperty用于修改JavaBean实例的属性,getProperty用于获取JavaBean实例的属性。
useBean的语法格式:
Id是JavaBean的实例名,class属性确定JavaBean的实现类。Scope属性确定生存范围【页面、请求、会话、应用】
setProperty的语法格式:
Name属性确定需要设定。
4 .plugin指令
plugin 指令主要用于下载服务器端的 JavaBean 或 Applet 到客户端执行。由于程序在客户端执行,因此客户端必须安装虚拟机。在这里就不说明了。
request:用户端请求,此请求会包含来自 GET/POST请求的参数;
response:网页传回用户端的回应;
pageContext:网页的属性是在这里管理;
session:与请求有关的会话期;
application:servlet 正在执行的内容;
out:用来传送回应的输出;
config:servlet 的构架部件;
page:JSP 网页本身;
exception:针对错误网页,未捕捉的例外。
具体使用时再详细说明。
实验要求:
1.在页面中输出乘法口诀表
2.编写三个JSP页面:first.jsp 、second.jsp和third.jsp。另外,要求用“记事本”编写一个TXT文件hello.txt。hello.txt的每行有若干个英文单词,单词之间用空格分隔,每行之间用“
”
分隔,如下所示:
hello.txt
package apple void back public
private throw class hello welcome
(1)first.jsp的具体要求
first.jsp使用page指令设置contentType属性的值是text/plain,使用include指令静态插入hello.txt文件。
(2)second.jsp的具体要求
second.jsp使用page指令设置contentType属性的值是application/vnd.ms-powerpoint,使用include指令静态插入hello.txt文件。
(3)third.jsp的具体要求
third.jsp使用page指令设置contentType属性的值是application/msword,使用include指令静态插入hello.txt文件。
其中hello.txt文件内容如下:
hello.txt
package apple void back public
private throw class hello welcome
首先是实验1 乘法口诀表的页面:
乘法表
乘法表
<% for(int i=1;i<=9;i++){
for(int j=1;j<=9;j++){
if(j<=i){
//out.print(i+"*"+j+"="+i*j);
%>
<%=j%> * <%=i%> == <%=i*j%>
<%
}
%>
<%} %>
<%} %>
然后是实验2
frist.jsp
<%@ page language="java" contentType="text/plain"%>
Frist
second.jsp
<%@ page language="java" contentType="application/vnd.ms-powerpoint"%>
Second
<%@ include file ="hello.ppt" %>
third.jsp
<%@ page language="java" contentType="application/ms.word" %>
Thrid
<%@ include file="hello.txt" %>