-1

在java中它的工作......但在jsp页面中......无法在JSP中创建文件......

在纯 JAVA 中:A.java

import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.StringTokenizer;

public class A {

    public static void main(String[] args) throws IOException {
        String x = "name,age";
        Connection connection = null; 
        try { // Load the JDBC driver 
         String driverName = "oracle.jdbc.driver.OracleDriver"; Class.forName(driverName);

        // Create a connection to the database
        String serverName = "127.0.0.1";
        String portNumber = "1521";
        String sid = "XE";
        String url = "jdbc:oracle:thin:@" + serverName + ":" + portNumber + ":" + sid;
        String username = "system";
        String password = "system";
        connection = DriverManager.getConnection(url, username, password);
                FileWriter fw = new FileWriter("D:\\AACB.csv");
                PrintWriter pw = new PrintWriter(fw);
                pw.println(x);        

                Statement s = connection.createStatement();
                String query = "select "+x+" from dummytable";
                ResultSet rs = s.executeQuery(query);

                while(rs.next())
                {         
                    StringTokenizer stk = new StringTokenizer(x,",");


            while(stk.hasMoreTokens()){
                    System.out.println(rs.getString(stk.nextToken()));
                }
            }
            pw.flush();

            //Close the Print Writer
            pw.close();

            //Close the File Writer
            fw.close();
            s.close();
    connection.close();       
}
catch(Exception e){}

} }

在这个我只是选择 chkbox 并将数据发送到 operation.jsp 页面.. 并尝试制作 csv 文件......在纯 java(A.java 代码以上)中它可以工作但在 jsp 中它不是..

在 jsp 中:index.jsp

<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<HTML>
<body>
<FORM method="POST" ACTION="operation.jsp">
<center>
Select Fields: <br><br>
<table>
<tr>
    <td>
        <input TYPE=checkbox name=fields VALUE=name>
    </td>   
    <td>   
        name
    </td>
</tr>

<tr>
    <td>
        <input TYPE=checkbox name=fields VALUE=age>
    </td>   
    <td>   
        age
    </td>
</tr>

<tr>
    <td>
        <input TYPE=checkbox name=fields VALUE=address>
    </td>   

    <td>   
        address
    </td>
</tr>

</table>
<br> <INPUT TYPE=submit name=submit Value="Submit">
</center>
</FORM>
</BODY>
</HTML>

操作.jsp

<%@page import="java.util.StringTokenizer"%>
<%@page import="java.io.PrintWriter"%>
<%@page import="java.io.FileWriter"%>
<%@page import="java.sql.Statement"%>
<%@page import="java.sql.ResultSet"%>
<%@page import="java.sql.SQLException"%>
<%@page import="java.sql.DriverManager"%>
<%@page import="java.sql.Connection"%>
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<body>
<%! String[] fields; %>
<%! String x ; %>
<center>You have selected: 
<% 
   fields = request.getParameterValues("fields");
   x = fields[0];
   if (fields != null) 
   {
      for (int i = 1; i < fields.length; i++) 
      {
          x += ", " + fields[i];          
      }
   }
   else out.println ("<b>none<b>");

   out.println(x);
%>

<% 
Connection connection = null; 
try { // Load the JDBC driver 
 String driverName = "oracle.jdbc.driver.OracleDriver"; Class.forName(driverName);

// Create a connection to the database
String serverName = "127.0.0.1";
String portNumber = "1521";
String sid = "XE";
String url = "jdbc:oracle:thin:@" + serverName + ":" + portNumber + ":" + sid;
String username = "system";
String password = "system";
connection = DriverManager.getConnection(url, username, password);

        FileWriter fw = new FileWriter("D:\\abckjk.csv");
        PrintWriter pw = new PrintWriter(fw);
        pw.println(x);        

        Statement s = connection.createStatement();
        String query = "select "+ x +" from dummytable";
        ResultSet rs = s.executeQuery(query);

        while(rs.next())
        {   

            StringTokenizer stk = new StringTokenizer(x,",");
                    while(stk.hasMoreTokens()){
                        pw.print(rs.getString(stk.nextToken()));
                        pw.print(",");
                    }
            pw.println();
        }
        pw.flush();

        //Close the Print Writer
        pw.close();

        //Close the File Writer
        fw.close();
        s.close();
connection.close();
} 
catch (ClassNotFoundException e) { // Could not find the database driver 
} catch (SQLException e) 
{ // Could not connect to the database } 

}

%>

</center>
</body>
</html>
4

1 回答 1

1

试试这个方法;

   String nameOfFile = "D:\\abckjk.csv";
   try {   
      PrintWriter pw = new PrintWriter(new FileOutputStream(nameOfFile));
      pw.println(str);
      //clean up
      pw.close();
   } catch(IOException e) {
      out.println(e.getMessage());
   }

但是不推荐在jsp页面中使用过多的java代码。

于 2012-08-21T10:48:39.863 回答