-
-
梦编猿
2016-08-11
- JSP自定义标签——BodyTag接口和BodyTagSupport类 III
【温馨提示:JavaSE/EE、SSH/SSM、Hybrid APP、JQ/JS/CSS3/H5等编程爱好者关注我,加我慕课好友,互相学习,共同进步!】
-
截图
1赞 · 0采集
-
-
梦编猿
2016-08-11
- JSP自定义标签——BodyTag接口和BodyTagSupport类 II
附加:JSP引擎是什么?是什么工作原理?
1、JSP引擎:
执行JSP代码需要在服务器上安装JSP引擎,比较常见的引擎有WebLogic和Tomcat。把这些支持JSP的web服务器配置好后。就可以再客户端通过浏览器来访问JSP页面了。
2、JSP引擎的工作原理:
当一个JSP页面第一次被访问的时候,JSP引擎将执行以下步骤:
(1)将JSP页面翻译成一个Servlet,这个Servlet是一个java文件,同时也是一个完整的java程序
(2)JSP引擎调用java编译器对这个Servlet进行编译,得到可执行文件class
(3)JSP引擎调用java虚拟机来解释执行class文件,生成向客户端发送的应答,然后发送给客户端
以上三个步骤仅仅在JSP页面第一次被访问时才会执行,以后的访问速度会因为class文件已经生成而大大提高。
Ps:当JSP引擎街道一个客户端的访问请求时,首先判断请求的JSP页面是否比对应的Servlet新,如果新,对应的JSP需要重新编译。
【温馨提示:JavaSE/EE、SSH/SSM、Hybrid APP、JQ/JS/CSS3/H5等编程爱好者关注我,加我慕课好友,互相学习,共同进步!】
-
截图
2赞 · 0采集
-
-
梦编猿
2016-08-11
- JSP自定义标签——BodyTag接口和BodyTagSupport类 I
Ps:简介BodyTag接口:BodyTag接口可以将标签体中的内容修改后再输出,BodyTag接口除了继承自IterationTag接口的内容之外呢,它还增加了两个方法和两个常量,分别是:setBodyContent(BodyContent b) doInitBody(),一个常量EVAL_BODY_BUFFERED,而EVAL_BODY_TAG是一个已经过时的常量,这里不再讨论它。前面使用的doStartTag方法,除了返回EVAL_BODY_INCLUDE和SKIP_BODY之外呢,它还会返回EVAL_BODY_BUFFERED。当返回EVAL_BODY_BUFFERED时,JSP引擎会创建一个bodyContent对象,然后依次调用。setBodyContent(BodyContent b) doInitBody() 接着执行标签体中的内容,并且将标签体中的内容通过setBodyContent(BodyContent b)方法中的BodyContent参数,传递过来,也就是BodyContent封装了标签体中的内容,这样就可以控制标签体内容的输出了,那doInitBody()会在setBodyContent(BodyContent b)之后被调用。我们再来看一下BodyContent,BodyContent继承了JspWriter,根据名字,知道它是个输出流,不同的是,它提供了一个缓冲区来存放数据,它也为我们提供了一些比较方便的方法供我们使用,比如这节课例子中所要使用到的getString()还有getEnclosingWriter();getString()用于返回BodyContent中的一个string,也就是它会返回缓冲区中缓存的数据,而这个getEnclosingWriter()这个方法可以得到一个BodyContent所关联的JspWriter对象。
Ps:最后return EVAL_PAGE;//EVAL_PAGE是告诉WEB容器接着执行自定义标签后面的代码。
【温馨提示:JavaSE/EE、SSH/SSM、Hybrid APP、JQ/JS/CSS3/H5等编程爱好者关注我,加我慕课好友,互相学习,共同进步!】
-
截图
1赞 · 0采集
-
-
java家洼
2016-07-07
- jsp引擎是什么?是什么工作原理?
1、JSP引擎:
执行JSP代码需要在服务器上安装JSP引擎,比较常见的引擎有WebLogic和Tomcat。把这些支持JSP的web服务器配置好后。就可以再客户端通过浏览器来访问JSP页面了.
2、JSP引擎的工作原理
当一个JSP页面第一次被访问的时候,JSP引擎将执行以下步骤:
(1)将JSP页面翻译成一个Servlet,这个Servlet是一个java文件,同时也是一个完整的java程序
(2)JSP引擎调用java编译器对这个Servlet进行编译,得到可执行文件class
(3)JSP引擎调用java虚拟机来解释执行class文件,生成向客户端发送的应答,然后发送给客户端
以上三个步骤仅仅在JSP页面第一次被访问时才会执行,以后的访问速度会因为class文件已经生成而大大提高。
当JSP引擎街道一个客户端的访问请求时,首先判断请求的JSP页面是否比对应的Servlet新,如果新,对应的JSP需要重新编译。
-
截图
0赞 · 0采集
-
-
java家洼
2016-07-07
- 接下来在标签库中注册一个标签,
<tag>
<name>bodyTag</name>
<tag-class>com.imooc.tag.BodyTagSupportDemo</tag-class>
<body-content>scriptless</body-content>
</tag>
然后创建一个页面,使用这个注册好的标签,demo6.jsp
<body>
<imooc:bodyTag>
hello World!
</imooc:bodyTag>
</body>
启动tomcat,访问demo6.jsp
可以看到页面上输出的是修改过的值,而在控制台上得到的是之前的值,
这样就达到了修改标签体中内容的需求
-
截图
0赞 · 0采集
-
-
java家洼
2016-07-07
- 下面我们来写个例子:首先我们创建一个标签处理类,BodyTagSupportDemo继承BodyTagSupport
然后复写doEndTag()方法
在这里由于要得到标签体中的内容, 所以这里需要声明一个BodyContent类型的变量
然后呢,再来复写一下setBodyContent(BodyContent b)这个方法,这个方法是由容器进行调用的
然后this.bodyContent=b;
然后我们将处理逻辑写在doEndTag()方法中,
String content=bodyContent.getString();//得到标签体中的内容
这里我们将其打印一下,
接下来创建一个字符串String newString="www.imooc.com";
然后使用bodyContent来得到一个输出流,它返回一个JspWriter
然后将这个修改后的字符串写回到页面中,jspWriter.write(newString);
最后return EVAL_PAGE;//EVAL_PAGE是告诉WEB容器接着执行自定义标签后面的代码,
-
截图
0赞 · 0采集
-
-
java家洼
2016-07-07
- 这节课学习BodyTag接口和BodyTagSupport类的使用
简介BodyTag接口:
BodyTag接口可以将标签体中的内容修改后再输出,
BodyTag接口除了继承自IterationTag接口的内容之外呢,它还增加了两个方法和两个常量
分别是:setBodyContent(BodyContent b) doInitBody()
一个常量 EVAL_BODY_BUFFERED
而EVAL_BODY_TAG是一个已经过时的常量,这里不再讨论它
前面使用的doStartTag方法,除了返回EVAL_BODY_INCLUDE和SKIP_BODY之外呢,
它还会返回EVAL_BODY_BUFFERED
当返回EVAL_BODY_BUFFERED时,JSP引擎会创建一个bodyContent对象,然后依次调用
setBodyContent(BodyContent b) doInitBody() 接着执行标签体中的内容,并且
将标签体中的内容通过setBodyContent(BodyContent b)方法中的BodyContent参数,传递过来,
也就是BodyContent封装了标签体中的内容,这样就可以控制标签体内容的输出了,
那doInitBody()会在setBodyContent(BodyContent b)之后被调用
我们再来看一下BodyContent
BodyContent继承了JspWriter,根据名字,知道它是个输出流,不同的是,它提供了一个
缓冲区来存放数据,它也为我们提供了一些比较方便的方法供我们使用
比如这节课例子中所要使用到的getString()还有getEnclosingWriter()
getString()用于返回BodyContent中的一个string,也就是它会返回缓冲区中缓存的数据
而这个getEnclosingWriter()这个方法可以得到一个BodyContent所关联的JspWriter对象
-
截图
0赞 · 1采集