今天学习了jsp标签, 张老师对每部分知识都研究的很深刻,jsp标签不同于其他使用java类的技术,不了解他的原理,很难理解它是怎么实现的。 主要学习了<jsp:include>标签和<jsp:forward>标签。
jsp标签 也称为Action元素,在jsp页面以xml标签的形式出现,用于完成各种通用的jsp页面功能和实现一些处理复杂业务逻辑的专用功能。jsp规范定义了一些标准的Action元素,都以jsp作为前缀,<jsp:include> <jsp:forward>。
<jsp:include>标签用于把另外一个资源的输出内容插入进当前jsp页面的输出内容之中。<jsp:include page="relativeUrl | <%=espression%>" flush="true|false">
page属性用于指定引入资源的相对路径,也可以通过执行一个表达式来获得。flush属性指定在插入其他资源的输出内容时,是否将当前jsp页面的已输出内容刷新到客户端,其默认值是false,表示先不刷新一输出的内容。
<jsp:include>标签是在当前JSP页面执行期间插入被引入资源的输处内容,当前页面和被动态引入的资源是两个彼此独立的执行实体,动态引入的资源必须是一个独立被web容器调用和执行的资源,这和include指令是不同的。
<jsp:include>标签,被引入的页面不能改变当前页的响应状态码,也不能设置响应头,即使设置了也是无效的。
<jsp:include>标签可以把一个页面的内容分成多个组件来生成,便于维护。
<jsp:include>标签对JSP引擎翻译jsp页面的过程没有影响,它是在JSP页面执行期间才被调用的,不会影响两个页面的翻译。
page属性的设置值必须使用相对路径。
查看使用<jsp:include>标签的JSP所翻译成的Servlet源文件,可以看到<jsp:include>标签被翻译成了一个方法调用
<jsp:forward>标签,用于把请求转发给另外一个资源,格式如下
<jsp:forward page="relativeURL <%=espression%>" />
page属性用于指定请求转发到资源的相对路径,也可以通过表达式来获得。在jsp翻译成的Servlet源文件中,<jsp:forward>标签被翻译成了调用pageContext.forward方法的语句,并在ageContext.forward方法后使用return 语句结束了service方法的执行流程,不再执行<jsp:forward>标签后面的语句
<jsp:param>标签,用于在<jsp:include>和<jsp:forward>标签中设置参数,向这两个标签请求转发的能够动态执行的程序。嵌套在这两个标签中的<jsp:parm>标签的语法格式如下:
<jsp:param name="parameterName" value="parameterValue | <%=expression%>" />
name属性用于指定参数名,value属性指定参数值,在<jsp:include>和<jsp:forward>标签中可以使用多个<jsp:param>用于传递多个参数。
<jsp:plugin>标签 用来根据浏览器的类型,在当前JSP页面产生的网页文档中插入的Java Applet语句。JSP引擎会根据浏览器的版本和类型将<jsp:plugin>标签转换成HTML文档引用java applet的<OBJECT>或<EMBED>元素。实际应用中,这个标签用的不多。
<jsp:text>标签,用于封装JSP页面的模板,不能嵌套子标签,如果输出到客户端的内容包含html标签或xml语法规定的特殊字符,应将这些内容封装在CDATA区中。