jsp元素包括:
一,jsp页面
1,注释
可见注释 html注释,浏览器可见,不安全
<!-- comment -->普通注释 Java注释,浏览器不可见,安全,但违背Java与html代码分离原则<% //comment> 或 <% > 隐藏注释 JSP注释,浏览器不可见,安全,建议使用<%-- comment --%>
2,指令
<%@ ... %>
page 不是不必备的,作用于本jsp页面,不包含<jsp:include>进来的页面,只有import属性可以重复<%@ pageextends="class name" //自定义父类必须实现javax.servlet.HttpJspPage接口improt="java package list" //多个包,逗号隔开session="true | false" //是否内建session对象buffer="none | 8KB | custom size" //out对象缓冲区大小false" //是否自动冲刷,false且满时将抛出异常inThreadSafe="true | false" //告诉服务器你的线程是否安全,false时不支持并发info="page info" //可通过getServletInfo()取得errorPage="error page url" //页面异常时转向的页面isErrorPage="true | false" //true时可使用内建对象Exception,false时不可以,默认falsecontentType="text/html;charset=ISO-8849-1" //“输出到客户端”时的MIME类型和字符集,默认为<--pageEncoding="char encoding type" //JSP页面的字符集编码isELIgnored="true | false" //是否支持EL表达式%>include 包含静态文件(jsp,html,txt,java...),<%@ include file="URL" %>不能包含URL变量,如:<%@ include file="<%= Expression %>" %>不能再包含的文件后接任何参数。如:<%@ include file="index.jsp?name=user" %>所包含文件中避免使用<html> <body>等标签,防止与原网页冲突建议所包含文件后缀名以"f"(fragment)结尾,如jspf,避免jsp编译器对其编译include指令与jsp:include动作区别见:http://blog.sina.com.cn/s/blog_73cdc7a601018x7l.html
taglib 声明自定义标签库<%@ taglib uri="URI To Tag Library" prefix="pubtag" %>
3,脚本元素
声明<%! declaration; [declaration;]+ ... %>声明类、方法、变量,全局共享,线程不安全
表达式<%= java expression %>表达式不已分号结尾,等价于 <% out.print(expression); %>,可作为其它jsp元素属性值
脚本小程序<% java code %>Scriptlet内的Java语句不一定是完整的,声明的变量为局部变量
4,模板数据
动作
标准动作
jsp:include 实现请求阶段包含静态或动态资源,只能访问JspWriter,不能设置响应头或Cookie,效率比include指令低,
<jsp:include page="URL | <%= Expression %>" flush="true"> //默认flush为false,必须使用true
[<jsp:param name="param name" value="param value | <%= Expression %> " />]?+
</jsp:include>
jsp:forword 将请求转发到另一个资源,该资源必须和发送者位于请求相同的上下文环境中,遇到此操作时立即转发<jsp:forword page="URL | <%= Expression %>">[<jsp:param name="param name" value="param value | <%= Expression %> " /> ]?+</jsp:forword>
jsp:useBean<jsp:useBeanid="beanId"class="package.class" //实例化类scope="request" //作用域范围,默认为Pagetype="superclass or interface" //接口或超类的类型/>
jsp:setProperty<jsp:setPropertyname="bean name" //该属性所属bean的nameproperty="property name" //属性名value="str" //属性值,也可用EL表达式/jsp:setProperty>可采用通配符"*"来设置与HTTP表单属性同名的JavaBean属性值,如:<jsp:setProperty name="user" property="*" />,来代替:<jsp:setProperty name="user" property="name" value="<%= Request.getParameter("name") %>" /><jsp:setProperty name="user" property="password" value="<%= Request.getParameter(" password")/> 若不同名,可使用Request参数设置,如:<jsp:setProperty name="user" property="name" param="username" />
jsp:getProperty<jsp:getPropertyname="bean name" //该属性所属bean的nameproperty="property name" //属性名/jsp:getProperty>
jsp:param 新参数的作用域是</jsp:include>和</jsp:forword><jsp:param name="param name" value="param value | <%= Expression %> " />
jsp:plugin<jsp:plugin type="Applet | Bean" codebase="URL" >[<jsp:param name="param name" value="param value | <%= Expression %> " /> ]?+[<jsp:callback> arbitary_text </jsp:fallback> ]?+</jsp:plugin>
注意:
1,使用include指令时,包含文件和被包含文件必须采用一致的编码方式
2,使用<jsp:forward>和<jsp:include>指令可共享Request作用域范围内的bean。