`
zxj_ajax
  • 浏览: 7373 次
最近访客 更多访客>>
社区版块
存档分类
最新评论

struts构架

阅读更多
http://www.jdon.com/idea/strutsapp/04003.htm

定制标签库:
page.jsp的顶部引入了app.tld:

<%@ taglib uri="/WEB-INF/app.tld"    prefix="app" %>

这需要在WEB-INF目录下建立app.tld:

<taglib>

  <tlibversion>1.0</tlibversion>

  <jspversion>1.1</jspversion>

  <shortname>Application Tag Library</shortname>

  <uri>http://jakarta.apache.org/taglibs/</uri>

  <info></info>



  <!--  以下是自己定义的标签   -->

  <tag>

    <name>linkHtml</name>

  <!--  标签类是 com.jdon.cms.tags.LinkHtmlTag  -->

    <tagclass>com.jdon.cms.tags.LinkHtmlTag</tagclass>

    <info>    </info>

<!--  以下是标签类的两个输入参数name 和page -->

    <attribute>

      <name>name</name>

      <required>true</required>

      <rtexprvalue>true</rtexprvalue>

    </attribute>

    <attribute>

      <name>page</name>

      <required>true</required>

      <rtexprvalue>true</rtexprvalue>

    </attribute>

  </tag>

</taglib>
app.tld中定义了linkHtml标签,这样在page.jsp中就可以使用

<app:linkHtml page="XXX" name="XXX">。

其中page和name是两个属性参数,需要输入到类com.jdon.cms.tags.LinkHtmlTag进行处理的.实际上app.tld是在JSP页面和Javabean之间作了一个连接。
编写LinkHtmlTag的代码:

public class LinkHtmlTag extends TagSupport {

  protected String name = null;

  protected String page = null;



  public String getName() {    return (this.name);  }

  public void setName(String name) {    this.name = name;  }



  public String getPage() {    return (this.page);  }

  public void setPage(String page) {    this.page = page;  }





  /**

   * 生成标签开始 也就是在JSP中写<app:linkHtml的地方

   *

   */

  public int doStartTag() throws JspException {

    //相当于在JSP中写入<%request.getContextPath()%>

    HttpServletRequest request =

        (HttpServletRequest) pageContext.getRequest();

    StringBuffer url = new StringBuffer(request.getContextPath());

    url.append(page);



    //根据name属性值,获取pageForm对象

    PageForm pageForm = null;

    try {

      pageForm = (PageForm) pageContext.findAttribute(name);

    } catch (ClassCastException e) {

      pageForm = null;

    }

    if (page.indexOf("?") < 0)

      url.append("?");

    else

      url.append("&");

    url.append("id=");

    url.append(pageForm.getId());



    // 产生连接内容,相当于在JSP中写入:

    //<a href=”<%request.getContextPath()%>

    HttpServletResponse response =

        (HttpServletResponse) pageContext.getResponse();

    StringBuffer results = new StringBuffer("<a href=\"");

    results.append(response.encodeURL(url.toString()));

    results.append("\">");



    // 将results字符串输出到JSP页面    JspWriter writer = pageContext.getOut();

    try {

      writer.print(results.toString());

    } catch (IOException e) {

      throw new JspException("LinkHtmlTag error");

    }

    return (EVAL_BODY_INCLUDE);



  }



  /**

   * 生成替代JSP页面中</app:linkHtml>代码

   * 这里是以</a>替代

   */

  public int doEndTag() throws JspException {

    JspWriter writer = pageContext.getOut();

    try {

      writer.print("</a>");

    } catch (IOException e) {

      throw new JspException ("LinkHtmlTag error");

    }

    return (EVAL_PAGE);

  }



  public void release() {

    super.release();

    this.page = null;

  }

}

标签库表面上好像比较繁琐,没有在JSP直接写Java代码来得直接方便。但是,J2EE的整个体系本身的特点就是细化、细分,这也符合面向对象分派和封装的原则,因此在J2EE中到处可以看到一点一点的“碎片”,XML配置文件和Java代码在J2EE中往往是自然地组合在一起。当然,这样带来的缺点是增加了复杂性。
分享到:
评论

相关推荐

    struts构架及标签库

    在Struts构架中,Controller部分通常由ActionServlet来实现,它负责接收用户的请求,解析参数,并根据配置信息(如struts-config.xml)转发到相应的Action。Action执行业务逻辑后,通过ActionForward将控制传递给...

    我的笔记:Struts构架中action的跳转大全

    根据提供的文件信息,我们可以深入探讨Struts框架中的Action跳转机制。Struts是一个开源的MVC(Model-View-Controller)框架,用于构建基于Java的Web应用程序。在Struts框架中,Action是处理用户请求的核心组件之一...

    struts整体构架和核心标签库.

    Struts是一个开源的Java Web应用程序框架,由Apache软件基金会维护,用于帮助开发者...以上就是关于Struts框架的整体构架和核心标签库的介绍,通过学习和掌握这些知识点,开发者可以更高效地构建和管理Java Web应用。

    基于Struts与J2EE的系统框架研究与实践 (2006年)

    结合在线订购系统,对 Struts中白箱特性组件进行了研究,提出对Struts构架在安全检查和异常处理方面的扩展。 借鉴Rational统一过程,应用统一建模语言 UML建立了一个线订购系统的设计方案,同时对基于 Struts构架的系统...

    大数据时代的成绩管理与数据分析--毕业设计论文.docx

    在设计基于 web 的成绩管理系统时,我们采用了移动互联网技术和 Struts 构架、JSP 技术、数据库技术。数据库主要是运用 SQL Sever 这个关系型数据库管理系统。Struts 构架是一个基于 Java 语言的 MVC 框架,能够帮助...

    2020计算机毕业实习总结报告三篇.doc

    基于 Struts 构架的 web 应用程序基本上贴合 JSPModel2 的设计标准,能够说是 MVC 设计模式的一种变化类型。 五、Hibernate 对象关系映射框架 Hibernate 是一个开放源代码的对象关系映射框架,它对 JDBC 进行了...

    【实习报告】2020计算机毕业实习总结报告三篇.doc

    基于 Struts 构架的 Web 应用程序基本上贴合 JSP Model 2 的设计标准,能 够 说 是 MVC 设 计 模 式 的 一 种 变 化 类 型 。 4. Hibernate 框架: Hibernate 是一个开放源代码的对象关系映射框架,它对 JDBC 进行...

    计算机毕业生实习报告写.doc

    Struts框架:Struts是一组相互协作的类(组件)、Serlvet以及jsptaglib组成,基于Struts构架的web应用程序根本上贴合JSPModel2的设计标准,能够说是MVC设计模式的一种变化类型。 Hibernate框架:Hibernate是一个...

    电子通讯薄(MVC)

    《电子通讯薄(MVC)——深入理解Struts构架》 在信息技术领域,构建高效、易维护的应用系统是开发者的核心任务之一。MVC(Model-View-Controller)模式作为一种广泛应用的软件设计模式,为实现这一目标提供了有力的...

    计算机网络专业毕业实习报告3000字.docx

    基于struts构架的web应用程序基本上符合JSP Model2的设计标准,可以说是MVC设计模式的一种变化类型。Struts是一个web framwork,而不仅仅是一些标记库的组合。但 Struts 也包含了丰富的标记库和独立于该框架工作的...

    基于Struts_Hibernate构架的数字化教学评估档案管理系统

    基于Struts_Hibernate构架的数字化教学评估档案管理系统

    spring、Struts2、hibernate常见面试题

    * 使用 Spring 是因为 Spring 基于 IoC 和 AOP 构架,可以帮助开发者更好的实现模块化和松耦合的系统。 四、Struts 和 Spring 的继承关系 Struts 的 Action 都继承自 org.apache.struts.action.Action,而 Spring ...

    基于Struts和Hibernate的多层构架在JAVAWeb开发中的应用.pdf

    ### 基于Struts和Hibernate的多层架构在JAVA Web开发中的应用 #### 引言 随着互联网技术的发展,Web应用程序的需求日益增加,而Java作为企业级开发的主要语言之一,其相关的Web开发技术也在不断演进。在早期的Java...

    MVC原理(struts框架详解).

    MVC原理(struts框架详解), Struts 质上就是在Model2的基础上实现的一个MVC架构。它只有一个中心控制器,他采用XML定制转向的URL。采用Action来处理逻辑

    DWR,Struts,Hibernate和Spring的J2EE架构开发大全

    基于Spring+Struts+Hibernate的轻型架构实现生产数据采集系统.pdf 基于SSH构架的MIS用户管理模块的实现.pdf 基于SSH的播客资源平台的设计与实现.pdf 基于SSH的本科教学评估辅助系统的设计与实现.pdf 基于SSH的物流...

    Struts开发包

    Struts是Java Web开发中的一个开源框架,由Apache软件基金会维护。它主要专注于MVC(Model-View-Controller)设计模式,为构建基于Java EE的Web应用程序提供了强大的支持。Struts2是Struts的升级版,它在Struts1的...

    spring-hibernate-struts2.zip

    Spring提供了全面的构架支持,包括依赖注入、AOP(面向切面编程)、数据访问、任务调度等;Hibernate则是一个强大的对象关系映射(ORM)工具,简化了数据库操作;而Struts2则是一个MVC(模型-视图-控制器)框架,...

    基于Struts和JSF技术的中间件的研究与设计

    先简单的介绍jsf和struts.接着详细的分析了jsf和struts的优缺点.对如何改进,结合jsf和struts各自的优点,并对中间的可行性... 最后是对该中间件的详细构架设计和实现. 希望对学jsf和struts,or开发中间件的朋友有帮助.

Global site tag (gtag.js) - Google Analytics