`

struts自定义标签学习(三)

阅读更多

整理下早上学习的一点点东西,一个自定义标签的例子。之所以要坚持做笔记,我想最大的原因就是学完老是忘了,忘了又得重新 看视频、查资料、百度。。。而且自己整理的话,也会让记忆持久一些。
例子:查询所有学生的资料(学号,姓名,性别,出生年月,家庭地址)
新建项目xxx,因为是自定义标签,所以就不用引入Struts的包了。
第一步:在tags包下,新建Java类,需继承javax.servlet.jsp.tagext.TagSupport,并编写代码如下:

Code:
  1. packagetags;
  2. importjava.io.IOException;
  3. importjava.util.ArrayList;
  4. importjavax.servlet.jsp.JspException;
  5. importjavax.servlet.jsp.JspWriter;
  6. importjavax.servlet.jsp.tagext.TagSupport;
  7. importpo.Student;
  8. importdao.StudentDao;
  9. //自定义标签的规范该标签的功能:显示所有的学生的详细资料
  10. //1、继承:javax.servlet.jsp.tagext.TagSupport
  11. //2、重写方法doEndTag和doStartTag(系统自动调用)
  12. publicclassDisplayAllTagsextendsTagSupport{
  13. privatestaticfinallongserialVersionUID=1L;
  14. publicDisplayAllTags(){
  15. System.out.println("displayaddtags构造函数");
  16. }
  17. publicintdoStartTag()throwsJspException{
  18. System.out.println("doStartTag函数");
  19. returnSKIP_BODY;//不实现标签的体,即空体标签。
  20. }
  21. publicintdoEndTag()throwsJspException{
  22. System.out.println("doEndTag函数");
  23. //查询数据库
  24. StudentDaostudentDao=newStudentDao();
  25. ArrayListarrayList=(ArrayList)studentDao.queryStus();
  26. //通过父类TagSupport的属性值pageContext取得相关的内置对象
  27. JspWriterout=pageContext.getOut();
  28. //遍历循环打印。
  29. try{
  30. out.println("<table>");
  31. out.println("<tr>");
  32. out.println("<td>学号</td>");
  33. out.println("<td>姓名</td>");
  34. out.println("<td>性别</td>");
  35. out.println("<td>出生年月</td>");
  36. out.println("<td>家庭住址</td>");
  37. out.println("</tr>");
  38. for(inti=0;i<arrayList.size();i++){
  39. Studentstudent=(Student)arrayList.get(i);
  40. out.println("<tr>");
  41. out.println("<td>"+student.getStuId()+"</td>");
  42. out.println("<td>"+student.getStuName()+"</td>");
  43. out.println("<td>"+student.getStuSex()+"</td>");
  44. out.println("<td>"+student.getStuBir()+"</td>");
  45. out.println("<td>"+student.getStuAdd()+"</td>");
  46. out.println("</tr>");
  47. }
  48. out.println("<table>");
  49. }catch(IOExceptione){
  50. e.printStackTrace();
  51. }
  52. //=============pageContext还可以get更多的内置对象。
  53. //pageContext.getRequest();
  54. //pageContext.getResponse();
  55. //pageContext.getSession();
  56. //pageContext.getServletContext();
  57. returnEVAL_PAGE;//
  58. }
  59. }


第二步:在 webroot→web-inf下新建一个.tld文件(右键new file就OK了),并编写代码如下:

Code:
  1. <?xmlversion="1.0"encoding="UTF-8"?>
  2. <!DOCTYPEtaglibPUBLIC"-//SunMicrosystems,Inc.//DTDJSPTagLibrary1.1//EN""http://java.sun.com/j2ee/dtds/web-jsptaglibrary_1_1.dtd">
  3. <taglib><!--自定义库标签的根-->
  4. <tlibversion>1.2</tlibversion><!--版本号-->
  5. <jspversion>1.1</jspversion><!--JSP版本号-->
  6. <shortname>displaytags</shortname><!--标签名称-->
  7. <uri>displaytags</uri><!--外界导入标签时,认识的名字,很重要。-->
  8. <tag>
  9. <name>displayAll</name><!--标签名称-->
  10. <tagclass>tags.DisplayAllTags</tagclass><!--对应的类-->
  11. </tag>
  12. <!--有属性的标签-->
  13. <tag>
  14. <name>displayBySex</name>
  15. <tagclass>tags.DisplayBySexTags</tagclass>
  16. <attribute><!--对应标签的属性。-->
  17. <name>sex</name>
  18. <required>true</required><!--是必需写的属性,即没有写属性标签不能被正常使用-->
  19. </attribute>
  20. </tag>
  21. <!--1.两个属性2.属性不是必需3.属性可以用变量来赋值-->
  22. <tag>
  23. <name>displayBySA</name>
  24. <tagclass>tags.DisplayBySAtags</tagclass>
  25. <attribute>
  26. <name>sex</name>
  27. <required>false</required>
  28. </attribute>
  29. <attribute>
  30. <name>add</name>
  31. <required>true</required>
  32. <rtexprvalue>true</rtexprvalue><!--true:可以用表达式来表示-->
  33. </attribute>
  34. </tag>
  35. </taglib>


第三步:编写jsp页面,代码如下:

Code:
  1. <%@pagelanguage="java"import="java.util.*"pageEncoding="UTF-8"%>
  2. <%@tagliburi="displaytags"prefix="stu"%>
  3. <!DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.01Transitional//EN">
  4. <html>
  5. <head>
  6. <title>测试自定义标签</title>
  7. </head>
  8. <body>
  9. 打印学生的名单<br>
  10. <stu:displayAll></stu:displayAll>
  11. <br>打印学生的名单(一个属性的测试)<br>
  12. <stu:displayBySexsex="男"></stu:displayBySex>
  13. <br>打印学生的名单(两个属性的测试)<br>
  14. <stu:displayBySAadd="上海"></stu:displayBySA>
  15. </body>
  16. </html>


大概的流程就这样子。其中还用到的dao.Student类(负责与数据库交互)和po.Student(javabean);还有DisplayBySexTags.java和DispalyBySATags.java与DisplayAllTags.java差不多。
源码:http://u.115.com/file/f26bbf3eea

============================视频学习笔记=========

分享到:
评论

相关推荐

    Struts2自定义标签

    Struts2作为一款流行的Java Web框架,极大地简化了MVC(模型-视图-控制器)应用的开发。...通过对这些文件的分析和学习,你可以深入理解Struts2自定义标签的工作原理,并掌握其在实际项目中的应用。

    Struts2自定义分页标签

    4. **创建分页标签库**:Struts2支持自定义标签,你可以创建一个`.tld`文件来定义分页标签。标签库应该包含开始、结束、上一页、下一页等标签,以便在视图层中方便地使用。 5. **实现标签处理类**:对应的Java类...

    自定义标签+struts2标签控制访问链接权限.zip

    在IT领域,自定义标签是Java Web开发中的一个重要概念,特别是在使用JSP和Struts2框架时。自定义标签能够帮助我们创建可重用、可维护的代码,提高开发效率,使得视图层的逻辑更加清晰。本教程资料集主要探讨了如何...

    struts1 自定义标签嵌套 table&&user

    Struts1是一个经典的Java Web开发框架,它引入了MVC(Model-View-Controller)设计...在这个例子中,`table`和`user`标签的嵌套使用,展示了如何利用自定义标签来灵活地处理和展示数据,是Struts1进阶学习的重要一环。

    Struts2分页-自定义标签-类似百度分页

    通过对`TagDemo`的分析和学习,你可以更好地理解和应用Struts2自定义标签实现分页功能。 总之,Struts2自定义标签提供了一种灵活的方式,使得开发者能够在JSP页面中方便地实现分页效果。通过自定义标签,我们可以将...

    struts2标签使用例子

    在Struts2框架中,标签库是其一大特色,它提供了丰富的自定义标签,使得开发者能够更加便捷地创建动态页面。这些标签极大地简化了JSP页面的编写,提高了代码的可读性和可维护性。 1. **Struts2核心标签库**: - `s...

    利用Struts和自定义标签实现分页,包括类库、例题、使用说明

    本教程将详细介绍如何在Struts框架中利用自定义标签实现分页。 首先,我们需要了解分页的基本原理。分页通常是通过在数据库查询中限制返回结果的数量来实现的。例如,如果每页显示10条记录,那么第一页将请求1到10...

    Struts+Hibernate+自定义标签的网上书店

    **Struts、Hibernate和自定义标签在构建网上书店系统中的应用** ...这样的系统对于学习和理解MVC架构、Struts和Hibernate的协同工作,以及如何利用自定义标签优化Web应用的视图层,都具有很高的参考价值。

    struts2.0标签使用源码

    了解Struts2.0标签的源码有助于我们更好地优化代码,例如,自定义标签以满足特定需求,或者在处理复杂数据结构时利用OGNL的灵活性。此外,还可以学习如何配置Struts2拦截器,结合标签库实现更强大的功能,如表单验证...

    struts2自定义结果类型demo

    - 在`struts.xml`配置文件中,可以通过`&lt;result-types&gt;`标签声明自定义结果类型,指定其类全名和别名。 - 示例: ```xml ``` 3. **实现自定义结果类型**: - 创建一个新的Java类,实现`Result`接口。...

    struts2标签库详解(非常不错)

    Struts2标签库是开发...学习和熟练掌握Struts2标签库能够提高开发效率,使代码更加整洁和易于维护。通过实际项目中的应用和不断实践,你可以更好地理解这些标签的用处和背后的机制,进一步提升你的Java Web开发技能。

    struts2 标签 tags API 参考文档

    11. **自定义标签** Struts2允许开发者创建自己的标签,扩展其功能。通过实现ognl表达式解析、标签体处理等功能,可以构建出符合项目需求的定制化标签。 12. **标签API** 标签API是指实现这些标签的Java类,它们...

    Eclipse自定义标签

    - 与框架集成:许多Java Web框架如Struts、Spring MVC都支持自定义标签,便于和框架集成。 总结,Eclipse自定义标签的学习涵盖了从创建标签类、配置TLD到在JSP页面中使用的所有步骤。这个资源对于Java Web开发者,...

    Struts2自定义校验框架

    - XML配置:在`struts.xml`或相应的Action配置文件中,使用`&lt;validators&gt;`标签定义自定义校验器,通过`&lt;field-validator&gt;`指定需要应用该校验器的字段。 - 注解配置:在Action类的属性上使用自定义注解,通过注解...

    struts2-tags-API,struts2标签api

    除了预定义的标签外,Struts2还允许开发者根据需求自定义标签。通过实现Struts2的标签接口并注册到配置文件中,开发者可以创建自己的标签库,扩展框架的功能。 六、使用和调试 在实际项目中,开发者可以将`struts2-...

    自定义分页标签struts2,spring

    开发者可以通过查看这些源代码,学习如何在Struts2和Spring环境中实现自定义标签,以及如何将分页功能整合到实际的应用中。 总之,这个项目展示了如何利用Struts2的自定义标签特性,结合Spring的业务逻辑处理,实现...

    struts2标签详解与实例

    Struts2的主题标签允许开发者自定义视图的外观和风格。例如,使用`&lt;s:head&gt;`标签引入CSS和JavaScript资源,`&lt;s:fielderror&gt;`显示字段验证错误,`&lt;s:messages&gt;`展示全局消息。 四、实例解析 以下是一个简单的用户...

    struts2标签库学习

    JSP1.1引入了自定义标签库,允许开发者将复杂的Java逻辑封装到可重用的组件中,即标签。Struts2进一步发展了这一概念,其标签库不再依赖特定的表现层技术,而是支持OGNL(Object-Graph Navigation Language)表达式...

    struts2标签学习

    Struts2标签是Java开发中基于Struts2框架的一个重要组成部分,它提供了丰富的标签库,使得在JSP页面中处理业务逻辑和展示数据...同时,Struts2的标签库还支持自定义扩展,可以根据项目需求定制符合自身业务逻辑的标签。

    struts2标签学习笔记

    这行代码指示JSP解析器识别并使用以"s"为前缀的Struts2自定义标签。 ### 1. 单选框 `&lt;s:radio&gt;` 单选框在表单中用于让用户从一组预定义的选项中选择一个。下面是一个 `&lt;s:radio&gt;` 标签的基本结构和属性的解释: `...

Global site tag (gtag.js) - Google Analytics