package com.beijing;import javax.servlet.jsp.tagext.TagSupport;
import javax.servlet.JspWriter;public class ShowData extends TagSupport{
public ShowData(){}

public int doStartTag(){
JspWriter out = pageContext.getOut();
                  //这里的pageContext是怎么来的,
//如果是jsp的内置对象的话那也要是在jsp环境中,可是当前文件是一个.java文件,并不是.jsp文件啊
//还是因为继承了TagSupport,就具备了Servlet的特征,所以有这么个pageContext的??
//很诡异啊
}
}

解决方案 »

  1.   

    我搞了一年j2ee  没用过这个类TagSupport
      

  2.   

    to huguang : 如果写一个JSP文件,是.jsp后缀, 可是我写的是.java后缀 , 假如ShowData不是 extends TagSupport的话,代码就是这样的:
    package com.beijing; import javax.servlet.jsp.tagext.TagSupport; 
    import javax.servlet.jsp.JspWriter; public class ShowData{ 
    public ShowData(){}  public int doStartTag(){ 
    JspWriter out = pageContext.getOut(); 
            return TagSupport.SKIP_BODY;         

    } 如果不继承TagSupport的话,编译都通不过,所以我坚持认为 pageContext与TagSupport脱不开干系,我纳闷的是我写的是一个.java文件,哪里就冒出来的jsp的内置对象,嗯,看来我不明白.jsp文件和.java再编译和运行的时候是怎么弄的to accp2009cjm : TagSupport ,我的理解是自定义标签,就和<html></html>性质差不多,但是你可以自定义一些标签,不受html的语法中的标签约束--因为你不能再html语法中出现不存在与html语法中的标签,按说xml也能够自定义标签,但是xml的环境无法参与逻辑业务,jsp出现了可以自定义的标签,语法和html以及xml保持了一致,功能上也能够实现jsp的业务逻辑,比如jsp里面的<% if(testBean.validateUser()){} %>,现在有可能写成这样:<myTaglib:validateUser></myTaglib>,这样一番折腾后.jsp都是标签,连<% if(testBean.validateUser()){} %>这样的<% %>标签都回避了,感觉更先进一些.这是我的体会,说的不好,希望不要给你错误的解释.回到主题,希望路过的朋友能够给说说这个pageContext,让我们把这个事了了,谢谢. 
      

  3.   

    谢谢huguang的回答,根据你的提示,我写了这么个测试:package com.beijing; import javax.servlet.jsp.tagext.TagSupport; 
    public class ShowData{
    public ShowData(){}  public void test(){
    pageContext.getOut();

    }
    编译通不过,我想可以这么解释吧 : jsp的上面是servlet,TagSupport的上面也是servlet,因为实现了servlet这个接口,所以,pageContext就合法,只是我不理解的是:pageContext很显然是一个对象,不是静态类,有这么直接访问一个对象的吗?是不是也忒暴力了点啊?我可以理解最终是能够访问jsp内置对象pageContext的,但是我写的这个ShowData所在的package里面没有任何的别的.java文件或者.jsp文件,总之就是单个孤立的文件,在还没有运行甚至没有编译的时候,就能够访问pageContext,证据就是打点能出getOut()这么个方法,既然不是servlet环境,怎么能够访问这个环境中才有的对象呢??请看到这个帖子的朋友帮助把这个问题给解决了.谢谢了啊.
      

  4.   

    吃了根肠和两个鸡蛋,再来:
    import javax.servlet.jsp.tagext.TagSupport;因为导入了这个文件,ShowData所在的包并不仅仅只是ShowData这么个孤立的文件,也有TagSupport这个类,只不过是引用关系,不出现再package com.beijing中,因为TagSupport这个类的关系,ShowData extends TagSupport以后,就具备了Servlet环境,所以在编码期间就能够访问pageContext这个对象.谢谢huguang的帮助.
    结贴.OVER