在接触JSP后对JSP的编译指令和动态指令以及JSP的内置对象会经常混淆,闲来再看这块内容的时候,想着简单归纳记录一下,方便自己查看也方便需要的朋友们。
1.JSP的三个编译指令
page:该指令是针对当前页面的指令,page指令通常位于JSP页面的顶端,一个JSP页面可以使用多条page指令;include:用于指定包含另一个页面,这是静态的include语句,它会把目标页面的其他编译指令也包含进来;
taglib:用于定义和访问自定义标签;
使用编译指令的语法格式如下:
<%@ 编译指令名 属性名="属性值" %>
2.JSP的七个动态指令
JSP动作指令主要有如下七个:
jsp:forward:执行页面跳转,将请求的处理转发到下一个页面。
jsp:param:用于传递参数,必须与其他支持参数的标签一起使用。
jsp:include:用于动态引入一个JSP页面。
jsp:plugin:用于下载JavaBean或Applet到客户端执行。
jsp:useBean:创建一个JavaBean的实例。
jsp:setProperty:设置JavaBean实例的属性值。
jsp:getProperty:输出JavaBean实例的属性值。
3.JSP脚本的9个内置对象
JSP脚本中包含9个内置对象,这9个内置对象都是Servelet API接口的实例,只是JSP规范对它们进行了初始化,也就是说,它们已经是对象,可以直接使用。9个内置对象依次如下:
application:javax.servlet.ServletContext的实例,该实例代表JSP所属的Web应用本身,可用于JSP页面或者在Servlet之间交换信息。通常的方法有getAttribute(String attName)、setAttribute(String attName, String attValue)、getInitParameter(String parameName)等。
config:javax.servlet.ServletConfig的实例,该实例代表该JSP的配置信息。常用的方法有getInitParameter(String parameName)、getInitParameternames()等。事实上,JSP页面通常无需配置,也就不存在配置信息,该对象更多的在servlet中有效。
exception:java.lang.Throwable的实例,该实例代表其他页面中的异常和错误。只有当页面是错误处理页面,即编译命令page的isErrorPage属性为true时,该对象才可以使用。常用的方法有getMessage()和printStackTrace()等。
out:javax.servlet.jsp.JspWriter的实例,该实例代表JSP页面的输出流,用于输出内容,形成HTML页面。
page:代表该页面本身,通常没有太大用处,也就是servlet中的this,其类型就是生成的Servlet类,能用page的地方就能用this。
pageContext:javax.servlet.jsp.pageContext的实例,该对象代表该JSP页面上下文,使用该对象可以访问页面中的共享数据,常用的方法有getServletContext()和getServletConfig()等。
request:javax.servlet.http.HttpServletRequest的实例,该对象封装了一次请求,客户端的请求参数都被封装在该对象里,这是一个常用的对象,获取客户端请求参数必须使用该对象。常用的方法有getParameter(String parameName)、getParameterValues(String parameName)、getAttribute(String attName)、setAttribute(String attName, Object attValue)和setCharacterEncoding(String env)等。
response:javax.servlet.http.HttpServletResponse的实例,代表服务器对客户端的响应。通常很少使用该对象直接响应,而是使用out对象,除非需要生产非字符响应。而response通常用于重定向,常用的方法有getOutputStream()、sendRedirect(String location)等。
session:javax.servlet.http.HttpServletSession的实例,该对象代表一次会话。当客户端浏览器与站点建立连接时,会话开始;当客户端关闭浏览器时,会话结束。常用的方法有:getAttribute(String attName)、setAttribute(String attName, Object attValue)等。