使用JSP运行多个函数

时间:2011-12-27 04:43:19

标签: java jsp jsp-tags

我是网络编程的新手。我正在尝试使用jsp与odbc连接数据库。我已经为此编写了一个java代码。现在我需要在Tomcat服务器上运行。所以我选择JSP来完成这项工作。但是这显示了我在这里不允许的void类型和错误。如何使用jsp运行此代码。我的错误是什么?请帮我解决一下。 现在这是我的代码

 <%@page import="java.sql.*"%>
 <%@page import="java.util.*" %>
 <%@page import="java.util.logging.Level"%>
 <%@page import="java.util.logging.Logger"%>

 <%! 
 int i=0,j=0,k=0;
 Connection conn=null;
 Connection connection=null;
 static int count=0;

    String Cname[]=null;
    String Title[]=null;
    Statement stmt1=null;
    ResultSet NumOfRows=null;
    Statement stmt2=null;
    ResultSet SpreadsheetValues=null;
    Statement stmt3=null;
    ResultSet rs3=null;
    int RowCount;
         //this static function required to connect excel database
  static
  {
    try {
        Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
    } catch (ClassNotFoundException e) {
      e.printStackTrace();
    System.out.println("Exception in connecting to DB"+e.getMessage());
    }
  }

   // connect Sql database
    void ConnectSqlDB() {
  try{
  Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
  Connection con = DriverManager.getConnection("jdbc:odbc:ServerDB","sa","sqladmin");
  System.out.println("MSSQL connected " +"<br>");
  }catch(Exception e){
  e.printStackTrace();
  System.out.println("Exception in connecting to DB"+e.getMessage());
  }
  }
  void ConnectExcelDB() throws SQLException{
     conn=DriverManager.getConnection("jdbc:odbc:spreadsheetdb","","");
 }
  void getRowcount() throws SQLException{
     stmt1=conn.createStatement();

     String Qs1="select count(*) from [Sheet1$]";
     NumOfRows=stmt1.executeQuery(Qs1);
     while(NumOfRows.next()){
     Rowcount=NumOfRows.getInt(1);
     }
     NumOfRows.close();
    }
     void getExcelValues() throws SQLException{
        stmt2=conn.createStatement();
        String Qs2="select * from [Sheet1$]";
        SpreadsheetValues=stmt2.executeQuery(Qs2);

        Cname=new String[Rowcount];
        Title=new String[Rowcount];
        while(SpreadsheetValues.next()){

    // Assigning Spread sheet values to String array

               Cname[j]=SpreadsheetValues.getString("Cname");
               Title[j]=SpreadsheetValues.getString("Title");
               j++;
         }
     }
          SpreadsheetValues.close();
          stmt2.close();
          conn.close();
          SpreadsheetValues=null;
          stmt2=null;
          conn=null;
 }
   %>
      <%=ConnectSqlDB()%>
      <%=ConnectExcelDB()%>
      <%=getRowcount()%>
      <%=getExcelValues()%>

2 个答案:

答案 0 :(得分:1)

在JSP Expression中使用方法时,您的方法应该返回一个值。我看到你的所有方法的返回类型都为void,即什么都不返回。更改方法以返回适当的值。

注意

我知道您目前正在学习JSP等,但请记住,在JSP等视图技术中编写控件/应用程序逻辑是一种不好的做法。请尝试阅读MVC pattern

答案 1 :(得分:0)

不要使用<%= %>(Expression)来调用void方法,你必须避免在JSP中使用Java代码(阅读SO thread)。

<%
  ConnectSqlDB();
  ConnectExcelDB();
  getRowcount();
  getExcelValues();
%>

<p>Total Records : <%=RowCount%>
<p>Array element at 0 index <%=name[0]%>

<%
 for(String v:name)
 {
   out.println("<br/>" + v);
 }
%>