⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 说明.txt

📁 基于Jbuider的手机与Servlet通信的例子
💻 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 + -