如何在JSP标记中获取HttpServletRequest / Response?

时间:2014-03-08 11:39:56

标签: java jsp

我正在以下列方式创建自定义jsp标记:

import javax.servlet.jsp.JspException;
import javax.servlet.jsp.JspWriter;
import javax.servlet.jsp.tagext.SimpleTagSupport;
import java.io.IOException;

public class FooTag extends SimpleTagSupport
{

    public void doTag() throws JspException, IOException
     {
        JspWriter out = getJspContext().getOut();
        out.println( "some response"  );
    }

}

我的问题是,我有办法访问HttpServletRequest方法中的HttpServletResponsedoTag()吗?如果它不能从java中获得,我可以以某种方式从jsp传递它作为参数吗?请指教。

1 个答案:

答案 0 :(得分:1)

由于您正在扩展SimpleTagSupport,因此可以调用继承的方法getJspContext(),该方法将返回JspContext对象(这将使您可以访问页面,请求和会话对象),将其投放到PageContext

PageContext context = (PageContext) getJspContext();

然后只需从ServletRequest对象中检索context

ServletRequest request = (HttpServletRequest) context.getRequest();