JSP(动态网页技术)
JSP是一种建立在SERVLET规范提供的功能之上的动态网页技术.
我们可以将Servlet看做是含有HTML的JAVA代码,可以将JSP看做是含有JAVA代码的HTML.这种是对这两项技术的通常看法.
但实际上它们是一回事,JSP页面最终要转换成servlet,并进行编译.
JSP文件在用户第一次请求时,会被编译成SERVLET然后有这个SERVLET处理用户请求.
JSP容器
请求JSP页面 JSP文件 2转换
客户端 SERVLET文件(.JAVA)3编译
Class文件(.class) 4执行
5返回响应 SERVLET实例
在JSP中元素有3种类型:指令元素,脚本元素和动作元素.
一、指令元素:主要用于提供JSP页面相关信息.其包含3种指令:page,include和taglib
1.page指令
语法:<%@page attr1="value1"attr2="value2"...%>
Language="脚本语言"默认值是java.
Import="importist"
用于制定在脚本环境中可以使用的java类.
如:<%@page import="java.util.*%">
也可以设置多个import属性
<%@page import="java.util.*%">
<%@page import="java.io.*%">注:page指令中只有import属性可以重复设置.
Session="true|false"
用于指定在JSP中是否可以使用session对象,默认为true.
contentType="ctinfo"
用于响应jsp页面字符编码
pageEncoding="peinfo"
用于指定JSP页面字符编码,如果有此属性则JSP字符编码使用该属性指定的字符集,没有则使用contentType指定的字符集.如果都没有则字符集使用:"iso-8859-1".
Errorpage="error_url"
用于指定当JSP页面发生异常时.将转错误页面.
isErrorPage="true|false"
用于指定当前JSP是否是个JSP页面的错误处理页面,默认为false.
isElIgnored="true|flase"
True容器忽略表达式:false使用el.
2,include指令
用于JSP页面中静态包含一个文件,该文件常用的为JSP页面,HTML页面.
如:<@include file="xxx.jsp"%>
<%@page language="java"pageREncoding="gb2312"%>
<html>
<><>欢迎</title></head>
<body>
您现在的时间是:<%include file="data.jsp"%>
<./body>
</html>
3,taglib指令
Taglib指令允许页面使用定制的标签.
<%@taglib uri="taglibraryurl" ptrfix="tagprefix"%>
Url
该属性惟一地识标和前缀相关标签库描述符,可以使绝对或者相对的.用于定位标签库位置.
Prefix
定义一个以prefix:tagname形式的字符前缀,用于区分多个自定义标签.在JSP2.0空前缀是非法的.
二、脚本元素包括3个部分:声明,脚本段及表达式.
3种脚本元素都是基于<%>的语法,如下:
<%! %>
<% %>
<%= %>
1 声明
用于声明在JSP页面中使用的变量和方法,声明必须是完整的声明语句,遵循JAVA语法标准.声明不会在当前输出流中产生任何输出.
语法:<%! %>
<%! Int i; %>
<%! int i=0;%>
<%! Public String f(int i){if(i<3) return I}%>
2脚本段
是请求处理期间要执行的java代码段.可产生输出,将其发送到客户端.
语法:<% %>
如:
<% String s1="good morning";
String s2 ="good afternoon";
If(s1.equals(s2){
Out.write(s1);
}
Else{
Out.write(s2);
}
%>
3表达式
是java语言完整的表达式,在请求处理计算这些表达式的结果并且将被转换为字符串,插入到当前输出流中.
语法:<%= %>
<html>
<body>
现在时间是<%=(new Date()).toLocalsString()%>
</body>
</html>
三、动作元素
动作元素为请求处理阶段提供信息.动作元素遵循XML元素语法,JSP标签区分大小写的.
常用JSP2.0标准的动作元素:
1.<jsp:useBean>,<jsp:serProperty>和<jsp:getProperty>
用于访问javabean后面详细讲解
2.<jsp:param>
用来以名字与值一一对应的形式为其他标签提供附加信息
语法:<jsp:param name="name"value="value"/>
Name 参数名字.
Value 参数值.
3.<jsp:include>
用于包含当前页面静态和动态的资源.
语法:<jsp:include page="..."/>
或<jsp:include page="...."><jsp:param.../>可以包含多个
</jsp:include>
Page属性:指定被包含的资源的相对路径.
<%@include%>与<jsp:include>的区别
<%@include%>编译指令是JSP程序的转换时期(即JSP程序被翻译为JAVA程序的时期)就先将file属性所指定的程序内容嵌入,让它和主JSP程序结合为一个整体,然后才使用JAVA编译器编译转换所得的JAVA程序文件,并将其载入JSP引擎中,file属性所指定的文件不会被单独翻译和编译.
而<jsp:include>操作指令Page属性所指定的文件在主JSP程序的转换时期是不会被编译的,它只在客户端请求时期如果被执行到才会被动态地编译载入,而Page属性所指定的JSP程序会被单独转换编译为Servlet.
JSP隐含对象
所有的隐含对象只能在脚本段和表达式中调用共有9个隐含对象:request, response , pageContext , session , application , out , config , page, execption