|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
不得不提一下的是:.net是看到java红,而开发出来的工具。access|servlet|程序|会见|数据|数据库作者:关文柏工夫:2005年5月26日
如今J2ME联网的手艺良多,自己也只是方才打仗这方面,这几天帮他人调试了一些这方面的程序,学到了很多工具,上面就谈谈我进修的历程.
起首这类程序能够简化的分化成三个层面,
1,J2ME的客户端(MIDlet程序)
2,服务器真个servlet(servlet程序)
3,数据库(Access大概是SQL等)
上面我经由过程一个小例子来完成经由过程手机客户端发送哀求,然后服务器真个servlet呼应,servlet经由过程查询Access数据库的内容,前往给手机客
户端并显现出来。
很复杂的一个工具却触及到良多步骤。
开辟情况:
操纵体系:windows2000professional
JDK版本:1.4.2
WTK版本:2.1
Tomcat版本:5.0
假如你还不分明JDKWTKtomcat是甚么工具的话,倡议你补习一下基本常识,这里我就不申明了。
JDK的版本,必定如果1.4.0以上的,大概你用的低版本的而且和Tomcat的低版本兼容也不错。可是我试过用Tomcat5.0+JDK1.0.3就会报错
,没法启动Tomcat服务器.在Tomcat的log中,是如许写的"UnsuportedJNIversion65537"以是我接纳绝对高版本的JDK。
设置好情况变量,这里也未几说了。测试一下你的情况变量。在cmd窗口,输出java-version看看JDK的版本。输出javac看看是不是报错,无
错就证实JDK的情况变量设置准确了。
然后我们编纂J2ME的客户端程序,程序由两个类组成。自己不是甚么妙手,以是程序只能是完成功效为目标,并没有表现甚么优化的代价。
---------------------------------NetMain.java-----------------------------------------------------
importjavax.microedition.midlet.*;
importjavax.microedition.lcdui.*;
publicclassNetMainextendsMIDletimplementsCommandListener//承继MIDlet完成CommandListener接口
{
privateDisplaydis;
sendMsgsm;
privateCommandsd=newCommand("毗连",Command.OK,1);//发送数据的按钮
publicNetMain()
{
dis=Display.getDisplay(this);//失掉显现对象
}
publicvoidstartApp()
{
Formf=newForm("联网测试");//显现在屏幕的Form对象
f.append("发送数据");
f.addCommand(sd);
f.setCommandListener(this);//设置按钮监听
dis.setCurrent(f);
}
publicvoidpauseApp()
{
}
publicvoiddestroyApp(booleanun)
{
}
publicvoidexit()
{
destroyApp(false);
notifyDestroyed();
}
publicvoidcommandAction(Commandc,Displayabled)
{
if(c==sd)
{
sm=newsendMsg(this);//挪用sendMsg类,将本类作为参数传进
dis.setCurrent(sm);//显现sendMsg类
}
}
}
------------------------------------------------------------------------------------------
------------------------------------sendMsg.java------------------------------------------------------
importjavax.microedition.lcdui.*;
importjavax.microedition.io.*;
importjava.io.*;
publicclasssendMsgextendsFormimplementsCommandListener,Runnable//承继Form完成CommandListener和Runnable接口
{
Stringurl="http://127.0.0.1:8080/returnMsg";//界说联网用的URL
StringreturnMsg="";//取得前往字符串
Commandexit=newCommand("分开",Command.EXIT,1);//加入程序的按钮
Threadt;//界说联网用线程
NetMainnm;//NetMain的实例
publicsendMsg(NetMainnm)//机关函数,将NetMain的实例传进
{
super("前往了局");//界说Form的题目
this.nm=nm;
t=newThread(this);
t.start();//启动线程
}
publicvoidrun()
{
try
{
returnMsg=sendHttpGet(url);
//将url传到sendHttpGet办法里做参数,并前往服务器了局的字符串赋值给returnMsg
//System.out.println(returnMsg);
append(returnMsg);//显现出前往了局
addCommand(exit);
setCommandListener(this);
}catch(Exceptione)
{
System.out.println(e);
}
}
publicStringsendHttpGet(Stringurl)throwsIOException
{
HttpConnectionhconn=null;//界说HTTP毗连的对象
DataInputStreamdis=null;//界说数据输出流
StringBuffermsg=newStringBuffer();//创立一个StringBuffer寄存收到的字符串
Strings="";
try
{
hconn=(HttpConnection)Connector.open("http://localhost:8080/returnMsg");//失掉毗连对象
dis=newDataInputStream(hconn.openInputStream());//用失掉的对象的数据流做参数再作为参数组成数据输出流
while(dis.readUTF()!=null)//判别当数据流不为空的时分
{
msg=msg.append(dis.readUTF());//用readUTF()办法机关字符串放在StringBuffer里
}
}catch(Exceptione){}
finally
{
if(hconn!=null)//封闭毗连
hconn.close();
if(dis!=null)
dis.close();
}
returnmsg.toString();//将失掉的StringBuffer经由过程toString()办法,天生新的String并前往
}
publicvoidshow()
{
}
publicvoidcommandAction(Commandc,Displayabled)
{
if(c==exit)
{
nm.exit();//加入程序
}
}
}
-------------------------------------------------------------------------------------------------------------------
以上的两个类,正文应当能看分明。起首是一个Form,下面放了一个按钮,当按按钮的时分,启动联网线程,毗连URL,然后前往一个字符串,
显现在一个新的Form里。很复杂是吧,呵呵。
上面我们来计划服务器真个部分。次要就是写一个servlet程序。上面是程序代码
-----------------------------------------returnMsg.java----------------------------------------------------------------------
----
importjava.sql.*;
importjavax.sql.*;
importjava.io.*;
importjavax.servlet.*;
importjavax.servlet.http.*;
publicclassreturnMsgextendsHttpServlet
{
publicvoiddoGet(HttpServletRequestreq,HttpServletResponseres)throwsServletException,IOException
{
res.setContentType("text/html;charset=gb2312");//设置前往的范例
ServletOutputStreamout=res.getOutputStream();//失掉输入流
DataOutputStreamdos=newDataOutputStream(out);
dos.writeUTF("这是测试了局");
dos.writeUTF("上面是数据信息");
Connectionconn=null;
ResultSetrs=null;
Statementstmt=null;
try
{
Stringdrname="sun.jdbc.odbc.JdbcOdbcDriver";//这些是毗连数据库的驱动
Class.forName(drname);
Stringurl="jdbc:odbc:mydata";
conn=DriverManager.getConnection(url);
stmt=conn.createStatement();
rs=stmt.executeQuery("select*fromuser");//查询数据库表表名为user
while(rs.next())
{
dos.writeUTF("用户ID:"+rs.getString("id"));//失掉字段ID和字段name内容
dos.writeUTF("用户名:"+rs.getString("name"));
}
rs.close();
stmt.close();
conn.close();
}catch(Exceptione)
{
}
}
}
---------------------------------------------------------------------------------------------------------
起首把写好的returnMsg.java程序要举行编译,天生.class文件。我们把天生好的class文件放在Tomcat目次下的
webapps/root/web-inf/classes/内里,注重路径必定不要错。
然后还要编纂web-inf目次上面的web.xml文件.
再内里到场这些信息:
--------------------------------------------------------
<servlet>
<servlet-name>returnMsg</servlet-name>
<servlet-class>returnMsg</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>returnMsg</servlet-name>
<url-pattern>/returnMsg</url-pattern>
</servlet-mapping>
----------------------------------------------------
你能够把本来内里的这些内容删撤除。
注重:假如你在CMD上面编译returnMsg.java文件时分,呈现importjavax.servlet.*;毛病的时分,记得要在情况变量内里填加一句,比
如在classpath内里加上
c:ProgramFilesApacheSoftwareFoundationTomcat5.0commonlibservlet-api.jar就是填加servletapi的搜刮路径.
然后我们还必要用Access天生一个数据库文件,表名就是user,内里有几个字段分离为ID主动编号就行,name任意加几个名字。然后要
把数据库作为数据源举行毗连。
因为我们的体系是windows2000以是在入手下手---设置----把持面板-----办理工具---数据源ODBC点"增加"注重要在体系的DSN内里操
作,然后把你的数据库放在一个
没有中笔墨符路径中,选择它就能够了。数据源的称号就是mydata
如今我们能够启动Tomcat服务器了,然后测试一下我们方才写的servlet,我们翻开IE扫瞄器输出http://127.0.0.1:8080/returnMsg
来看看效果吧,,,,,,
甚么?甚么都没呈现吗,呵呵,,由于我们并没有向扫瞄器内里输入甚么,固然甚么也没有,,,你能够检察原文件,假如内里有你数据
库的信息,那末就是毗连乐成了。servlet统统一般。
最初我们翻开WTK新建工程文件,把后面我们写的那两个类放在scr内里,然后build一下,然后run点"毗连",这时候候摹拟器中,就
会呈现和方才在IE原文件内里一样的笔墨了。
是否是很高兴。呵呵!
固然在实践开辟中,不会只完成云云复杂的功效。我也在不休的探索和进修中,但愿列位伴侣也谈谈你们在进修过程当中的心得。我的QQ:19197
Java到底会发战成什么样,让我们拭目以待吧,我始终坚信着java会更好。以上都是俺个人看法,欢迎大家一起交流. |
|