Java论坛网»Java技术»找不到好答案!!getServletContext()不是一个静态方法,为什么jsp中可以直接调用呢?
找不到好答案!!getServletContext()不是一个静态方法,为什么jsp中可以直接调用呢?
问?:
在jsp页面中可以如下调用:
String content=(String)getServletContext().getAttribute(...);
getServletContext()不是一个静态方法,为什么能直接调用呢?
此外,jsp页面中0如果写成this.getServletContext().getAttribute(...);也是对的,这里的this是什么对象啊?
String content=(String)getServletContext().getAttribute(...);
getServletContext()不是一个静态方法,为什么能直接调用呢?
此外,jsp页面中0如果写成this.getServletContext().getAttribute(...);也是对的,这里的this是什么对象啊?
答!: 1:
一个Jsp页面会被编译成一个Servlet类,运行时响应某个用户请求的那个对象,就是该类的一个实例。
答!: 2:
this是jsp页面对象,当然实际上执行的时候,jsp会被编译成servlet来执行,所以实际上this是一个servlet。由于你的jsp页面对象已经存在了,所以getServletContext()可以被调用。
答!: 3:
session request怎么能直接用呢?一样的道理
答!: 4:
这些都是JSP容器协助自动完成的,如果感兴趣的话,当然可以找一些资料来深入研究一下JSP技术。没兴趣的话知道有那么回事,知道还有别的模块会对它进行处理就行了。
其实JSP页面离一个JAVA“类”的格式差得远远的呢,想想也知道,肯定是有别的模块做了别有手脚。。
其实JSP页面离一个JAVA“类”的格式差得远远的呢,想想也知道,肯定是有别的模块做了别有手脚。。
答!: 5:
jsp会被解析为servlet的class,找到解析后java源文件看看就明白怎么回事了。
答!: 6:
我也有过上面的考虑,jsp编译成servlet,this指servlet对象,而getContextServlet做为该对象的方法,通过this.getServletContext调用是可以的。但问题是:getContextServlet()不是静态方法,调用时为什么可以不加“对象名.”呢?
____________________________________________________________________________________
至于
jihanzhong(逍遥) ( ) 信誉:100 Blog 2006-08-30 14:33:00 得分: 0
session request怎么能直接用呢?一样的道理
那是因为session request是内建对象,当然可以直接调用,但getContextServlet是方法,没有内建方法一说,可以直接调用的方法只有静态方法,不是吗?
____________________________________________________________________________________
所以这个问题还是没问清,希望有人继续解答,谢谢。
____________________________________________________________________________________
至于
jihanzhong(逍遥) ( ) 信誉:100 Blog 2006-08-30 14:33:00 得分: 0
session request怎么能直接用呢?一样的道理
那是因为session request是内建对象,当然可以直接调用,但getContextServlet是方法,没有内建方法一说,可以直接调用的方法只有静态方法,不是吗?
____________________________________________________________________________________
所以这个问题还是没问清,希望有人继续解答,谢谢。
答!: 7:
我已经告诉你了,你看看解析成的java源码就明白了,jsp不是类,它不符合java类的所有特性。
如果你能写一个解析程序的话,完全可以不用jsp写程序,写成任何你想要得程序,只要最好解析成java源码的时候符合java类的规则就可以了。
如果你能写一个解析程序的话,完全可以不用jsp写程序,写成任何你想要得程序,只要最好解析成java源码的时候符合java类的规则就可以了。
答!: 8:
to flyforlove:
我用tomcat,解析文件是不是在tomcat的work文件夹啊?
我看过解析后的.java文件了,不用this的调用解析如下:
String content=(String)getServletContext().getAttribute(new String("chatTopic_1"));
用this的调用解析如下:
String content=(String)this.etServletContext().getAttribute(new String("chatTopic_1"));
请问,这样说明什么问题吗?解析过的仍然用this调用,这符合java规则吗?
又或者我找到的解析文件错了?继续糊涂...
请来过路过的继续关注下,谢谢!
我用tomcat,解析文件是不是在tomcat的work文件夹啊?
我看过解析后的.java文件了,不用this的调用解析如下:
String content=(String)getServletContext().getAttribute(new String("chatTopic_1"));
用this的调用解析如下:
String content=(String)this.etServletContext().getAttribute(new String("chatTopic_1"));
请问,这样说明什么问题吗?解析过的仍然用this调用,这符合java规则吗?
又或者我找到的解析文件错了?继续糊涂...
请来过路过的继续关注下,谢谢!
答!: 9:
你找到的事对的亚,getServletContext()本来就是祖先类里的方法,这儿用不用this都一样呀,
即使你省略不用,编译成class的时候,也会帮你加上的
你所谓的不符合规则是指的问什么有this么?
即使你省略不用,编译成class的时候,也会帮你加上的
你所谓的不符合规则是指的问什么有this么?
答!: 10:
是,父类方法在子类调用时,可以直接调用吗?
答!: 11:
____________________________________________________________________________________
至于
jihanzhong(逍遥) ( ) 信誉:100 Blog 2006-08-30 14:33:00 得分: 0
session request怎么能直接用呢?一样的道理
那是因为session request是内建对象,当然可以直接调用,但getContextServlet是方法,没有内建方法一说,可以直接调用的方法只有静态方法,不是吗?
____________________________________________________________________________________
所以这个问题还是没问清,希望有人继续解答,谢谢。
好吧, 那我说getContextServlet是“内建”方法,你是不是明白了呢?
至于
jihanzhong(逍遥) ( ) 信誉:100 Blog 2006-08-30 14:33:00 得分: 0
session request怎么能直接用呢?一样的道理
那是因为session request是内建对象,当然可以直接调用,但getContextServlet是方法,没有内建方法一说,可以直接调用的方法只有静态方法,不是吗?
____________________________________________________________________________________
所以这个问题还是没问清,希望有人继续解答,谢谢。
好吧, 那我说getContextServlet是“内建”方法,你是不是明白了呢?
答!: 12:
看来这不是jsp的问题,是你自己对java的继承知识还没有一个基本的认识。
父类的public方法(当然不只这一种)就可以当成自己的方法用,要不要继承做什么。
父类的public方法(当然不只这一种)就可以当成自己的方法用,要不要继承做什么。
答!: 13:
为什么你觉得用this调用就有问题呢?
答!: 14:
上面笔误了,我认为没有this调用有问题。
抛开jsp来说,一个方法要调用不是都要由一个"对象名."来引出吗?(静态方法除外)
那么这样直接调用getServletContext方法不就有问题了吗?
抛开jsp来说,一个方法要调用不是都要由一个"对象名."来引出吗?(静态方法除外)
那么这样直接调用getServletContext方法不就有问题了吗?
答!: 15:
问题就在于JSP页面中的语句最终相当于被整理到一个类的某个方法中,而在类的方法中调用类本身的另一个方法当然不一定要写“this”。
答!: 16:
public class A{
public A(){
}
public void greeting(){
System.out.println("hello");
}
}
public class B extends A{
public B(){
greeting();
}
public static void main(String[] args){
new B();
}
}
c:>java B
hello
"一个方法要调用不是都要由一个"对象名."来引出吗?(静态方法除外)" ---引用楼主的话
照这种说法 在 B的构造子里面 调用greeting() 是不合法的 咯????? 因为greeting()不是static的
试试看就知道了麻
public A(){
}
public void greeting(){
System.out.println("hello");
}
}
public class B extends A{
public B(){
greeting();
}
public static void main(String[] args){
new B();
}
}
c:>java B
hello
"一个方法要调用不是都要由一个"对象名."来引出吗?(静态方法除外)" ---引用楼主的话
照这种说法 在 B的构造子里面 调用greeting() 是不合法的 咯????? 因为greeting()不是static的
试试看就知道了麻
答!: 17:
????????????????
答!: 18:
“父类的public方法(当然不只这一种)就可以当成自己的方法用,要不要继承做什么。
”
注意这句话。
另外,didoleo(冷月无声) 也把例子给你举出来了。
”
注意这句话。
另外,didoleo(冷月无声) 也把例子给你举出来了。
答!: 19:
一个方法要调用不是都要由一个"对象名."来引出吗?
它不是没用,而是用了,但是是隐含的用,这个对象名就是this
在类中调用这个类的方法,是隐含一个this的,也就是所有的调用实际上都是:this.方法名
我记得在JAVA编程思想一书中有说隐含this的
它不是没用,而是用了,但是是隐含的用,这个对象名就是this
在类中调用这个类的方法,是隐含一个this的,也就是所有的调用实际上都是:this.方法名
我记得在JAVA编程思想一书中有说隐含this的
答!: 20:
getServletContext()是来自父类com.caucho.jsp.JavaPage中的方法
因为每个jsp页面都继承com.caucho.jsp.JavaPage,因此继承了com.caucho.jsp.JavaPage的getServletContext()方法,
揭帖吧
因为每个jsp页面都继承com.caucho.jsp.JavaPage,因此继承了com.caucho.jsp.JavaPage的getServletContext()方法,
揭帖吧
答!: 21:
好多星星(),哈哈,最近搞Delphi,过来看看,怀念啊.
答!: 22:
我想扁人了
答!: 23:
晕,你写的jsp不过是java的一个方法,而且是实例方法,当然可以调用其它方法了
答!: 24:
楼主不要钻牛角尖嘛~~
答!: 25:
是啊是啊。比如:
public class A {
public void f1() { ... }
public void f2() {
f1(); //瞧见了不?不用对象名有时也可以调用方法。:D
}
}
public class A {
public void f1() { ... }
public void f2() {
f1(); //瞧见了不?不用对象名有时也可以调用方法。:D
}
}
答!: 26:
没必要深究这些吧,清楚了又如何,不清楚又如何呢
答!: 27:
didoleo的代码验证了。
steedhorse(晨星) :"问题就在于JSP页面中的语句最终相当于被整理到一个类的某个方法中,而在类的方法中调用类本身的另一个方法当然不一定要写“this”。"也很有道理
还有flyforlove辛苦了。
谢谢所有人,我想这次问题就是“子类调用父类方法+jsp编译”引起的,明白了!
steedhorse(晨星) :"问题就在于JSP页面中的语句最终相当于被整理到一个类的某个方法中,而在类的方法中调用类本身的另一个方法当然不一定要写“this”。"也很有道理
还有flyforlove辛苦了。
谢谢所有人,我想这次问题就是“子类调用父类方法+jsp编译”引起的,明白了!
相关JAVA教程:
CVS是什么
请问高手jsp+tomcat5.0环境下,tomcat服务启动时,调用项目里某个线程类
求助,怎样配置xfire,使其发布的webservice可以直接被http请求访问啊?
初学Hibernate 出了点问题,希望大家帮忙解决
请问用java开发企业级应用时用什么IDE好?
Tomcat 如何反映真实结果的问题.
关于URI的一个问题
急!!!请问JBuilder工程如何移到Eclipse中去呢!!!!在线等待啊!!!!!!!!!!!!
JFileChooser的打开文件对话框如何做成模态对话框?
这个版面到底有多少个帖子是真正问“架构、设计”的?忒也奇怪了。
急...我的win2003密码忘了.进不了,是局域网中的一台机子..
一个struts的异常