📄 说明.txt
字号:
大家好,我是陈亮,眼看就只有一个月就要毕业啦,,今天教大家怎样编写手机程序,我就用一个例子,我要在手机上查询我的银行卡号上的金额还有多少。。手机与Servlet进行通信。。。
我这里用到的是essay这个表,名字没什么意义,我随便找的一个表,把ID当做ID,caption看做金额。。
开始吧,,
Eclipse+Tomcat+EclipseMe
这里Eclipse必须已经装好了EclipseMe才可以,,如果不会配置的话,再找我,,还有,网上也有教程。
装了,这里就有j2me,,我们开始建啦,,,
给他取名,我这里已经把程序写好啦,,
再新建一个类
Myhttp.java
import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;
import javax.microedition.io.*;
import java.io.*;
public class Myhttp extends MIDlet implements CommandListener,Runnable
{
Display display;
byte[] data;
String url="http://localhost:8088/ttw/ser";
Form form=new Form("Equest Result");
Alert alert=new Alert("Error!!!","Error CordID",null,AlertType.ERROR);
StringItem stm=new StringItem("","");
HttpConnection httpcon=null;
TextBox enterbox=new TextBox("Enter ID","",50,TextField.ANY);
Command sendcomd=new Command("Send",Command.OK,1);
public void startApp()
{
display=Display.getDisplay(this);
enterbox.addCommand(sendcomd);
enterbox.setCommandListener(this);
form.append(stm);
display.setCurrent(enterbox);
}
public void pauseApp(){}
public void destroyApp(boolean bl){}
public void commandAction(Command c,Displayable dl)
{
if(c==sendcomd)
{
try
{
ByteArrayOutputStream byte_out=new ByteArrayOutputStream();
DataOutputStream data_out=new DataOutputStream(byte_out);
data_out.writeUTF(enterbox.getString());
data=byte_out.toByteArray();
byte_out.close();
data_out.close();
new Thread(this).start();
}catch(Exception e){}
}
}
public void run()
{
OutputStream out=null;
InputStream in=null;
StringBuffer buffer=new StringBuffer();
try
{
httpcon=(HttpConnection)Connector.open(url);
httpcon.setRequestMethod(HttpConnection.POST);
out=httpcon.openOutputStream();
out.write(data);
if(httpcon.getResponseCode()==HttpConnection.HTTP_OK)
{
int input;
in=httpcon.openInputStream();
while((input=in.read())!=-1)
{
buffer.append((char)input);
}
String result=buffer.toString().trim();
if((Integer.parseInt(result))==-1)
{
//System.out.println(result);
//stm.setText("CodeID Erroe!!!");
alert.setTimeout(Alert.FOREVER);
display.setCurrent(alert);
enterbox.setString("");
}
else
{
stm.setText("The equst result is: "+result);
display.setCurrent(form);
}
}
}catch(Exception ee)
{}finally{
try
{
httpcon.close();
out.close();
in.close();
}catch(Exception ex){}
}
}
}
保存,,,再新建一个项目,做为服务器用的,,手机直接和这个Servlet进行通信,,
再在ss里面,建一个Servlet,包我就不打啦,,
ser.java
import java.io.*;
import java.util.*;
import java.sql.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class ser extends HttpServlet
{
static Connection connection1;
static ResultSet result1;
static Statement statement1;
int record;
String record_String;
public void doPost(HttpServletRequest request, HttpServletResponse response )throws IOException, ServletException
{
// Get the input stream and read the data...
ServletInputStream input_Stream = request.getInputStream();
DataInputStream d_Inputstream = new DataInputStream(input_Stream );
String data_MIDlet = d_Inputstream.readUTF();
d_Inputstream.close();
try
{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
connection1 = DriverManager.getConnection("jdbc:odbc:servlet","sa","");
statement1 = connection1.createStatement();
result1 = statement1.executeQuery("SELECT * from essay where id = '" + data_MIDlet + "'");
if(result1.next())
{
record = Integer.parseInt( result1.getString(2));
}
else
{
record=-1;
}
try
{
if (connection1!=null) connection1.close();
}
catch(SQLException err)
{
System.out.println("Error:"+ err);
}
}
catch(Exception e)
{
System.out.println(e);
}
record_String = new String(Integer.toString(record));
StringTokenizer token = new StringTokenizer(record_String );
Vector vector1 = new Vector();
while( token.hasMoreTokens() )
{
vector1.addElement( token.nextToken() );
}
// Form a response: send back the # of strings
// followed by each string in turn.
ByteArrayOutputStream byte_Out = new ByteArrayOutputStream();
DataOutputStream data_Out = new DataOutputStream( byte_Out );
int size = vector1.size();
data_Out.writeInt( size );
for( int i = 0; i < size; ++i )
{
data_Out.writeUTF( (String) vector1.elementAt( i ) );
}
byte[] data = byte_Out.toByteArray();
// Set the response headers and data...
response.setContentType("application/octet-stream" );
response.setContentLength( data.length );
response.setStatus( response.SC_OK );
OutputStream out_Stream = response.getOutputStream();
out_Stream.write( data );
out_Stream.close();
}
}
哦,,忘了说啦,,这个项目一定要新建一个,,不能和前面的j2me的项目建在一起,
因为MIDlet应用程序,也就是手机的,,没有java.sql这些包,,这是因为手机的容量是很少的。。。所以去掉了很多包啦,,他的虚拟机是kvm,,
现在就建了两个,一个是Myhttp和ss
这个就是手机的。。
再看服务
下面就开始运行吧
首先把服务器上的servlet进行部署
改一下web.xml文件 要不的话你要加servlert/ser
手机应用程序就是在这里调用的
运行手机模拟器
大家看到没有,,我发的是1
这里输入你要查询的ID号,我这里只有一个,,1,点send
这里就是返回给你的45..
看到了吧,,如果输入不对ID就返回一个敬告。
好,就到这里,,大家有什么互相讨论。。
谢谢。。。
msn:ediku@263.net qq:50143539
再见。。。。。
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -