-
JSP自定义标签——开发第一个自定义标签 I Ps:第一步:创建一个类LoginDateTag继承TagSupport类,并重写doStartTag方法,在这个方法里写上在jsp中的java代码,并用pageContext.getOut().print(dateStr);输出结果。pageContext.getOut()会得到一个输出流。 【温馨提示:JavaSE/EE、SSH/SSM、Hybrid APP、JQ/JS/CSS3/H5等编程爱好者关注我,加我慕课好友,互相学习,共同进步!】查看全部
-
JSP自定义标签——概述 Ps:将方法封装到自定义标签处理类中,然后使用方法与JSTL标签一致。在实际开发中,前台页面是不允许html代码和java代码相混合的,但有时jsp或第三方为我们提供的标签满足不了需求,这时需要通过自己将业务逻辑封装到继承jsp规范的类或接口的处理类中来定义标签,这就是所谓的自定义标签。这样的缺点是加重了工作量。但与前端人员沟通和后期的维护上来看,这点工作是微不足道的。 【温馨提示:JavaSE/EE、SSH/SSM、Hybrid APP、JQ/JS/CSS3/H5等编程爱好者关注我,加我慕课好友,互相学习,共同进步!】查看全部
-
starUML查看全部
-
otherwise查看全部
-
if查看全部
-
jspfragment内容查看全部
-
案例一的核心代码: JspWriter jspWriter=getJspContext().getOut(); jspWriter.write(dateStr); 案例二的核心代码: getJspBody().invoke(null); JspFragment调用invoke方法,让其显示标签体。默认的传入null就是显示标签体的内容 案例三的核心代码: throw new SkipPageException(); SimpleTagSupport根据这个异常来决定是否往下继续执行余下的代码查看全部
-
注册标签: <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 点击页面的超链接,就会出现我们所要的效果。查看全部
-
第三个例子是控制是否执行标签体之后的内容。 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(); } } }查看全部
-
接下来注册标签: <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 这样就达到了我们希望的效果查看全部
-
接下来看第二个例子。 控制是否演示标签体的内容 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); } }查看全部
-
接下来在标签库文件中注册一下标签 <?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 这样时间就正确的显示出来了查看全部
-
接下来我们来写第一个小例子: 我们来new一个标签处理类,DisplayInfo extends SimpleTagSupport 这个类所要实现的业务,和我们一开始的业务是一样的,在页面上显示一段格式化的时间,这里可以直接复制过来, 复写doTag()方法,将这个业务写在doTag()方法中, 然后这里并没有提供pageContext,那么我们可以通过SimpleTag的getJspContext()方法得到一个输出流, JspWriter jspWriter=getJspContext().getOut();它会返回一个JspWriter 接下来使用jspWriter.write(dateStr); 这样我们的业务逻辑就写完了。查看全部
举报
0/150
提交
取消