- 浏览: 62650 次
- 性别:
- 来自: 北京
最新评论
-
wucaifang819787:
你好!麻烦问下不知道哪个图片行不行的:http://dl.it ...
struts2源码浅析(四) -
ChenXzh:
高手,佩服得五体投地
关于struts2报There is no Action mapped for namespace / and action name xxx_xxx
1.标记文件使用一个页面来实现标记功能,而标记处理器使用一个java标记处理器类来实现标记功能。
2.标记处理器有两种类型:传统和简单(in jsp 2.0)。
3.建立简单标记处理器时,可以扩展SimpleTagSupport,同时这个类实现了SimpleTag接口。
4.要部署一个标记处理器,必须建立一个tld,使用jstl和其他定制标记库所用的<tag>元素来描述标记。
5.如果使用一个有体的简单标记,要保证这个标记的TLD<tag>没有将<body-content>声明为empty。然后调用getJspBody().invoke()来处理体.
6.SimpleTagSupport类包括SimpleTag接口中所有的方法的实现,另外还提供了3个便利的方法,其中标个包括getJspBody(),可以使用这个方法访问标记体的内容。
7.简单标记声明周期:简单标记绝不会由容器重用,所以每次调用标记时,都会实例化标记处理器,并调用其setJspContext()方法。如果标记本身是从另一个标记中调用的,则会调用setParent()方法。如果调用标记时有属性,对于每个属性会调用一个bean式的设置方法。如果调用标记时有体,则会调用setJspBody()方法。最后,调用doTag()方法,结束时,撤销标记处理器实例。
8.只有调用标记时确实有体,才会调用setJspBody()方法。如果调用标记时没有体,不论是空标记<my:tag/>,还是开始和结束标记<my:tag><my:tag/>之间没有任何内容,都不会调用setJspBody方法。记住,如果标记有体,TLD必须反映出这一点:<body-content>的值不能是“empty”。
9.简单标记的doTag()方法可以设置标记体使用的一个属性,为此先调用getJspContext().setAttribute(),在调用getJspBody().invoke()。
10.doTag方法声明了一个JspException和一个IOException,所以可以直接写至JspWriter,而无需将其包装在一个try/catch块中。
11.通过在循环体调用体getJspBody().invoke(),可以迭代处理简单标记的体。
12.如果标记有一属性,要在tld中使用<attribute>元素声明这个属性,并在标记处理器类中提供一个类似于bean的setter方法。调用时,会在doTag之前调用这个setter方法。
13.getJspBody()方法返回一个JspFragment,它有两个方法:invoke和getJspContext,getJspContext返回一个JspContext,标记处理器可以用这个JspContext访问PageContext API。
14.如果invoke传入null,会把计算的体写至响应输出,不过,如果你想直接访问体内容,可以传入另一个Writer。
15.如果你希望当前页面停止处理,可以跑出一个SkipPageException。如果调用标记的页面包含在另一个页面中,尽管被包含的页面在抛出异常之后就停止处理,但外层页面仍会继续。
16.传统标记方法的生命周期返回值:
BodyTagSupport | TagSupport | |
doSartTag()可能返回的值 |
SKIP_BODY EVAL_BODY_INCLUDE EVAL_BODY_BUFFERED |
SKIP_BODY EVAL_BODY_INCLUDE |
实现类的默认返回值 |
EVAL_BODY_BUFFERED |
SKIP_BODY |
可以调用的次数 | 仅一次 | 仅一次 |
doAfterBody()可能返回的值 |
SKIP_BODY EVAL_BODY_AGAIN |
SKIP_BODY EVAL_BODY_AGAIN |
实现类的默认返回值 |
SKIP_BODY |
SKIP_BODY |
可以调用的次数 | 0到多次 | 0到多次 |
doEndTag()可能返回的值 |
SKIP_PAGE EVAL_PAGE |
SKIP_PAGE EVAL_PAGE |
实现类的默认返回值 |
EVAL_PAGE |
EVAL_PAGE |
可以调用的次数 | 仅一次 | 仅一次 |
diInitBody()和setBodycontent()在哪些情况下可以调用以及每个标记调用的次数 | 仅一次,而且仅当doSartTag()返回
EVAL_BODY_BUFFERED |
从不调用 |
17.简单标记和传统标记的主要区别:
简单标记 | 传统标记 | |
Tag接口 | SimpleTag(扩展JspTag) |
tag(扩展JspTag) IterationTag(扩展Tag) BodyTag(扩展IterationTag) |
支持实现类 | SimpleTagSupport(实现SimpleTag) |
TagSupport(实现IterationTag) BodyTagSupport(扩展TagSupport实现BodyTag) |
可能实现的关键生命周期方法 | doTag() |
doStartTag doEndTag doAfterBody (对于BodyTag---还有doInitBody()和setBodyContent()) |
如何写到响应输出 | getJspContext().getOut().println(不需要try/catch,因为SimpleTag方法声明了IOException) | pageContext.getOut().println(包装在一个try/catch中,因为传统标记方法没有声明IOException) |
如何从一个支持实现访问隐式变量和作用域属性 | 利用getJspContext()方法返回一个JspContext(这通常是一个PageContext) | 利用pageContext隐式变量—而不像SimpleTag那样使用一个方法。 |
如何导致体得到处理 | getJspBody().invode(null) | 从doStartTag()返回
EVAL_BODY_INCLUDE,或者如果类实现了Bodytag,则返回 EVAL_BODY_BUFFERED |
如果让当前页面停止计算 | 抛出一个SkipPageException | 从doEndTag()返回SKIP_PAGE |
发表评论
-
JAVA多线程-厕所问题
2012-11-22 11:55 1929在http://my.oschina.net/xpbug/bl ... -
第八章 最大自序列和
2012-11-01 20:29 833第八章的问题是常见的---最大自序列和 的问题 书中提 ... -
第二章 旋转字符串的思考
2012-10-26 16:09 845编程珠玑第二章旋转字符串,abcdefg向左旋转3位,变为de ... -
Mongdb的upsert出现E11000 duplicate key errors的错误分析
2012-10-25 17:36 9152昨日上线的系统,今天查日志时发现有不少E11000 dupli ... -
开源的Mongodb java client -- mango发布
2012-07-20 21:53 1852Mango ---- 一个非常简单的操作mongodb的 ... -
浅出Apache Cxf
2012-03-05 20:14 0由于业务需要,开放了系统的 Web Se ... -
struts2源码浅析(四)
2011-10-19 17:15 1510接上一篇讲了filter后,现在request到了action ... -
struts2源码浅析(三)
2011-10-19 16:50 1568接上篇http://mazhiyuan.iteye.com/b ... -
struts2源码浅析(二)
2011-10-19 16:34 2226接上一篇http://mazhiyuan.iteye.com/ ... -
struts2源码浅析(一)
2011-10-19 16:18 17261. Struts2架构图 请求首先通过Filter ... -
struts2.1权威指南-笔记
2010-12-19 22:36 10941.struts 1.x 和 struts 2.x的 ... -
Hibernate学习总结4---对象状态
2010-12-10 16:14 947session 的几个主要方法: 1,save方法和persi ... -
Hibernate学习总结3 --配置文件
2010-12-10 16:10 937如果不希望使用默认的hibernate.cfg.xml 文件作 ... -
Hibernate 学习总结一
2010-12-10 14:54 862引入: 模型不匹配(阻 ... -
HF servlet&jsp 前6章要点总结
2010-11-21 11:58 880今天有时间把前6章主要讲servlet的内容坐下总结。好了,开 ... -
jquery源码分析之属性篇
2010-11-20 20:09 1913jquery提供了一些快捷函 ... -
bean相关标准动作总结+复习
2010-11-07 23:22 7551.<jsp:useBean>动作会定义一个变量, ... -
HF servlet&jsp ---include 指令和动作元素
2010-11-07 23:02 8101.include的2种方式 include多用于网站中可重用 ... -
HF servlet&jsp 总结—无脚本的JSP
2010-11-04 18:26 7948无脚本的JSP 8.1在JSP页面使用动作元素 <js ... -
HF servlet&jsp 总结—使用JSP
2010-11-02 17:37 744初看HF系列的servlet&jsp前6章主讲的ser ...
相关推荐
servelt与jsp相关,包涵代码,文档。对初级者应该很有用的。
这是自己按照模板写的一个电商作业。。里面是servelt+jsp+servlet实现的。。里面有数据库 导入即可
Mybatis-Servelt+JSP+Mybatis 分页实战(取PageInfo的属性完成).zip
Servlet和JSp分页,的一个Jar包,可以直接在EL表达式里面直接套用,内有直接使用说明
使用超星瀏覽器瀏覽﹗
用JSP+Servelt+DAO编写的网上书店系统,包括数据库和源代码
收入了164个完整的、来自实战的Java编程实例,每个例子都有详尽的注释,全新的第二版涵盖了Java v1.3,实现了20个不同的Java API,其中包括Servelt、JSP、XML、Swing和Java2D java 网络高级编程(PDF) 介绍了网络...
最近tomcat做了负载均衡,碰到一个难题,就是上传文件的共享问题。 最后使用的解决方案是使用一个共享地址,该地址可以被多个服务器共同访问。每个服务器通过smb与共享文件进行通信。 实现上传文件到网络共享文件夹...
JSP+Servlet+Tomcat应用开发从零开始学_完整版 PDF电子书下载 带书签目录JSP+Servlet+Tomcat应用开发从零开始学_完整版 PDF电子书下载 带书签目录JSP+Servlet+Tomcat应用开发从零开始学_完整版 PDF电子书下载 带书签...
音乐商城是一个在线平台,用于销售音乐作品...移动应用开发:包括iOS开发(使用Swift或Objective-C)和Android开发(使用Java或Kotlin)等。 大数据技术:包括Hadoop、Spark、Hive等用于处理和分析大规模数据集的技术。
学生体质信息管理系统jsp servelt Dao
东北大学网络编程作业,JSP+Servlet实现简单登录功能,希望对大家有帮助
servelt jjjjiejilskjefjsafsdf
第二部分就是Jsp技术,包括:jsp简介,jsp脚本和指令的使用,jsp隐式对象,JavaBean与jsp中的标准动作,jsp表达式语言,自定义标签,jsp自定义表签库. 第三部分就是过滤器的设计模式,包括过滤器和MVC设计模式. 目录 [隐藏] ...
jsp servlet 实现的经典案例 基于MVC模式
这是一个用jsp与servelt编写的小网站,还用到数据库SQL 主要是增删改查
花店后台模板 jsp , servlet , mvc
jsp+servelt+javabean做一个bbs系统,传上大家交流一下
使用servelt创建的一个登录注册的dopost和doget内置对象
利用ajax将数据传给servelt,然后返回你的JSP页面,简单方面理解