为了账号安全,请及时绑定邮箱和手机立即绑定

JSP自定义标签

难度初级
时长 1小时55分
学习人数
综合评分9.70
52人评价 查看评价
9.9 内容实用
9.8 简洁易懂
9.4 逻辑清晰
  • 自定义标签 继承 TagSupport 类 实现 dosStartTag()方法
    查看全部
  • JSP自定义标签——TagSupport之控制是否执行标签结束后的内容 需要重写doEndTag方法,该方法一般默认返回EVAL_PAGE EVAL_PAGE:是告诉WEB容器接着执行自定义标签后面的代码 SKIP_PAGE:就是忽略自定义标签结束后的内容 Ps1:需要通过pageContext得到request对象(HttpServletRequest),通过request得到getHeader("referer")(属于http请求头的属性),作用:通过该属性判断客户是从哪个页面链接过来的,只有通过超链接和表单提交的方式该属性才会有效。比如:防止盗连,比如我是个下载软件的网站,在下载页面我先用referer来判断上一页面是不是自己网站,如果不是,说明有人盗连了你的下载地址。 Ps2:通过request.getServerName()获得服务器的URL,和上边getHeader("referer")进行比较判断是否是自己的网站。 判断字符串是否以某个子字符串开头。比如字符串“abcdefg”.startWith("abc") 判断结果是true,因为它是以 abc 开头的。
    查看全部
  • Ps:body-content标签有4个值:empty,JSP,scriptless,tagdependent: empty:它是一个空的标签体。 JSP:是允许标签体内出现JSP脚本,也就是java代码。 scriptless:可以接受文本,EL表达式,和JSP的动作。 tagdependent:它是指在标签体的内容可以直接被写入bodyContent,由自定义标签处理类来处理,而不被JSP容器所解析。
    查看全部
  • IterationTag继承了Tag接口,除了拥有Tag接口的常量和方法之外呢, 它还增加了doAfterBody()方法和EVAL_BODY_AGAIN常量。 从这个接口的名称上呢,可以看出它提供了对代码循环的功能, 如果doAfterBody()方法向WEB容器返回了EVAL_BODY_AGAIN, WEB容器会把这个标签体的内容再执行一次,执行完之后再次执行, 直到doAfterBody()方法返回SKIP_BODY,容器才会开始处理标签的结束 标记,和调用doEndTag这个方法。 TagSupport是IterationTag的实现类,所以在实际的开发中, 可以继承该类,而简化自定义标签的处理类的开发 而后来看BodyTag这个接口,这个接口继承了IterationTag 并且增加了两个方法,setBodyContent(BodyContent b) doInitBody() 和一个常量 EVAL_BODY_BUFFERED 而EVAL_BODY_TAG是一个已经过时的常量 EVAL_BODY_BUFFERED可以对标签体的内容进行修改, BodyTagSupport实现了BodyTag的接口,它可以简化开发, 接下来看一下SimpleTag,这个接口是为了简化自定义标签的开发 在jsp2.0规范中,所新增加的接口,这里蛀牙看doTag这个方法, 该方法会在执行自定义标签时会被调用,并且只会被调用一次, Tag接口及其子接口所提供的功能呢,在doTag这个方法中,都可以完成, 它有一个实现类SimpleTagSupport,我们平时使用最多的就是 SimpleTagSupport类
    查看全部
  • 【jsp规范提供的自定义标签的类和接口的层次结构】 在源码中,TagSupport整个类实现了IterationTag整个接口,IterationTag接口又继承了Tag接口,Tag接口又继承了JspTag这个接口 JspTag这个接口是一个空的接口,它没有任何的方法,它是自定义标签的顶级父接口。除了子接口Tag之外,它还有另外一个子接口SimpleTag SimpleTag有一个实现类是SimpleTagSupport JspTag是所有自定义标签的父接口,没有任何的属性和方法,它有两个直接的子接口,分别是Tag和SimpleTag Tag接口是jsp2.0规范之前就存在的,而SimpleTag是为了简化自定义标签的开发,在 jsp2.0以后才出现的,Tag接口中定义了两个重要的方法doStartTag()和doEndTag() 还定义了四个静态常量, EVAL_BODY_INCLUDE SKIP_BODY EVAL_PAGE SKIP_PAGE 在jsp页面运行过程中,当碰到了自定义标签的开始标记,就会调用标签处理类的 doStartTag方法,我们在第一个例子中就是这个方法实现了处理逻辑的,doStartTag方法执行完毕后,会向WEB容器返回常量, EVAL_BODY_INCLUDE SKIP_BODY 以此来决定是否执行标签体, EVAL_BODY_INCLUDE是执行自定义标签的标签体 SkIP_BODY是跳过标签体,也就是它不执行标签体之间的内容 当我们执行自定义标签的结束标签时,doEndTag方法就会被调用它会返回 EVAL_PAGE SKIP_PAGE这两个常量 EVAL_PAGE是告诉WEB容器接着执行自定义标签后面的代码 SKIP_PAGE就是忽略自定义标签结束后的内容
    查看全部
  • JSP自定义标签——开发第一个自定义标签 Ps:第一步:创建一个类LoginDateTag继承TagSupport类,并重写doStartTag方法,在这个方法里写上在jsp中的java代码,并用pageContext.getOut().print(dateStr);输出结果。pageContext.getOut()会得到一个输出流。 Ps:第二步:在WEB-INF下创建一个后缀名为tld的文件。这是一个标签库文件,我们所定义的标签都要在这里进行注册。这个tld文件可以在C:\apache-tomcat-7.0.68\webapps\examples\WEB-INF\jsp2中找到一个示例的文件,这个文件内容比较多,我们拷贝出对我们有用的部分。 Ps:第三步:在jsp中如何使用该标签呢?打开logininfo.jsp,在开头引入:<%@ taglib prefix="imooc" uri="/imooc-tag" %>。 结论:这样,jsp页面清爽很多,并没有多余的java代码。那它的执行过程,可以这样理解:jsp页面在被jsp引擎解析时,当碰到页面中自定义的标签时,会通过页面中的uri,就是<%@ taglib prefix="imooc" uri="/imooc-tag" %>中的uri的地址,去查找标签库文件,根据标签库文件再去查找自定义标签的处理类,也就是这个地方:<tag-class>com.imooc.tag.LoginDateTag</tag-class>,当jsp引擎处理到开始标记时,系统就会自动的调用类LoginDateTag中的doStartTag()方法。我们可以在这个方法上写入相应的业务处理逻辑。这里的标签实例是线程安全的,也就是每执行一次标签,都会生成一个新的对象。
    查看全部
  • JSP自定义标签——概述 Ps:将方法封装到自定义标签处理类中,然后使用方法与JSTL标签一致。在实际开发中,前台页面是不允许html代码和java代码相混合的,但有时jsp或第三方为我们提供的标签满足不了需求,这时需要通过自己将业务逻辑封装到继承jsp规范的类或接口的处理类中来定义标签,这就是所谓的自定义标签。这样的缺点是加重了工作量。但与前端人员沟通和后期的维护上来看,这点工作是微不足道的。
    查看全部
  • 【课程概述】将方法封装到自定义标签处理类中,然后使用方法与JSTL标签一致。
    查看全部
  • aa啊啊
    查看全部
  • 继承结构图
    查看全部
  • org.apache.jasper.JasperException: /logininfo.jsp (line: 11, column: 6) Unable to load tag handler class "com.n.tag.LoginDateTag" for tag "n:loginDate" 你们都没遇到过这个吗?
    查看全部
  • 实现simpletagsupport类时,在dotag方法里获取到标签体内容后对该内容进行更改
    查看全部
  • JSP自定义标签——SimpleTag接口详解 一、什么是标签处理器?就是标签处理类——java文件。 二、SimpleTag接口提供方法:在源码中可以看到SimpleTag接口有5个方法, 1、doTag()方法是核心方法,我们可以将所有的标签处理逻辑都写在这个方法中,这个方法会抛出一个JspException,然后我们可以通过这个异常通知WEB容器,不再执行此标签后面的内容。 2、setParent(JspTag),这个方法呢,由WEB容器所调用的,是将父标签处理器对象传递给标签处理器。 3、getParent()是获取当前标签的父标签对象,比如在标签嵌套时,可以用此方法得到当前标签的父标签。 4、setJSPContext(JspContext)这个方法也是由容器调用的,这个方法是将JSP页面中的pageContext对象传递给标签处理器对象。 5、setJspBody(JspFragment)这个方法也由web容器调用,意思是将代表当前标签体的JspFragment对象传递给标签处理器对象,这里的参数可以理解为标签体的内容。 注意:JSP引擎在处理简单标签的标签时,会将标签体中的内容封装到JspFragment这个参数中,并调用setJspBody(JspFragment)将该对象传递给标签处理器,我们就可以根据需求来控制是否输出标签体或者循环标签体。 三、来看下JspFragment的源码:它是一个抽象类,有一个invoke(Writer)这个方法。这个方法用于执行JspFragment对象所代表的代码段,也就是说,我们要在标签体中输出一段话,我们可以用invoke(Writer)这个方法中的参数是一个输出流,使用这个方法就可以将我们想要输出的数据输出到JSP页面中,getJspContext()这个方法用于返回代表JSP页面的JspContext对象。getJspBody()返回代表标签体的JspFragment对象。也就是标签体的内容。
    查看全部
  • tagSupport类中有pageContext属性,可以用来获取request等内置对象
    查看全部
  • IterationTag继承了Tag接口,除了拥有Tag接口的常量和方法之外呢, 它还增加了doAfterBody()方法和EVAL_BODY_AGAIN常量。 从这个接口的名称上呢,可以看出它提供了对代码循环的功能, 如果doAfterBody()方法向WEB容器返回了EVAL_BODY_AGAIN, WEB容器会把这个标签体的内容再执行一次,执行完之后再次执行, 直到doAfterBody()方法返回SKIP_BODY,容器才会开始处理标签的结束 标记,和调用doEndTag这个方法。 TagSupport是IterationTag的实现类,所以在实际的开发中, 可以继承该类,而简化自定义标签的处理类的开发 而后来看BodyTag这个接口,这个接口继承了IterationTag 并且增加了两个方法,setBodyContent(BodyContent b) doInitBody() 和一个常量 EVAL_BODY_BUFFERED 而EVAL_BODY_TAG是一个已经过时的常量 EVAL_BODY_BUFFERED可以对标签体的内容进行修改, BodyTagSupport实现了BodyTag的接口,它可以简化开发, 接下来看一下SimpleTag,这个接口是为了简化自定义标签的开发 在jsp2.0规范中,所新增加的接口,这里蛀牙看doTag这个方法, 该方法会在执行自定义标签时会被调用,并且只会被调用一次, Tag接口及其子接口所提供的功能呢,在doTag这个方法中,都可以完成, 它有一个实现类SimpleTagSupport,我们平时使用最多的就是 SimpleTagSupport类,
    查看全部

举报

0/150
提交
取消
课程须知
学习本门课程前需要对Java Web的基础知识有所了解,并会使用JSP的标准标签库。
老师告诉你能学到什么?
1、什么是自定义标签 2、如何实现自定义标签及应用

微信扫码,参与3人拼团

意见反馈 帮助中心 APP下载
官方微信
友情提示:

您好,此课程属于迁移课程,您已购买该课程,无需重复购买,感谢您对慕课网的支持!