JSP的基本构成:HTML文件+Java片断+JSP标签
三大指令:page指令、include指令、taglib指令。
page指令:
1.language属性:设置当前页面中编写JSP脚本使用的语言,默认值为java。
<%@page language="java"%>
2.contentType属性:设置页面响应的MIME类型,通常被设置为text/html。
<%@page contentType="text/html"%>
还可以设置JSP字符的编码:<%@page contentType="text/html;charset=gb2312"%>
3.import属性:类似于Java中的import语句,用来向JSP文件中导入需要用到的包。
在page指令中可多次使用该属性来导入多个包。例如:
<%@page import="java.util.*" %>
<%@page import="java.text.*"%>
或者通过逗号间隔,来导入多个包。
<%@page import="java.util.*,java.text.*"%>
在JSP中已经默认导入了以下的包。
java.lang.*
java.servlet.*
java.servlet.jsp.*
java.servlet.http.*
4.extends属性:
5.session属性:该属性默认为ture,表示当前页面支持session。
6.buffer属性:(缓冲)
7.autoFlush属性:
8.isThreadSafe属性:
9.info属性:该属性可设置为任意字符串,如当前页面的作者或其他有关的页面信息。可通过Servlet.getServletInfo()方法来设置的字符串。例如:
<%@page info="This is index.jsp!"%>
<%=this.getServletInfo()%>
访问页面后,显示如下结果: This is index.jsp!
10.errorPage属性和isErrorPage属性:
例如:若当前应用下包含index.jsp和error.jsp文件。
在index.jsp页面中进行数据类型的转换操作,其代码如下。
<%@page contentType="text/html;charset=utf-8" errorPage="error.jsp"%>
<%
String name="YXQ";
Integer.parseInt(name); //将字符串转化为int型
%>
上述代码将一个非数字格式的字符串转化为int型,因此将发生异常,最终进入errorPage属性指定的error.jsp页面显示错误信息。
在error.jsp页面中需要将isErrorPage属性设为true,然后才能调用exception对象输出错误信息。
error.jsp页面的代码如下。
<%page contentType="text/html;charset=gb2312" isErrorPage="true"%>
出现错误!错误如下:<br>
<%=exception.getMessage()%>
include指令:
<%@include file="文件的绝对路径或相对路径"%>
使用include指令引用外部文件,可以减少代码的冗余。(如:页面公用)
<%@page contentType="text/html;charset=utf-8"%>
<table>
<tr><td colspan="2"><%include file="top.jsp"%></td></tr>
<tr>
<td><%@include file="side.jsp"%></td>
<td>内容显示</td>
</tr>
<tr><td colspan="2"><%@include file="top.jsp"%></tr>
</table>
taglib指令:
六大标签:伪指令标签:<%@ %>
注释标签:<%-- --%>
声明标签:<%! %>
动作标签:<jsp:action Name/>
脚本标签:<% %>
表达式标签:<%= %>
九大内置对象: applicatin、config 、exception、out、page、pageContext、request、response、session
四大作用域:
JSP作用域
JSP页面中的对象,包括用户创建的和JSP内置对象都有一个范围属性。
Application——具有应用程序作用域的对象,在应用程序存活期间均可用。
Session——具有会话作用域的对象,在会话的存活期间可用。
Request——具有请求作用域的对象,在所有处理同一个请求的页面内部内都可以访问。
Page——具有页面作用域的对象,在当前页内可用
方法:setAttribute(String name,Object attribute)
getAttribute(String name)
作用域范围从大到小:
Allication作用域:范围最大
可以被不同页面、不同用户共享
可以通过Allication内置对象或ServletContext
访问Allication作用域对象
Session作用域:范围仅次于Allication作用域
可以被同一客户端的请求访问
可以通过Session内置对象访问Session作用域对象
Request作用域:范围小于Session作用域
可以被forward()方法转向页面或者include()包含页面访问
可以通过request内置对象访问request作用域对象
page作用域:范围最小
只能被创建对象的页面访问
只能通过pageContext内置对象访问page作用域对象