Я хочу подключить сервлет к .jsp, а затем подключить сервлет с мидлетом - PullRequest
1 голос
/ 16 января 2012

Я хочу, чтобы устройство мобильного клиента отображало информацию, содержащуюся в файле .jsp.

Видимо, я могу сделать это напрямую. Поэтому мне нужно подключить сервлет к .jsp, чтобы клиент-мобил можно было потом подключить к сервлету.

Я не могу сделать это вручную, потому что код, который я написал, длинный, и он также связан с сеансом и корпоративным компонентом. Любая подсказка?

1 Ответ

1 голос
/ 24 марта 2012

У меня есть небольшой рабочий пример мидлета и сервлета из здесь .

Код 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);
            } 
      };
}

Код сервлета как следует,

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);
      }
}
...