一个swing做出来的界面点按钮后传递的参数servlet没有接受到,但通过浏览器servlet可以收到参数.代码如下:swing界面部份public void actionPerformed(ActionEvent e)  {
    try{
      URL url = new URL("http://localhost:8080/servlet1?sql=select gsjc,gsbh from ld_gs");
      URLConnection urlcon = url.openConnection();
      urlcon.connect();
      System.out.println("建立连接");
      ObjectInputStream ois=new ObjectInputStream(urlcon.getInputStream());//和servlet建立连接
//CachedRowSetImpl crs = (CachedRowSetImpl)ois.readObject();
     ResultSet rst = (ResultSet)ois.readObject();
      while(rst.next())
      {
        String sqlname = rst.getString("gsjc");
        System.out.println(sqlname);
      }    }    catch(Exception e1){
    }servlet部份:import javax.servlet.http.*;
import java.io.*;
import java.util.*;
import java.sql.*;
public class Servlet1 extends HttpServlet {
  //private static final String CONTENT_TYPE = "text/html; charset=GBK";
  //Initialize global variables
  Connection conn=null;
  public void init() throws ServletException {
  }  public void service(HttpServletRequest request,HttpServletResponse response) throws ServletException,IOException{
try{
   Class.forName("oracle.jdbc.driver.OracleDriver");
   conn = DriverManager.getConnection("dbc:oracle:thin:@192.168.0.100:1521:dc","hydbuser","hydbuser");
   Statement sta = conn.createStatement();
   String sql = request.getParameter("sql");
   System.out.println("sql:"+sql);
   /*ResultSet rst = sta.executeQuery(sql);
    //CachedRowSetImpl crs = new CachedRowSetImpl();
//crs.populate(rst);
while(rst.next())
   {
   String sqlname = rst.getString("gsjc");
   System.out.println(sqlname);
}
  rst.close();
  sta.close();
  conn.close();*/  /** response.setContentType("application/octet-stream");
   ObjectOutputStream oos = new ObjectOutputStream(response.getOutputStream());
   oos.writeObject(rst);//传递结果集
   oos.close();
   rst.close();
   sta.close();
   conn.close();*/
}
catch(Exception e){}  }  //Clean up resources
  public void destroy() {
  }
}

解决方案 »

  1.   

    传参数的问题通过以下代码解决,但现在返回结果不行,sql是可以查出结果的但客户端无法获得。public void actionPerformed(ActionEvent e)  {
        try{
           String data = URLEncoder.encode("sql", "UTF-8") + "=" + URLEncoder.encode("select gsjc,gsbh from ld_gs", "UTF-8");
          URL url = new URL("http://192.168.0.117:8080/servlet1");
          URLConnection urlcon = url.openConnection();
          urlcon.setDoOutput(true);
          urlcon.connect();
          System.out.println("建立连接");
          OutputStreamWriter wr = new OutputStreamWriter(urlcon.getOutputStream());
           wr.write(data);
           wr.flush();      ObjectInputStream ois=new ObjectInputStream(urlcon.getInputStream());//和servlet建立连接
    //CachedRowSetImpl crs = (CachedRowSetImpl)ois.readObject();
         ResultSet rst = (ResultSet)ois.readObject();
          while(rst.next())
          {
            String sqlname = rst.getString("gsjc");
            System.out.println(sqlname);
          }    }    catch(Exception e1){
        }    }
    servlet代码如下:  Class.forName("oracle.jdbc.driver.OracleDriver");
       conn = DriverManager.getConnection("dbc:oracle:thin:@192.168.0.100:1521:dc","hydbuser","hydbuser");
       Statement sta = conn.createStatement();
       String sql = request.getParameter("sql");
       System.out.println("sql:"+sql);
       ResultSet rst = sta.executeQuery(sql);
        //CachedRowSetImpl crs = new CachedRowSetImpl();
    //crs.populate(rst);
    // while(rst.next())
    //  {
    //  String sqlname = rst.getString("gsjc");
    //  System.out.println(sqlname);
    // }
    // rst.close();
    // sta.close();
    // conn.close();   response.setContentType("application/octet-stream");
       ObjectOutputStream oos = new ObjectOutputStream(response.getOutputStream());
       oos.writeObject(rst);//传递结果集
       oos.close();
       rst.close();
       sta.close();
       conn.close();
    }