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:



  1.0

  1.1

  Application Tag Library

  http://jakarta.apache.org/taglibs/

 



 

 

    linkHtml

 

    com.jdon.cms.tags.LinkHtmlTag

       



   

      name

      true

      true

   


   

      page

      true

      true

   


 



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



其中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中写
   *

   */

  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中写入:

    //

    HttpServletResponse response =

        (HttpServletResponse) pageContext.getResponse();

    StringBuffer results = new StringBuffer("

    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页面中
代码

   * 这里是以
替代

   */

  public int doEndTag() throws JspException {

    JspWriter writer = pageContext.getOut();

    try {

      writer.print("");

    } 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,JSP,CMS,Web,IDEA)