- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我希望移动客户端设备显示 .jsp 文件上的信息。
显然我可以直接做到这一点。因此,我需要将 servlet 连接到 .jsp,以便客户端移动设备可以连接到 servlet。
我无法手动执行此操作,因为我编写的代码很长,而且它还连接到 session 和企业 bean。有什么线索吗?
最佳答案
我有来自 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);
}
}
关于java - 我想将 servlet 连接到 .jsp,然后将 servlet 与 midlet 连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8884940/
我制作了程序 Test.jar,其中有一个菜单可以运行另一个程序 (Hello.jar)。我一直在寻找并得到以下代码 callLauncher("javaapp:midlet-name=Hello;m
考虑到 J2ME Midlet 应用程序使用的所有 JSR,我能否以某种方式(从数据库或其他来源)获取支持 J2ME Midlet 应用程序的手机的百分比? 最佳答案 不,你不能。 J2ME 严重依赖
在我的 MIDlet wav 播放过程中,我每隔 1 秒就会听到这种可怕的 +/- 1 秒噪音。 Player p = Manager.createPlayer(getClass().getResou
我在 J2ME 工作。我希望我的应用程序必须在设备重新启动时自动启动。 我已按照 中的建议在 JAD 文件中添加了 Nokia-MIDlet-auto-start: yes 条目 http://lib
我正在为诺基亚 N82 编写 Java ME Midlet,我想从 30 开始倒数,到 0 时重新开始。每当我移动 .jar 和 .jad 文件并尝试从手机运行它们时,它都会说无法安装 midlet
我编写了一个 JavaME 程序,该程序访问 Web 服务以检索值,该 Web 服务在 tomcat 服务器上运行。 我面临一个非常奇怪的问题,每当我运行程序时,程序都会像我预期的那样下载新值,但它似
手机浏览器和 midlet 之间是否可以进行交互?据我了解,它们都在不同的沙箱中运行,除非无法在 midlet 和 native 应用程序之间使用特定于平台的 api 通信。 最佳答案 你是对的,没有
我正在尝试将一个界面合并到我的 Midlet 应用程序中来检测打印机。可能有几种情况:-A。已添加到移动设备的打印机。b.检测蓝牙打印机 提前致谢。 最佳答案 场景 a) 您可能想查看 blackbe
我正在客户端用 j2me 编写一个游戏,它连接到用 java 编写的服务器。该游戏将具有聊天功能,但作为次要功能。 对于连接到服务器的每个 midlet,都会生成一个服务器游戏线程。这些线程在它们之间
因此,我使用 Samsung SDK 1.1.2 开发了一个简单的 hello world midlet,并且打包了 midlet。现在我有两个文件(一个 JAR/JAD)组合。如何将这些安装到我的手
一个简单的问题,一个相当复杂的答案: 如何对 Java Midlet 进行签名,以便将其加载到安全提示较少的手机上? 最佳答案 获取所需的软件 Java SDK (JDK)来自Sun (你应该已经有了
以下代码运行正常,并弹出一个我可以输入内容的文本字段。手机模拟器的左上角软键可以让我更改输入类型(从 qwerty 到数字等),但是每次按下左上角的按钮时,我都会收到 NullPointerExcep
我正在尝试制作一个使用 midlet 作为菜单的程序。当从菜单访问某些命令时,它将访问 Canvas (就像在弹出按钮中选择 fillrectangle 和 fillarc 一样)。如果我选择fill
我开发了一个应用程序,它可以点击 protected 网址。当我使用“https”点击此网址时,我在模拟器中得到“证书已过期”,在真实设备中得到“证书验证失败”。下面是代码片段: String log
我开发了j2me应用程序。该应用程序广泛使用文件连接api访问文件,因此从symantec(Veri标志)购买了证书以避免文件权限问题并成功签署JAD文件。 问题:-在 Blackberry curv
我编写了以下 Java 应用程序: import java.util.Timer; import java.util.TimerTask; import javax.microedition.lcdu
这个问题在这里已经有了答案: 关闭 11 年前。 Possible Duplicate: How do you sign a Java Midlet? 我如何签署 Java midlet?
我想在安装/删除我的黑莓应用程序 (cod) 时收到通知。类似于 Midlet-Install-Notify JAD 属性。目前,黑莓似乎不支持这个 JAD 属性。有黑莓的替代品吗?如果没有,我可以使
我想签署我的应用程序,但我不希望其用户在安装我的应用程序之前在他们的手机上安装证书。是否可以使用自签名证书对 j2me midlet 进行签名? 最佳答案 这是可能的,为此您需要从 verisign
我在 J2ME 工作。我希望我的 MIDlet 必须无限运行。即使我按下设备上的任何键,它也不能关闭。 请帮我看看我该怎么做? 最佳答案 如果您使用的是诺基亚手机,您可以在 Jad 文件中添加 Nok
我是一名优秀的程序员,十分优秀!