做一个远程登陆项目,首先理解下思路,也就是数据传送的流程。
1 , 首先使用j2me 程序的手机发送自己的名字到 servlet 服务器端。
2 , servlet 接受到发来的信息,进行验证,成功则发送一条信息,登陆成功。
3 , j2me 接受服务器 验证后的数据 再进行一些操作。
基本流程就是上面所说的, 由于涉及的内容比较多,我们要分2 部分来演示该教程。
第一部分 是 编写和配置 Servlet 服务端。
具体编写 Servlet 中的代码我就不多说了,这是J2EE 方面的教程了,我们重点还是关心
j2me 方面的,不过部署方面我会简单详细的演示的。
Servlet 的部分代码还是要提一下的。
MyServlet.java 我这里已经有写好的 Servlet 文件了,
ServletInputStream input_Stream = request.getInputStream();
DataInputStream d_Inputstream = new DataInputStream(input_Stream );
String data_MIDlet = d_Inputstream.readUTF();
d_Inputstream.close();
System.out.println( " 从手机上接收过来的信息:" + data_MIDlet );
这段代码是读取 手机发送过来的名字,也就是接收方面的。
接收后 String record_String = new String( data_MIDlet + " , 成功登陆" );
就会发送 record_String 字符串返回给 手机, 让使用手机的人知道 已经登陆成功了。
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();
通过response 把信息发送给手机的程序。
===========================
那么如何部署,运行 Servlet 呢? 这可不是一般的.java 文件,
这要借助 Tomcat 来部署运行,还有编译的时候要使用到j2ee 的包,才能编译成功。
例如我们现在就编译一下是否成功, 放在C 盘根目录下,比较方便
然后我们进入 cmd 。开始- 》运行- 》输入cmd 确定
cd / 表示进入 C 盘根目录了。
C:/>dir 列出所有文件
2009-03-28 21:21 1,383 MyServlet.java
可以看到
然后 javac Myservlet.java 出现一大堆错误,呵呵
MyServlet.java:4: 软件包 javax.servlet 不存在
import javax.servlet.*;
^
MyServlet.java:5: 软件包 javax.servlet.http 不存在
import javax.servlet.http.*;
^
那是因为找不到需要的包啊。
不过不用担心 tomcat 有提供需要的包。
下面安装 tomcat5.5 ,这也可以说不叫安装吧,因为我找的这个版本解压就可以用
到时我放上 www.17rumen.com 网站上去, 和视频文件 放在同一个下载页面吧,就可以下载了。
或者你们也可以到网上下载。好,我把它解压到C 盘根目录。
想编译刚才的程序,还要配置环境变量。看我操作,
在classpath 最后加入 ;C:/apache-tomcat-5.5.20/common/lib/servlet-api.jar
然后确定,再编译 MyServlet.java 文件 , 要先关闭 当前的cmd 窗口。
C:/>javac MyServlet.java
注意: MyServlet.java 使用了未经检查或不安全的操作。
注意: 要了解详细信息,请使用 -Xlint:unchecked 重新编译。
这个可以不用管它,成功编译了。
========================================
下面进行部署,也就是在 tomcat 下运行 MyServlet
C:/apache-tomcat-5.5.20/webapps 目录下新建 j2me_servlet 文件夹,小写吧,比较习惯
然后进入文件夹 再新建一个 WEB-INF 文件夹, 再进去新建一个文件夹 classes 和一个 web.xml 文件。
呵呵,要新建的东西还不少啊。
然后就是编写 web.xml 了,我们这里为了演示就可以简单写了。
记事本打开 web.xml 文件 , 内容如下:
<web-app>
<servlet>
<servlet-name>MyServlet</servlet-name>
<servlet-class>MyServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>MyServlet</servlet-name>
<url-pattern>/MyServlet</url-pattern>
</servlet-mapping>
</web-app>
简单讲一下 <url-pattern>/MyServlet</url-pattern> 也就是访问 /MyServlet
就会访问我们刚才编写的 MyServlet 的servlet 文件了, 不明白没关系。
我们演示下效果先。把刚才编译的 MyServlet.class 放入 classes 目录下.
好,下面启动一下 tomcat , 运行 C:/apache-tomcat-5.5.20/bin 目录下 startup.bat
就可以了。 出现错误了,提示 web.xml 文件有个标签写错了. 好了,现在改过来了。
重新运行一下 tomcat 吧。 成功运行了
下面我们常见一个J2me 项目, 命名为: J2me_Servlet
创建好了就进去代码目录 进行编写代码了。
。
String url="http://192.168.1.8 ";
HttpConnection httpcon=null;
url 是设置Servlet 服务端的地址, HttpConnection 是一个链接用的类,同时也是输入输出
所需要的。我先写一下本机的ip
==============================
然后我们就是要链接方面的代码了。
这是向Servlet 服务端发送数据的代码,例如:我要发送一个名字给服务端
try
{
ByteArrayOutputStream byte_out=new ByteArrayOutputStream();
DataOutputStream data_out=new DataOutputStream(byte_out);
data_out.writeUTF( "Jame" ); // 发送Jame
data=byte_out.toByteArray();
byte_out.close();
data_out.close();
new Thread(this).start();
}catch(Exception e){}
new Thread(this).start(); 这是启动线程的代码
===================================
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)
{
DataInputStream data_In = new DataInputStream(httpcon.openInputStream() );
int number = data_In.readInt();
while( number-- > 0 )
{
System.out.println(data_In.readUTF() );
}
}
}catch(Exception ee)
{}finally{
try
{
httpcon.close();
out.close();
in.close();
}catch(Exception ex){}
}
}
在接收数据方面我们使用到 线程, 这是因为如果服务器长时间没有反应,我们的程序也不会一直
等待,我们还是可以正常运行程序的。
由于使用到线程,所以我们要继承 implements Runnable 这个接口。
import javax.microedition.io.*;
import java.io.*;
记得要添加的数据包。 好了 我们编译一下。
好了,忘记把代码写入文件,现在再编译一下 。Build complete
我们还不能运行,我们先打开昨天我们Servlet 服务端,还记得吧,运行tomcat
然后我们写正确的URL ,tomcat 服务端默认端口是8080 的。
String url="http://192.168.1.8:8080/j2me_servlet/MyServlet ";
完整的 Servlet 路径, 当然这是我的ip ,如果里ip 不一样 请修改
保存后再编译一下,然后就运行测试,这里它问是否链接到我们的URL 地址,
我们选择 Yes 。
看到了吧, Servlet 服务端 显示一条信息 ,接收到 手机发来的信息:Jame
然后返回 Jame, 登陆成功 的信息给 手机,手机最后得到信息 打印出来了