指令(Directive)
<%@在eclipse中输入Alt+/会提示有三种指令,page,include,taglib
page
一般放在页面的起始位置。但是无论被放在什么地方,都是作用于整个页面,常用的page属性有。
<%@ page 多个项目间用空格隔开
[ import="java.util.*,high.Test" ] 多个包用,分开
[ session="true | false" ]
[ isThreadSafe="true | false" ]
[ errorPage="relative_url" ] JSP内部使用的是forward的形式,即虽然显示error页面的内容,但是网址还是当前网页的网址。
另外,为了保证error页面是隐私的,通常将error放在WEB-INF中,这样这能通过forward访问,用户不能直接访问。
[ isErrorPage="true | false" ] 只有当isErrorPage="true"时,才可以使用exception对象。
[ contentType="text/html;charset=UTF-8"]
[ pageEncoding="characterSet | ISO-8859-1" ]
[ isELIgnored="true | false" ] 指定是否执行EL表达式,通常为false,即通常不忽略EL表达式。
通常pageEncoding和ContentType的编码是一致的。
pageEncoding是jsp文件本身的编码
contentType的charset是指服务器发送给客户端时的内容编码
JSP要经过两次的“编码”,第一阶是jsp编译成.java,它会根据pageEncoding的设定读取jsp;第二阶段是由JAVAC的JAVA源码至java byteCode的编译,固定为UTF-8;第三阶段就是由Tomcat出来的网页, 用的是contentType。
包含文件
<%@ include file="relative url" %> 如果以/开头,则必须是相对于web-app的路径,否则是相对于当前文件的路径。
由包含后生成JSPServlet的时候只有一个文件,通常也被称为静态包含。
自定义标签
<%@ taglib uri="uri" prefix="prefixOfTag" %>
动作(Action)
动作使用起来类似XML语法,比较简洁,比指令功能强大,推荐使用动作来完成include,forward等。
与JSP指令元素不同的是,JSP动作元素在请求处理阶段起作用。JSP动作元素是用XML语法写成的。
利用JSP动作可以动态地插入文件、重用JavaBean组件、把用户重定向到另外的页面、为Java插件生成HTML代码。
已include动作为例讲解什么是动态插入,如下在a.jsp中有如下语句,则生成的servlet会分别有a.jsp和b.jsp
区别于静态导入,如果是<%@include file=""%>的静态导入则只会生成a.jsp的servlet。
<jsp:include page="b.jsp">
<jsp:forward page="/test.jsp"> 相当于 request.getRequestDispatcher("/test.jsp").forward(request, response);
jsp:include,forward都可以包含jsp param参数。
<jsp:forward page="test.jsp">
<jsp:param value="abc" name="abc-value"/>
</jsp:forward>
通过request.getParameter("username")来获取参数。
其他动作:
jsp:useBean
寻找或者实例化一个JavaBean。
jsp:setProperty
设置JavaBean的属性。
jsp:getProperty
输出某个JavaBean的属性。
jsp:plugin
根据浏览器类型为Java插件生成OBJECT或EMBED标记。
jsp:element
定义动态XML元素
jsp:attribute
设置动态定义的XML元素属性。
jsp:body
设置动态定义的XML元素内容。
jsp:text 在JSP页面和文档中使用写入文本的模板
<完>