2012-01-16 24 views
1

我希望移动客户端设备显示.jsp文件上的信息。我想将一个servlet连接到.jsp,然后将该servlet连接到一个midlet

显然我可以直接做到这一点。因此,我需要将该servlet连接到.jsp,以便客户端移动设备可以连接到该servlet。

我无法手动执行此操作,因为我写的代码很长,并且它也连接到会话和企业bean。任何线索?

+0

哎@Erini Teleantou,你试过我的答案? – Krish 2012-03-26 13:14:12

回答

1

我从here有小工作的Midlet和Servlet的例子。

MIDlet时,

import java.io.*; 
import java.util.*; 
import javax.microedition.midlet.*; 
import javax.microedition.lcdui.*; 
import javax.microedition.io.*; 

public class MySQLConn extends MIDlet implements CommandListener { 
     private String username; 
     private String url = "http://localhost:8080/servlets-examples/servlet/getConnection"; 
     private Display display; 
     private Command exit = new Command("EXIT", Command.EXIT, 1);; 
     private Command connect = new Command("Connect", Command.SCREEN, 1); 
     private TextField tb; 
     private Form menu; 
     private TextField tb1; 
     private TextField tb2; 
     DBConn db; 

     public MySQLConn() throws Exception { 
      display = Display.getDisplay(this); 

     } 

     public void startApp() { 
      displayMenu(); 
     } 

     public void displayMenu() { 
      menu = new Form("Connect"); 
      tb = new TextField("Please input database: ","",30,TextField.ANY); 

      tb1 = new TextField("Please input username: ","",30,TextField.ANY); 

      tb2 = new TextField("Please input password: ","",30,TextField.PASSWORD); 

      menu.append(tb); 
      menu.append(tb1); 
      menu.append(tb2); 
      menu.addCommand(exit); 
      menu.addCommand(connect); 
      menu.setCommandListener(this); 
      display.setCurrent(menu); 
     } 

     public void pauseApp() {} 

     public void destroyApp(boolean unconditional) {} 

     public void commandAction(Command command, Displayable screen) { 
      if (command == exit) { 
        destroyApp(false); 
        notifyDestroyed(); 
      } else if (command == connect) { 
        db = new DBConn(this); 
        db.start(); 
        db.connectDb(tb.getString(),tb1.getString(),tb2.getString()); 
      } 
     } 

     public class DBConn implements Runnable { 
      MySQLConn midlet; 
      private Display display; 
      String db; 
      String user; 
      String pwd; 
      public DBConn(MySQLConn midlet) { 
        this.midlet = midlet; 
        display = Display.getDisplay(midlet); 
      } 

      public void start() { 
        Thread t = new Thread(this); 
        t.start(); 
      } 

      public void run() { 
        StringBuffer sb = new StringBuffer(); 
        try { 
         HttpConnection c = (HttpConnection) Connector.open(url); 
         c.setRequestProperty("User-Agent","Profile/MIDP-1.0, Configuration/CLDC-1.0"); 
         c.setRequestProperty("Content-Language","en-US"); 
         c.setRequestMethod(HttpConnection.POST); 
         DataOutputStream os = (DataOutputStream)c.openDataOutputStream(); 

         os.writeUTF(db.trim()); 
         os.writeUTF(user.trim()); 
         os.writeUTF(pwd.trim()); 
         os.flush(); 
         os.close(); 

         // Get the response from the servlet page. 
         DataInputStream is =(DataInputStream)c.openDataInputStream(); 
         //is = c.openInputStream(); 
         int ch; 
         sb = new StringBuffer(); 
         while ((ch = is.read()) != -1) { 
           sb.append((char)ch); 
         } 
         showAlert(sb.toString()); 
         is.close(); 
         c.close(); 
        } catch (Exception e) { 
         showAlert(e.getMessage()); 
        } 
      } 
      /* This method takes input from user like db,user and pwd and pass to servlet */ 
      public void connectDb(String db,String user,String pwd) { 
        this.db = db; 
        this.user = user; 
        this.pwd = pwd; 
      } 

      /* Display Error On screen*/ 
      private void showAlert(String err) { 
        Alert a = new Alert(""); 
        a.setString(err); 
        a.setTimeout(Alert.FOREVER); 
        display.setCurrent(a); 
      } 
     }; 
} 

servlet代码如下所示,代码如下

import java.io.*; 
import java.text.*; 
import java.util.*; 
import javax.servlet.*; 
import javax.servlet.http.*; 
import java.sql.*; 

public class getConnection extends HttpServlet { 
     public void init() { } 

     public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 
      DataInputStream in = new DataInputStream((InputStream)request.getInputStream()); 
      String db = in.readUTF(); 
      String user = in.readUTF(); 
      String pwd = in.readUTF(); 
      String message ="jdbc:mysql://localhost:3306/"+db+","+user+","+pwd; 
      try { 
        connect(db.toLowerCase().trim(),user.toLowerCase().trim(), pwd.toLowerCase().trim()); 
        message += "100 ok"; 
      } catch (Throwable t) { 
        message += "200 " + t.toString(); 
      } 
      response.setContentType("text/plain"); 
      response.setContentLength(message.length()); 
      PrintWriter out = response.getWriter(); 
      out.println(message); 
      in.close(); 
      out.close(); 
      out.flush(); 
     } 

     public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 
      doPost(request,response); 
     } 

     /* This method connects to MYSQL database*/ 
     private void connect(String db, String user,String pwd) throws Exception { 
      // Establish a JDBC connection to the MYSQL database server. 
      //Class.forName("org.gjt.mm.mysql.Driver"); 
      Class.forName("com.mysql.jdbc.Driver").newInstance(); 
      Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/"+db,user,pwd); 
      // Establish a JDBC connection to the Oracle database server. 
      //DriverManager.registerDriver(new oracle.jdbc.OracleDriver()); 
      //Connection conn = DriverManager.getConnection(
      // "jdbc:oracle:thin:@localhost:1521:"+db,user,pwd); 

      // Establish a JDBC connection to the SQL database server. 
      //Class.forName("net.sourceforge.jtds.jdbc.Driver"); 
      //Connection conn = DriverManager.getConnection(
      // "jdbc:jtds:sqlserver://localhost:1433/"+db,user,pwd); 
     } 
} 
相关问题