我是通过尚学堂的录像来学struts。在录像中,做了一个简单的登录练习之后,初步接触了一下struts之后,就开始讲标签。
个人觉得,从严格的意义上来说,标签应该不输与struts的。因为struts的目的是做好了MVC框架中的C(控制)。而标签某种意义上来说,应该算作是V(视图)的作用范围,这一部分应该是javascript,HTML。来负责比较稳妥。而struts最好只要做好题外话。当然这是题外话。
录像中教授的标签为两类,一类是struts架构自己提供的。另一类怎是sun公司提供的JSTL标签的库。前者比较适合用于Struts的架构,而后者呢,通用性比较好。
无论哪种,在使用时,都需要引入相应的标签库(EL表达式不用)。这也就就是从另一个方面说明了。两者其实没有任何本质区别。只是不同的地方提供的不同标准而已。而标签的存在的目的,主要是为了遵循网页设计人员习惯。
任何标签几乎都是标签开头。具体的是看你引入标签库时候的prefix属性,然后是具体的干什么,比方说“write”之类的。然后就是属性,这里一般都是主要的部分。然后就是值。具体哪个是哪个,还是在实际操作中慢慢体会来的实在。
为了特别的就是EL表达式。基本格式是${ a }。这样可以直接输出相关的值。这个类似于jsp中的<%=a%>。其找寻scope的顺序是page—>request—>session—>application。
这里涉及了一个概念,叫做导航。最简单的就是,你把一个值a,放入了request中,那么你想要服务器直接找request中去找,那么就输出${request.a}。同样的,如果a是一个javabean,要输出一个成员b,那么就是${a.b}。从原理上来说说a中有个getB方法,${a.b}这个也能行的通。
看到这里,大家估计也有点概念了。所谓的导航,从本质上来说,只是通过javabean的规范一层一层往下面挖。
最后,自定义标签库。具体操作方法就是
1、定义类和方法(方法必须是public static)
2、编写自定义tld文件,并且将此文件放到WEB-INF或WEB-INF任意子目录下
3、在jsp中采用taglib指令引入自定义函数库
4、采用 前缀+冒号+函数名 调用即可
Ltd文件写法
自定义的TLD文件
以上是尚学堂的王勇老师的总结。我觉得讲的已经很清楚了。我也难以写的更详细,这里就借鉴一下了。