/* * Copyright 2008 biaoping.yin * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.frameworkset.common.tag; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; import javax.servlet.jsp.JspException; import javax.servlet.jsp.JspWriter; import javax.servlet.jsp.PageContext; import javax.servlet.jsp.tagext.BodyTagSupport; import javax.servlet.jsp.tagext.TryCatchFinally; /** * 一个从javax.servlet.jsp.tagext.BodyTagSupport继承、实现TagOutput接口的抽象类。 * 子类必须实现抽象方法writer(OutputStream),客户程序调用write方法将tag的内容输出到 * outputstream. * 子类必须实现抽象方法generateContent(),提供各自产生输出内容的机制 * @author biaoping.yin */ public abstract class BaseBodyTag extends BodyTagSupport implements TryCatchFinally { protected transient HttpServletRequest request = null; protected transient JspWriter out = null; protected transient HttpSession session = null; protected transient HttpServletResponse response = null; public BaseBodyTag() { } public void setPageContext(PageContext pageContext) { super.setPageContext(pageContext); if(pageContext != null) { // HttpServletRequest temp = (HttpServletRequest) pageContext.getRequest(); // request = new CommonRequest((RunData)temp.getAttribute(JspService.RUNDATA),temp); request = (HttpServletRequest) pageContext.getRequest(); out = pageContext.getOut(); session = request.getSession(false); response= (HttpServletResponse)pageContext.getResponse(); } } public HttpServletRequest getHttpServletRequest() { if(request != null) { return request; } else { return (HttpServletRequest) pageContext.getRequest(); } } public HttpServletResponse getHttpServletResponse() { if(this.response != null) { return this.response; } else { return (HttpServletResponse) pageContext.getResponse(); } } public JspWriter getJspWriter() { if(this.out != null) { return this.out; } else { return (JspWriter) pageContext.getOut(); } } public HttpSession getSession() { if(this.session != null) return session; return getHttpServletRequest().getSession(false); } public void release() { request = null; out = null; session = null; response= null; super.release(); } public int doStartTag() throws JspException { // try // { // //pageContext.getOut().print(this.generateContent()); // } // catch(IOException e) // { // e.printStackTrace(); // throw new JspException(e.getMessage()); // } return EVAL_BODY_BUFFERED; } public int doEndTag() throws JspException { this.request = null; this.response = null; this.session = null; this.out = null; return super.doEndTag(); } // /** // * @return java.lang.String // */ // public String generateContent(){return null;} public void doCatch(Throwable arg0) throws Throwable { throw arg0; } public void doFinally() { // TODO Auto-generated method stub } /** * @param output */ //public void write(OutputStream output){} }