小妖女 发表于 2015-1-18 11:22:02

JAVA网页编程之J2ME程序与Servlet通信会见Access数据库...

不得不提一下的是:.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会更好。以上都是俺个人看法,欢迎大家一起交流.

山那边是海 发表于 2015-1-20 13:28:30

你快去找一份Java的编程工作来做吧(如果是在校学生可以去做兼职啊),在实践中提高自己,那才是最快的。不过你得祈祷在公司里碰到一个高手,而且他 还愿意不厌其烦地教你,这样好象有点难哦!还有一个办法就是读开放源码的程序了。我们知道开放源码大都出自高手,他们设计合理,考虑周到,再加上有广大的程序员参与,代码的价值自然是字字珠叽,铿锵有力(对不起,偶最近《金装四大才子》看多了)。

老尸 发表于 2015-1-25 19:29:20

有时间再研究一下MVC结构(把Model-View-Control分离开的设计思想)

冷月葬花魂 发表于 2015-2-1 09:58:45

Jive的资料在很多网站上都有,大家可以找来研究一下。相信你读完代码后,会有脱胎换骨的感觉。遗憾的是Jive从2.5以后就不再无条件的开放源代码,同时有licence限制。不过幸好还有中国一流的Java程序员关注它,外国人不开源了,中国人就不能开源吗?这里向大家推荐一个汉化的Jive版本—J道。Jive(J道版)是由中国Java界大名 鼎鼎的banq在Jive 2.1版本基础上改编而成, 全中文,增加了一些实用功能,如贴图,用户头像和用户资料查询等,而且有一个开发团队在不断升级。你可以访问banq的网站

仓酷云 发表于 2015-2-3 12:02:02

J2SE开发桌面应用软件比起 VC,VB,DEPHI这些传统开发语言来说,优势好象并不明显。J2ME对于初学者来说,好象又有点深奥,而且一般开发者很难有开发环境。

变相怪杰 发表于 2015-2-5 06:43:31

Pet Store.(宠物店)是SUN公司为了演示其J2EE编程规范而推出的开放源码的程序,应该很具有权威性,想学J2EE和EJB的朋友不要 错过了。

深爱那片海 发表于 2015-2-7 03:35:36

你可以去承接一些项目做了,一开始可能有些困难,可是你有技术积累,又考虑周全,接下项目来可以迅速作完,相信大家以后都会来找你的,所以Money就哗啦啦的。。。。。。

飘灵儿 发表于 2015-2-13 12:59:51

http://www.jdon.com/去下载,或到同济技术论坛的服务器ftp://nro.shtdu.edu.cn去下,安装上有什么问题,可以到论坛上去提问。

爱飞 发表于 2015-3-3 21:10:40

你一定会高兴地说,哈哈,原来成为Java高手就这么简单啊!记得Tomjava也曾碰到过一个项目经理,号称Java很简单,只要三个月就可以学会。

莫相离 发表于 2015-3-5 14:26:05

是一种简化的C++语言 是一种安全的语言,具有阻绝计算机病毒传输的功能

飘飘悠悠 发表于 2015-3-6 07:21:08

是一种使网页(Web Page)由静态(Static)转变为动态(Dynamic)的语言

蒙在股里 发表于 2015-3-7 10:02:12

Java是一个纯的面向对象的程序设计语言,它继承了 C++语言面向对象技术的核心。Java舍弃了C ++语言中容易引起错误的指针(以引用取代)、运算符重载(operator overloading)

金色的骷髅 发表于 2015-3-9 12:27:17

还好,SUN提供了Javabean可以把你的JSP中的 Java代码封装起来,便于调用也便于重用。

不帅 发表于 2015-3-16 22:14:21

http://www.jdon.com/去下载,或到同济技术论坛的服务器ftp://nro.shtdu.edu.cn去下,安装上有什么问题,可以到论坛上去提问。

若天明 发表于 2015-3-23 04:23:49

吧,现在很流行的Structs就是它的一种实现方式,不过Structs用起来实在是很繁,我们只要学习其精髓即可,我们完全可以设计自己的MVC结构。然后你再研究一下软件Refactoring (重构)和极限XP编程,相信你又会上一个台阶。 做完这些,你不如整理一下你的Java代码,把那些经典的程序和常见的应用整理出来,再精心打造一番,提高其重用性和可扩展性。你再找几个志同道合的朋友成立一个工作室吧
页: [1]
查看完整版本: JAVA网页编程之J2ME程序与Servlet通信会见Access数据库...