JSP全名为Java Server Pages,中文名叫java服务器页面,其根本是一个简化的Servlet设计,它[1] 是由Sun Microsystems公司倡导、许多公司参与一起建立的一种动态网页技术标准。JSP技术有点类似ASP技术,它是在传统的网页HTML(标准通用标记语言的子集)文件(.htm,.html)中插入Java程序段(Scriptlet)和JSP标记(tag),从而形成JSP文件,后缀名为(*.jsp)。 用JSP开发的Web应用是跨平台的,既能在Linux下运行,也能在其他操作系统上运行。
JSP的本质是servlet,因此servlet里的对象可当作jsp的对象处理。
所以要互补使用,一般采用:JSP+Servlet+Javabean
Jsp就是servlet, 所以jsp也是java类,通过jsp引擎把jsp转译成了servlet。
XML中JSP的定义
通过对后缀为.jsp 和.jspx的servlet进行映射。
其映射的jsp经过该java类处理。
该类中包含的信息就是JSP的语法规则。
page 指令里的常用属性如下:
<%@ page
language=“Java” 选择编码语言
import=“importList” 导入java类库(唯一可以重复使用的属性,其他属性最多只能使用一次)
contentType=“contentTyepInfo” 内容的类型
session=“true|false” 是否开启Session
isThreadSafe=“true|false” 是否线程安全,默认为true
info=“infoText”
errorPage=“errorPageUrl” 指定错误页面:如果发生异常,则会跳到这个错误页面
isErrorPage=“true|false” 指定当前这个页面是否为错误页面。如果其他的页面发生错误,就会调到这里来。
%>
include指令是在JSP页面被转换成Servlet之前将指定的文件包含进来。这种特性允许你创建可重用的导航栏、联系人信息部分、页面计数等。(重复利用的理解:比如说,可能有多页面都需要用到某个标题页面,就可以把这个公共的标题页面使用include指令包含进来,然后在其他的页面中直接导入标题页面就行了)
include指令共有两种形式
1、静态导入(多个页面编译成一个页面,耦合性高,解析执行速度快)
格式:
<%@include file="fileURL"%>
过程:
在JSP程序的转换时期先把file属性设定的文件包含进来,然后开始执行转换及编译的工作。
注意:
include静态包含,只能包含静态的资源,编译后形成一个文件。其实,title.jsp和content.jsp合起来只形成一个.java文件,最后编译为一个.class文件。
2、动态导入(生成两个java源文件,不会互相干扰)
格式:
<jsp:include page="fileURL">jsp:include>
注意:
动态包含的主要区别在于,其每个页面单独生成JAVA源文件,不会互相干扰。
在jsp页面中,注释共有三种形式。
1.HTML注释
2.我是JAVA注释
<% //我是JAVA注释 %>
3.我是JSP注释
<%-- 我是JSP注释 -->
jsp注释是最强大的,其注释的内容,即使在JAVA源文件中也不会显示,实现了完完全全的注释!
格式:
<%! %>
声明中 常常用于声明变量。
例如:
<%! int a=5 %>
还有一种是声明在脚本段中的变量
<% b=5 %>
在<% %>里面写的东西在_jspservice方法中,是局部变量
格式:
<%= a %>
格式:
<% int a=5;method(); %>
内可嵌入java代码。
格式:
<jsp:forward page="content.jsp">jsp:forward>
从图中可以看出,其实现的底层是调用了一个请求转发,同时如果调用成功,会直接return 掉,后续代码不继续执行。
元素用于在浏览器中播放或显示一个对象(典型的就是applet和Bean),而这种显示需要在浏览器的java插件
格式:
<jsp:plugin type="" code="">jsp:plugin>
属性
align=”bottom | top | middle | left | right” 图形,对象,Applet的位置,有以下值:
height=”displayPixels” width=”displayPixels”
Applet或Bean将要显示的长宽的值,此值为数字,单位为象素.
格式:
<jsp:usebean id="对象名" class="包名.类名" scope="作用范围(request/page/application/session)">jsp:usebean>
用于引入javabean,通常配合setProperty以及setProperty使用
格式:
setProperty name="javaBean对象id" property="javaBean对象属性名(javabean引入的方法名,可填入 * 来引入全部方法" setProperty>
用于设置属性,只有设置了属性后,才可以获取相应的属性。
可使用通配符 * ,来将引入的javabean中的全部属性设置。就相当于可以调用usebean中引入的java类的全部属性。
格式:
name="javaBean对象id" property="javaBean对象属性名" />
例如:
格式:
<jsp:include page="fileURL">jsp:include>
注意:
动态包含的主要区别在于,其每个页面单独生成JAVA源文件,不会互相干扰。
到达跳转页面可以通过 request.getParameter(“参数名”)方式取出参数值
jsp:param操作被用来以“名-值”对的形式为其他标签提供附加信息。它和
jsp:include、jsp:forward一起使用。
格式
param name="paramName" value="paramValue"/>
其中,name为与属性相关联的关键词,value为属性的值。
例如
includeAction.jsp
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=GB18030">
<title>Includetitle>
head>
<body>
<%double i = Math.random();%>
<jsp:include page="come.jsp">//加载come.jsp
<jsp:param name="number" value="<%=i%>" />//传递参数
jsp:include>
body>
html>
come.jsp
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=GB18030">
<title>cometitle>
head>
<body bgcolor=cyan>
<Font Size=3>
<%//获得includeAction.jsp传来的值:
String str = request.getParameter("number");
double n = Double.parseDouble(str);
%>
The value form includeAction is:<br> <%=n%>
Font>
body>
html>
九大内置对象,包括
4大作用域对象(pageContext、request、session、application)[作用域范围从低到高]+
3大打酱油对象(page[页面对象]、config[配置对象]、exception[例外对象])+
2大输出对象(out[输出对象]、response[响应对象])
“request” 对象代表的是来自客户端的请求,例如我们在FORM表单>中填写的信息等,是最常用的对象。关于它的方法使用较多的是getParameter、getParameterNames,getParameterValue,
通过调用这几个方法来获取请求对象中所包含的参数的值.
“response” 对象代表的是对客户端的响应,也就是说可以通过“response”对象来组织发送到客户端的数据。但是由于组织方式比较底层,所以不建议使用,需要向客户端发送文字时直接使用“out” 对象即可。
“session” 对象代表服务器与客户端所建立的会话,当需要在不同的JSP页面中保留客户信息的情况下使用,比如在线购物、客户轨迹跟踪等。
“application” 对象负责提供应用程序在服务器中运行时的一些全局信息,常用的方法有getMimeType和getRealPath等。
“out” 对象代表了向客户端发送数据的对象,与“response” 对象不同,通过“out” 对象发送的内容将是浏览器需要显示的内容,是文本一级的,可以通过“out” 对象直接向客户端写一个由程序动态生成HTML文件。常用的方法除了print和println之外,还包括clear、clearBuffer、flush、getBufferSize和getRemaining,这是因为“out” 对象内部包含了一个缓冲区,所以需要一些对缓冲区进行操作的方法。
“config” 对象提供一些配置信息,常用的方法有getInitParameter和getInitParameterNames,以获得Servlet初始化时的参数。
“page” 对象代表了正在运行的由JSP文件产生的类对象,一般不建议使用。
“exception” 对象则代表了JSP文件运行时所产生的例外对象,此对象不能在一般JSP文件中直接使用,而只能在使用了“<%@ page isErrorPage=”true “%>”的JSP文件中使用
封装了当前jsp页面的运行信息,它提供了返回jsp页面的其他隐式对象的方法 :
getRequest(), getResponse(), getPage()
getServletContext() , getApplication(), getOut()
getSession(), getException(), getServletConfig()
由于Jsp就是servlet,因此,jsp九大内置对象,就是servlet的九个对象。因此可查阅javaEE的api,来了解九大对象的具体方法。