最近做开发的时候需要做一个javame,且需要与服务器端的javaee工程进行互动,在网上先找了一下,并没有很理想的demo,于是自己调研了一下javame的httpconnection后做了一个demo,包括了终端的代码以及服务器端的servlet。手机和Servlet通信比较简单的方法就是DataInputStream.readUTF和 DataOutputStream.writeUTF的配对使用,比如手机发送数据可以在Connection的输出流中用 DataOutputStream.writeUTF依次写入多个参数,相对应的,Servlet打开请求的输入流 (request.getInputStream)用DataInputStream.readUTF来依次读出。返回的参数也一样,Servlet用 response.getOutputStream打开输出流,并把返回值依次写入,手机端打开Connection的输出流并读出即可。至于多个参数多个返回值都是没有问题的,只是多次使用writeUTF和readUTF罢了。
首先是终端的开发,先看代码。
//包定义与类的导入
package com.blessdyb;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import javax.microedition.io.Connector;
import javax.microedition.io.HttpConnection;
import javax.microedition.lcdui.Command;
import javax.microedition.lcdui.CommandListener;
import javax.microedition.lcdui.Display;
import javax.microedition.lcdui.Displayable;
import javax.microedition.lcdui.Form;
import javax.microedition.lcdui.TextField;
import javax.microedition.midlet.MIDlet;
import javax.microedition.midlet.MIDletStateChangeException;
//javame的midlet实现PostDemo类,包括一个输入用户名与密码及提交按钮的Form
//及一个提交后显示服务器端信息的Form
public class PostDemo extends MIDlet implements CommandListener{
//声明各种控件
private Display display;
private Form formLogin=new Form("登陆");
private Form formInfo=new Form("信息");
private TextField tfusername=new TextField("用户名",null, 10,TextField.ANY);
private TextField tfpassword=new TextField("密 码",null,10,TextField.PASSWORD);
private Command cmdSubmit=new Command("登陆",Command.SCREEN,1);
public PostDemo() {
}
protected void destroyApp(boolean bool) throws MIDletStateChangeException {
}
protected void pauseApp() {
}
//定义启动状态时的动作
protected void startApp() throws MIDletStateChangeException {
display=Display.getDisplay(this);
formLogin.append(tfusername);
formLogin.append(tfpassword);
formLogin.addCommand(cmdSubmit);
formLogin.setCommandListener(this);
display.setCurrent(formLogin);
}
//进行本地数据的获取及与远程服务器的连接,取值
private void postViaHttpConnection(String url) {
try {
HttpConnection hc=(HttpConnection) Connector.open(url);
hc.setRequestMethod(HttpConnection.POST);
DataOutputStream dos=hc.openDataOutputStream();
String username=tfusername.getString();
String password=tfpassword.getString();
dos.writeUTF(username);
dos.writeUTF(password);
dos.flush();
dos.close();
DataInputStream dis=hc.openDataInputStream();
String stringInfo=dis.readUTF();
formInfo.append(stringInfo);
display.setCurrent(formInfo);
dis.close();
} catch (IOException e) {
e.printStackTrace();
}
}
public void commandAction(Command c, Displayable d) {
if(c==cmdSubmit){
new Thread(){
public void run(){
postViaHttpConnection("http://localhost:8080/javame/postthings");
}
}.start();
}
}
}
下面是servlet应用的代码:
package com.blessdyb;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.InputStream;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class PostServlets extends HttpServlet {
private static final long serialVersionUID = 1L;
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
//输入流定义及获取Post数据
InputStream is=request.getInputStream();
DataInputStream dis=new DataInputStream(is);
String username=dis.readUTF();
String password=dis.readUTF();
dis.close();
//输出流定义及用户POST请求响应
DataOutputStream dos=new DataOutputStream(response.getOutputStream());
dos.writeUTF("您输入的信息为:\n用户名:"+username+"\n密码:"+password);
dos.flush();
dos.close();
}
}
分享到:
相关推荐
javaEE servlet-apiServlet是一种服务器端的Java应用程序,具有独立于平台和协议的特性,可以生成动态的Web页面
javaEE servlet 学习笔记 jsp本质上是servlet,但是为了更加符合mvc的框架,将页面显示和逻辑控制分离,jsp页面只负责页面,也就是mvc中的V(view),而servlet负责mvc中的C(control)。 而为了更加好的理解结构,一下...
JavaEE Servlet登录例子JavaEE Servlet登录例子JavaEE Servlet登录例子JavaEE Servlet登录例子JavaEE Servlet登录例子JavaEE Servlet登录例子JavaEE Servlet登录例子
这两个软件包的同时存在使得JavaEE Servlet API能够适应将来的其他请求-响应的协议。 这份文档以及刚才提及的Javadoc格式的文档都描述了这两个软件包,Javadoc格式的文档还描述了你应该如何使用这两个软件包中的所有...
APACHE 对 JAVAEE 标准中的 Servlet JSP 实现的源码
一学关于学习Java的大的方向 Java学习方法 javase javaee javame
javaee Servlet实例,基础易学
基于javaee+servlet+js+html实现外卖点餐系统 基于javaee+servlet+js+html实现外卖点餐系统 基于javaee+servlet+js+html实现外卖点餐系统 基于javaee+servlet+js+html实现外卖点餐系统 基于javaee+servlet+js+html...
4.2javaEE_原生Servlet_MySql企业财务管理系统设计与实现(源码+数据库sql+论文+视频齐全)【JAVA】 4.2javaEE_原生Servlet_MySql企业财务管理系统设计与实现(源码+数据库sql+论文+视频齐全)【JAVA】 4.2javaEE_原生...
5.1javaEE_原生Servlet_MySql物流信息网的设计与实现(源码+数据库sql+论文+视频齐全)【JAVA】 5.1javaEE_原生Servlet_MySql物流信息网的设计与实现(源码+数据库sql+论文+视频齐全)【JAVA】 5.1javaEE_原生Servlet_...
Java EE 中与Servlet 有关的课件
JavaEE Servlet PPT 非常实用的课程资源
一些java基础和javaee中的servlet和jsp
本文针对一个基于Android+JAVAEE架构的校园信息交互系统的设计与开 发工作进行论述与说明。首先,简单的介绍校园信息交互系统相关的研究背景, 包括涉及的开发平台及技术规范;其次,分析说明了整个系统的设计与架构...
javaservlet帮助文档,javaservlet帮助文档,javaservlet帮助文档,javaservlet帮助文档,javaservlet帮助文档,javaservlet帮助文档,javaservlet帮助文档
自己收集的,javaee,javase,servlet帮助文档集合,方便开发查阅
经典Java书籍+JavaEE整理资料
core java /javaeecore java /javaeecore java /javaeecore java /javaee
【Java】资源 Java学习资料 JavaEE初阶和JavaEE进阶知识
资源名字:基于javaEE+原生Servlet+jsp的人力资源管理系统设计与实现(源码+文档)_JAVAEE_jsp_人力资源管理系统 资源类型:项目全套源码+文档+辅导视频 源码说明: 全部项目源码都是经过测试校正后百分百成功运行。...