深入分析JavaWeb Item15 -- jsp标签

作者:北京诚信汇发物流有限公司  来源:www.cxhfwL.com  发布时间:2017-09-10 09:39:16
深入分析JavaWeb Item15 -- jsp标签

  JSP标签也称之为Jsp Action(JSP动作)元素,它用于在Jsp页面中提供业务逻辑功能,避免在JSP页面中直接编写java代码,造成jsp页面难以维护。

二、JSP常用标签

  jsp的常用标签有以下三个

标签 标签 标签 2.1、标签

  标签用于把另外一个资源的输出内容插入进当前JSP页面的输出内容之中,这种在JSP页面执行时的引入方式称之为动态引入。
语法:

  page属性用于指定被引入资源的相对路径,它也可以通过执行一个表达式来获得。
  flush属性指定在插入其他资源的输出内容时,是否先将当前JSP页面的已输出的内容刷新到客户端。

范例:使用jsp:include标签引入资源

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <%--使用jsp:include标签引入其它JSP页面--%> 网页主体内容

运行结果:

这里写图片描述

  

2.2、标签与include指令的区别

  标签是动态引入, 标签涉及到的2个JSP页面会被翻译成2个servlet,这2个servlet的内容在执行时进行合并。
  
  而include指令是静态引入,涉及到的2个JSP页面会被翻译成一个servlet,其内容是在源文件级别进行合并。

  通过下面的例子来说明标签与include指令的区别

demo.jsp:

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <%! int i=1000; %> demo.jsp中i的值为:<%=i%>

分别使用include指令和标签两种包含语句,包含以上的demo.jsp

范例:使用@include包含内容

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <%! int i=10; %> JspIncludeTagDemo01.jsp中i的值为:<%=i%> <%@include file="/jspfragments/demo.jsp"%>

此时在编译jsp时就已经提示出错了,如下所示:

  

这里写图片描述

  这个错误说的是变量i已经重复定义了

  运行JspIncludeTagDemo01.jsp,结果如下:

  

这里写图片描述

  运行后发现出现了重复定义变量i的错误提示信息,因为静态包含是将全部内容包含进来之后,再进行处理,属于先包含后处理。由于被包含进来的页面demo.jsp中定义了一个变量i,而包含页面JspIncludeTagDemo01.jsp本身又定义了一个变量i,所以服务器在处理JspIncludeTagDemo01.jsp这个页面时就会发现里面有两个重复定义的变量i,因此就会报错。

而如果现在使用的是动态包含的话,观察以下程序:

范例:使用动态包含

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> JspIncludeTagDemo02.jsp <%! int i=10; %> JspIncludeTagDemo02.jsp中i的值为:<%=i%>

运行结果:

  

这里写图片描述

  发现结果已经可以正确地显示,而且不会互相影响,这是因为使用jsp:include属于动态包含,动态包含就是指先将各个页面分别处理,处理完之后再将处理后的结果包含进来。
  不管是标签,还是include指令,它们都会把两个JSP页面内容合并输出,所以这两个页面不要出现重复的HTML全局架构标签,否则输出给客户端的内容将会是一个格式混乱的HTML文档。

2.3、*.jspf扩展名文件在jsp:include、@include和c:import中的区别

  JSP规范建议使用.jspf(JSP fragments)作为静态引入文件的扩展名。今天无意中发现,把一个JSP文件命名为jspf扩展名,然后include到另一个jsp文件中的,发现只有用”@include“指令的时候,jspf文件的内容才会被解析并执行其中的jsp指令和tag,而使用”jsp:include“和JSTL的”c:import“都没有用,jspf文件被当作纯文本文件处理了。

比如现在有一个head.jspf页面和foot.jspf页面

head.jspf

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> 网页头部

foot.jspf

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> 网页尾部

首先使用”@include“指令将”head.jspf和foot.jspf” include到IncludeTagTest.jsp页面,如下所示:

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>  <%--使用include标签引入引入jspf页面--%> <%@include file="/jspfragments/head.jspf" %> 网页主体内容 <%@include file="/jspfragments/foot.jspf" %>

  运行IncludeTagTest.jsp页面,运行结果如下:

  

这里写图片描述

  jspf文件的内容会被解析并执行其中的jsp指令和tag,查看浏览器解析JspIncludeTagTest.jsp页面生成的源代码,如下所示:

  

这里写图片描述

  然后再使用“标签将"head.jspf和foot.jspf” include到JspIncludeTagTest.jsp页面中,如下所示:

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <%--使用jsp:include标签引入其它JSPf页面--%> 网页主体内容

运行JspIncludeTagTest.jsp页面,运行结果如下:

这里写图片描述

  查看浏览器解析JspIncludeTagTest.jsp页面生成的源代码,如下所示:

  

这里写图片描述

企业建站2800元起,携手武汉肥猫科技,做一个有见地的颜值派!更多优惠请戳:黄石网站制作 http://huangshi.666rj.com


上一篇:CSS selectors difference and examples
下一篇:最后一页