怎么在jsp中调用java类中的方法呢?
使用的是tomcat6.0
在jsp中能创建类的实例,可是却不能调用类的方法,太诡异了。。
java文件是:
package text;public class PWD
{
void qq()
{
System.out.println("I am a Good Guy");
}
}在jsp里:
<%@page import="text.*"%>
<%
         PWD p = new PWD();
         p.qq();
%>出现错误:
The method qq() from the type PWD is not visible如果去掉p.qq()那句就可以运行了。。

解决方案 »

  1.   

    在void qq()前面加个public试试
      

  2.   

    qq方法应该是default或friendly的,而不是private的。
      

  3.   

    你要加一个public来修饰方法才可以用。
      

  4.   

    不加修饰符的,呵呵,不是私有的哦,是默认包访问级别的
    要想使用,加个public即可
      

  5.   

    我试过了,方法前加个public 就可以了,打印结果在控制台。
      

  6.   

    qq()方法是受保护的 
      你在方法前 没给出方法的状态 java  默认是一个都保护状态    不是public  也不是private   是protected
    你要写 public  void qq();
      

  7.   

    (1)建议楼主去买本或者下本电子书的《Think in Java》,你这个问题就是java访问权限修饰符问题。
    总共有4种访问权限符:public,protected,默认权限访问符,private.其中,当我们方法前面什么都没写是,默认是包访问权限,意思是当前包中的所有类可以访问此方法,而对于现在这个类所在包以外的类来说,它们是看不到这个方法的。(2)那么为什么楼主你的JSP中无法访问这个方法呢,原因分析如下:
    首先楼主你应该知道我们的JSP最终是被编译成Servlet类,也就是说,JSP也是Servlet类,所以JSP里面调用另一个类的方法这种情况与 平常在一个类里面调用另一个类里面的方法是同种情况。那么我们的jsp被编译成的.java文件以及其.class文件在哪里呢?
       那么请楼主看你的Tomcat安装目录,下面有个叫work的文件夹,其结构是  work/Catalina/localhost然后,在localhost下面就是我们的项目,假如楼主你的项目名字叫project,而且你在项目中有一个叫test的文件来存你的全部jsp文件,而且现在test文件夹里面有一个jsp页面叫做jtest.jsp内容如下:<%@page import="org.apache.jsp.test.*"%>
    <%
      PWD p = new PWD();
      p.qq();
    %>
    (而既然在一个包中,那么也可以不用import了,你也可以先加上)
    也就是你所说的内容。那么现在jtest.jsp被编译得到的的java文件就应在如下路径中:
    Tomcat安装目录/work/Catalina/localhost/project/org/apache/jsp/test/jtest_jsp.java
    你打开这个java文件,你就可以看到,其第一句是 package org.apache.jsp.test;所以如果你想让你的 void qq()能够在JSP中调用(其实就是能让 jtest_jsp.java调用),你就应当把你的PWD类的PWD.class文件放到此目录下面(不过注意:你应当在你的PWD类的第一句写成:
     package org.apache.jsp.test;也就是把PWD类放到包org.apache.jsp.test下面
    )这样,就算你的qq()方法是默认的包权限 ,一样可被访问。我也在电脑上试过,结果正如上面所说,能够执行。总结:楼主,你要对待jsp文件与对待java文件一样,这样你就可以不被jsp表面所蒙蔽,要知道,jsp就是java文件,在它里面调用方法就如同在一个java类文件里面调用另一个java类文件里面的方法一样。要铭记啊!加油!!!多学习,多看书,多去找最基本的东西,多去研究原理,祝 你好运!
      

  8.   

    void qq() 改为public void qq()试试!
      

  9.   

    恩,我也看了一下,就是qq()这个方法访问权限的问题,加上public就好了
      

  10.   

    对,如果不加修饰符,默认的方法是protected的方法,而从外面不能够访问到该方法,因此使用public就可以访问的到。
      

  11.   

    我汗System.out.println("I am a Good Guy");这句话就是控制台输出的意思啊~
    如果你想在jsp页面输出的话,不妨试试public class PWD{
      public String qq(){
       a="I am a Good Guy";
      }
      return a
    }
    <%
      PWD p = new PWD();
      String a=p.qq();
      out.println(a);
    %>
      

  12.   

    其实很简单,只要是在<% %>里面都是java代码,和写普通的java类没什么区别,jsp只是在servlet技术上提取出来的简化版本,通过、、、、、有点罗嗦了,访问修饰符出的问题
      

  13.   

    void qq()
    改为public void qq()
    就可以了!
      

  14.   

    晕,楼主建议你复习一下java基础,方法没有权限修饰符修饰时是什么情况。