我在JSP中想定义一个函数,高手说要写在<%! %>声明中,可是问题多多。
在这个<%! %>中我用out.print用不了,连接数据库用不了,操作ResultSet类型的数据集也不行。请问<%! %>中到底什么可以使用什么不能使用?郁闷着呢,谢谢大家

解决方案 »

  1.   

    我现在最想做一个函数处理ResultSet的对象,请高手指点一下。
      

  2.   

    <%! %>是让你定义成员jsp运行时转成的servlet中的成员变量与成员函数的,所定义的函数当然只能用定自己声明的局部变量、同在<%! %>的其他成员,其他都不能用,你要输出的话可以定义函数的返回值为String,在<% %>用out.print(函数名());实现输出
      

  3.   

    想做一个函数处理ResultSet的对象:<%!
    private Strint xxxx(ResultSet rs){
    StringBuilder rt=new StringBuilder();
    //对rs处理,结果用rt.append(字符串);放到rt中
    return rt.toString();
    }
    %>
      

  4.   

    谢谢welshem(天堂客),我的ResultSet对象rs也是定义在<%! %>中的声明的,现在我想使用函数循环获取ResultSet对象的值。可是这个函数中一写rs.next()就出错。提示是:An error occurred at line: 20 in the jsp file: /result.jsp
    Generated servlet error:
    C:\Tomcat 5.0\work\Catalina\localhost\_\org\apache\jsp\result_jsp.java:24: unreported exception java.sql.SQLException; must be caught or declared to be thrown
    while(rs.next())
                                 ^
      

  5.   

    也就是要传参进去才行,<%!%>中声明的不是全局变量,是这样吗?
      

  6.   

    晕。。你这种写法有N个BUG。最好不要全局的方法。。和变量。少用。全局在你定义的整个JSP页面中每一次都会去加载一次。。还会引起变量初始化的问题
    一般的初级用法都是写在javabean中。。用jsp来调
    例:你上面的有关操作数据库的代码不是那样写的。。
    一般操作数据库
    最好用写在一个javaben中,你可以在一个类方法中返回一个vector向量里面。在JSP页面调用中返回一个vector对象就可以。
    public vector 方法名(参数)
    {
    try
    {
    ...没有发生异常的业务
    throw new Exception()//你可以定义你自己的抛出异常类。不一定要是Exception这个对象,
    return vector..
    }
    catch(Exception e)
    {
    捕获这个异常
    System.out.println(e.getMessage())//异常信息。最好不要用Excetion。用你自己定义的Excetion子类
    }
    return vector..
    }
      

  7.   

    谢谢楼上的,只是我刚刚接触JSP,想像ASP一样简单的使用,javaben是很有用,可是实训马上就要结束了。来不及学这么多了。郁闷,感谢
      

  8.   

    1、调用时总是要传rs的实例的,所有rs最好是参数传入2、你想没报错最省心的方法:
    private Strint xxxx(ResultSet rs) throws Exception{
        StringBuilder rt=new StringBuilder();
        //对rs处理,结果用rt.append(字符串);放到rt中
        return rt.toString();
    }