JSP是基于Java语言的动态网页技术。当浏览器向Web应用服务器请求一个JSP页面时,Web应用服务器将其转换为一个Servlet文件(即一个.java文件),然后将这个Java文件编译成一个字节码文件(即一个.class文件),最后Web应用服务器加载转换后的Servlet实例,处理客户端的请求,并返回HTML格式的页面给客户端浏览器。
JSP中包含了page、include、taglib 3个指令标示。
page指令提供了language、contentType、pageEncoding、import、autoFlush、buffer、errorPage、extends、info、isELIgnored、isErrorPage、isThreadSafe和session共13个属性。通常情况下,pageEncoding属性和contentType属性会同事存在。pageEndoding属性的作用是指定JSP页面的编码格式,如果将他的值设置为ISO-8859-1,那么该页面中不能编写中文信息,否则会出现乱码。而contentType属性的作用是指定服务器处理请求完成后,回应给浏览器的内容类型,比如其值设置为text/html; charset=UTF-8,就说明回应的页面时HTML文档或文本内容,其字符集为UTF-8。
下面给出page指令的属性使用示例:
<%@ page language="java"%>
<%@ page contentType="text/html; charset=UTF-8"%>
<%@ page pageEncoding="UTF-8"%>
<%@ page import="java.util.Date"%>
<%@ page buffer="16kb"%>默认是8kb
<%@ page autoFlush="false"%>默认是true
<%@ page isErrorPage="true"%>默认是false,当JSP页面指定了该属性的时候,通过<%exception.getMessage()%>即可输出errorPage页面传递过来的异常信息。
<%@ page errorPage="error.jsp"%>定义某个出错的页面。
include指令是静态包含,也就是说被包含文件中所有内容会被原样包含到该JSP页面中。即使被包含的文件中有JSP代码,在包含时也不会被编译执行而是将两个页面组合成一个页面后,再进行编译处理,最后返回结果页面,使用该标签的地方一般是在页面顶部和页面底部。下面给出include指令的属性使用示例:
<%@ include file="includeFile.jsp"%>
taglib指令标识用于声明一个标签的引用,在JSP页面之中声明了哪个标签库的引用,就可以在JSP页面中调用哪个标签。taglib指令的语法格式如下:
<%@ taglib prefix="c" uri="htp://java.sun.com/jsp/jstl/core" %>
JSP脚本:包括JSP中应用的代码片段<% %>,JSP表达式<%=%>,声明标识的使用<%! %>。注:由于使用声明标识声明的变量是全局的,所以在多个用户并发访问的时候会产生线程安全的问题,此种方式应用很少。
HTML注释用<!-- HTML代码 -->,JSP注释用<%-- JSP标签代码 --%> ,<%%>java代码片段的注释用// 、 /***/
常用的JSP动作标识<jsp:include>
<jsp:include>动作标识用于包含其他页面,被包含的页面可以是动态页面,也可以是静态页面。包含的原理是将被包含的页面先编译处理后,再将其结果包含在页面中。该动作标识的语法格式如下:
<jsp:include page="url" flush="true"></jsp:include> 其中flush属性默认是false
<%@ include file="url"%>和<jsp:include>的区别:
<%@ include file="url"%>指令通过file属性指定被包含的文件,并且file属性不支持任何的表达式;<jsp:include>动作标识通过page属性指定被包含的文件,而且page属性支持JSP表达式。<%@ include file="url"%>指令只能先包含再编译,会有父子页面变量名字冲突的可能性。<jsp:include>动作标识则是先编译后包含,就算父子页面存在同名的变量也不会受到影响。
动作标识<jsp:forward>,用于将当前请求转发到其他的web资源(HTML、JSP页面、Servlet等)。在执行转发之后,当前页面将不会再被执行,而是去执行该标识指定的目标页面。语法格式如下:
<jsp:forward page="url"></jsp:forward>
动作标识<jsp:param>,用于作为其他标识的子标识,用于为其他标识传递参数。语法格式如下:
<jsp:param name="" value="" />其功能与文件名后面直接加“?参数名=参数值”相同。