-
-
tqz啊
2017-10-07
- 在SimpleTagSupport里面,通过抛出异常来决定是否执行后面的标签
-
截图
0赞 · 0采集
-
-
qq_O_O_95
2017-04-26
- 自定义标签 tld配置文件
-
截图
0赞 · 0采集
-
-
qq_O_O_95
2017-04-26
- 自定义标签 (有参数)
-
截图
0赞 · 0采集
-
-
梦编猿
2016-08-11
- JSP自定义标签——SimpleSupport案例3 III
案例三的核心代码:
throw new SkipPageException();
SimpleTagSupport根据这个异常来决定是否往下继续执行余下的代码。
Ps:小技巧:右键.java类文件——Copy Qualified Name:/Test1/src/t1/t1_01.java;右键.java文件旗下的C图标——Copy Qualified Name:t1.t1_01。
【温馨提示:JavaSE/EE、SSH/SSM、Hybrid APP、JQ/JS/CSS3/H5等编程爱好者关注我,加我慕课好友,互相学习,共同进步!】
-
截图
1赞 · 0采集
-
-
梦编猿
2016-08-11
- JSP自定义标签——SimpleSupport案例3 II
【温馨提示:JavaSE/EE、SSH/SSM、Hybrid APP、JQ/JS/CSS3/H5等编程爱好者关注我,加我慕课好友,互相学习,共同进步!】
-
截图
1赞 · 0采集
-
-
梦编猿
2016-08-11
- JSP自定义标签——SimpleSupport案例3 I
【温馨提示:JavaSE/EE、SSH/SSM、Hybrid APP、JQ/JS/CSS3/H5等编程爱好者关注我,加我慕课好友,互相学习,共同进步!】
-
截图
1赞 · 0采集
-
-
梦编猿
2016-08-11
- JSP自定义标签——SimpleSupport案例2 III
案例二的核心代码:
getJspBody().invoke(null);
JspFragment调用invoke方法,让其显示标签体。默认的传入null就是显示标签体的内容。
【温馨提示:JavaSE/EE、SSH/SSM、Hybrid APP、JQ/JS/CSS3/H5等编程爱好者关注我,加我慕课好友,互相学习,共同进步!】
-
截图
1赞 · 0采集
-
-
梦编猿
2016-08-11
- JSP自定义标签——SimpleSupport案例2 II
【温馨提示:JavaSE/EE、SSH/SSM、Hybrid APP、JQ/JS/CSS3/H5等编程爱好者关注我,加我慕课好友,互相学习,共同进步!】
-
截图
1赞 · 0采集
-
-
梦编猿
2016-08-11
- JSP自定义标签——SimpleSupport案例2 I
【温馨提示:JavaSE/EE、SSH/SSM、Hybrid APP、JQ/JS/CSS3/H5等编程爱好者关注我,加我慕课好友,互相学习,共同进步!】
-
截图
1赞 · 0采集
-
-
梦编猿
2016-08-11
- JSP自定义标签——SimpleSupport案例1 III
案例一的核心代码:
JspWriter jspWriter=getJspContext().getOut();
jspWriter.write(dateStr);
【温馨提示:JavaSE/EE、SSH/SSM、Hybrid APP、JQ/JS/CSS3/H5等编程爱好者关注我,加我慕课好友,互相学习,共同进步!】
-
截图
1赞 · 0采集
-
-
梦编猿
2016-08-11
- JSP自定义标签——SimpleSupport案例1 II
【温馨提示:JavaSE/EE、SSH/SSM、Hybrid APP、JQ/JS/CSS3/H5等编程爱好者关注我,加我慕课好友,互相学习,共同进步!】
-
截图
1赞 · 0采集
-
-
梦编猿
2016-08-11
- JSP自定义标签——SimpleSupport案例1 I
【温馨提示:JavaSE/EE、SSH/SSM、Hybrid APP、JQ/JS/CSS3/H5等编程爱好者关注我,加我慕课好友,互相学习,共同进步!】
-
截图
1赞 · 0采集
-
-
java家洼
2016-07-08
- 案例一的核心代码:
JspWriter jspWriter=getJspContext().getOut();
jspWriter.write(dateStr);
案例二的核心代码:
getJspBody().invoke(null);
JspFragment调用invoke方法,让其显示标签体。默认的传入null就是显示标签体的内容
案例三的核心代码:
throw new SkipPageException();
SimpleTagSupport根据这个异常来决定是否往下继续执行余下的代码
-
截图
0赞 · 0采集
-
-
java家洼
2016-07-07
- 注册标签:
<tag>
<name>skipPageOrEvalPage</name>
<tag-class>com.imooc.tag2.SkipPageOrEvalPage</tag-class>
<body-content>empty</body-content>
</tag>
新建JSP页面
<body>
<imooc:skipPageOrEvalPage/>
<h3>中国最大的免费在线培训平台--www.imooc.com</h3>
</body>
启动tomcat。在地址栏输入:http://localhost:8080/jspCustomTag/tag2/demo3.jsp
页面上并没有输出,然后再新建一个JSP。access.jsp
通过超链接对它进行访问。
<body>
<a href="http://localhost:8080/jspCustomTag/tag2/demo3.jsp">站内访问</a>
</body>
然后在浏览器地址栏中输入:http://localhost:8080/jspCustomTag/tag2/access.jsp
点击页面的超链接,就会出现我们所要的效果。
-
截图
0赞 · 0采集
-
-
java家洼
2016-07-07
- 第三个例子是控制是否执行标签体之后的内容。
public class SkipPageOrEvalPage extends SimpleTagSupport {
@Override
public void doTag() throws JspException, IOException {
/**
* 这个例子是所要实现的效果是:
* 根据用户请求,是通过超链接还是通过地址栏输入地址,访问进来的,
* 如果是通过超链接访问进来的就让其显示执行标签体之后的内容,
* 如果是通过地址栏输入地址访问进来的,就不让它显示,
*
* 这段代码首先得到了HttpServletRequest对象,然后得到请求头中
* 的referer,如果该值为空,则证明是直接通过浏览器输入地址访问的
* 否则就是超链接访问的。然后注册一下这个标签。
*/
PageContext pageContext=(PageContext)getJspContext();
HttpServletRequest request=(HttpServletRequest)pageContext.getRequest();
String referer=request.getHeader("referer");
if(referer == null){
//SimpleTagSupport根据这个异常来决定是否往下继续执行余下的代码
throw new SkipPageException();
}
}
}
-
截图
1赞 · 0采集
-
-
java家洼
2016-07-07
- 接下来注册标签:
<tag>
<name>displayOrSkipBody</name>
<tag-class>com.imooc.tag2.DisplayOrSkipBody</tag-class>
<body-content>scriptless</body-content>
</tag>
接下来新建jsp页面来使用新注册的标签
<body>
<imooc:displayOrSkipBody>
<h3>中国最大的免费在线培训平台--www.imooc.com</h3>
</imooc:displayOrSkipBody>
</body>
启动tomcat,访问tag2下的demo2.jsp
http://localhost:8080/jspCustomTag/tag2/demo2.jsp如果什么都不传。就不会显示
任何的内容,
在url后传一个值:
http://localhost:8080/jspCustomTag/tag2/demo2.jsp?name=imooc
这样就达到了我们希望的效果
-
截图
0赞 · 0采集
-
-
java家洼
2016-07-07
- 接下来看第二个例子。
控制是否演示标签体的内容
public void doTag() throws JspException, IOException {
/**
* 首先通过getJspContext()方法得到pageContext对象,容器会调用
* setJspContext(JspContext)方法将JspContext对象放入进去,
* 然后通过pageContext得到ServletRequest对象,之后通过
* getParameter方法获取参数值,最后判断name是否等于imooc,
* 如果条件成立,则显示标签体中的内容
* 这个getJspBody()方法会得到标签体中的内容,也就是
* Jspfragment对象,这个Jspfragment对象代表的就是标签体内容
* 它是容器调用setJspBody(JspFragment)传入进去的,然后调用
* invoke方法,让其显示标签体。默认的传入null就是显示标签体
* 的内容,接下来去注册一下。
*/
PageContext pageContext= (PageContext) getJspContext();
String name=pageContext.getRequest().getParameter("name");
if(name !=null && name.equals("imooc")){
getJspBody().invoke(null);
}
}
-
截图
0赞 · 0采集
-
-
java家洼
2016-07-07
- 接下来在标签库文件中注册一下标签
<?xml version="1.0" encoding="UTF-8"?>
<taglib xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd"
version="2.0">
<description>A tag library exercising SimpleTag handlers.</description>
<tlib-version>1.0</tlib-version>
<short-name>imooc</short-name>
<uri>/imooc-tag2</uri>
<tag>
<name>dateinfo</name>
<tag-class>com.imooc.tag2.DisplayInfo</tag-class>
<body-content>empty</body-content>
</tag>
</taglib>
接下来新建一个jsp页面,这里新建一个文件夹,tag2
new一个jsp命名为demo1.jsp
第一步将它的标签库引入进来,<%@ taglib prefix="imooc" uri="/imooc-tag2" %>
<body>
<imooc:dateinfo/>
</body>
启动tomcat,查看tag2下的demo1.jsp
http://localhost:8080/jspCustomTag/tag2/demo1.jsp
这样时间就正确的显示出来了
-
截图
0赞 · 0采集
-
-
java家洼
2016-07-07
- 接下来我们来写第一个小例子:
我们来new一个标签处理类,DisplayInfo extends SimpleTagSupport
这个类所要实现的业务,和我们一开始的业务是一样的,在页面上显示一段格式化的时间,这里可以直接复制过来,
复写doTag()方法,将这个业务写在doTag()方法中,
然后这里并没有提供pageContext,那么我们可以通过SimpleTag的getJspContext()方法得到一个输出流,
JspWriter jspWriter=getJspContext().getOut();它会返回一个JspWriter
接下来使用jspWriter.write(dateStr);
这样我们的业务逻辑就写完了。
-
截图
0赞 · 0采集
-
-
java家洼
2016-07-07
- 这节课使用SimpleTagSupport写一些案例。
一,JSP2.0和1.0的标签库文件的区别也就是约束头的不同,以及相应属性的支持略有不同
首先新建一个包,来存放这节课的代码。com.imooc.tag2
接下来新建一个标签库的文件,imooctag2.tld
创建jsp2.0的标签库文件,要使用jsp2.0的xml的约束头,
2.0和1.0的标签库文件的区别也就是约束头的不同,以及相应属性的支持略有不同
1.0的约束头可以在tomcat的
C:\apache-tomcat-7.0.68\webapps\examples\WEB-INF\jsp中找到,example-taglib.tld
也就是这个
<!DOCTYPE taglib
PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.2//EN"
"http://java.sun.com/j2ee/dtd/web-jsptaglibrary_1_2.dtd">
在这里我们直接使用2.0的约束头
C:\apache-tomcat-7.0.68\webapps\examples\WEB-INF\jsp2 jsp2-example-taglib.tld
也就是这个:
<taglib xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd"
version="2.0">
其实我们不必关心两者的差别,我们直接使用2.0的就可以了
-
截图
1赞 · 0采集