最近做开发的时候需要做一个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,全称Java Platform, Enterprise Edition,是Java平台的一个版本,专门用于开发企业级应用。它提供了丰富的API和服务器环境,包括Servlet、JSP、EJB、JMS、JPA等,使得开发高效、可扩展的Web应用程序成为可能...
它包括了多种技术,如Java Standard Edition (JavaSE),Java Micro Edition (JavaME),以及针对企业级应用的核心技术——JSP (JavaServer Pages)、Servlet和JavaBean。 JSP在Web开发中主要用于创建动态网页,但它的...
【摘要】部分提到的基于JAVAEE的销售管理系统是一个网络化的解决方案,它利用了B/S(浏览器/服务器)模式,结合Servlet、JavaBean和JSP技术来实现。该系统旨在解决传统人工管理中效率低、数据不准确、管理不及时等...
持久对象层则涉及数据存储,通常通过JDBC(Java Database Connectivity)与数据库交互。 容器是Java EE的关键概念,它们为应用组件提供运行时环境,基于Java SE 5.0及以上版本。容器提供必要的服务,如JMS(Java ...
“JAVA”标签提示我们,该项目主要使用Java语言进行编程,这涵盖了JavaSE(标准版)、JavaEE(企业版)以及可能涉及到的部分JavaFX或JavaME(微型版)知识。 【文件内容推测】 虽然没有具体的文件列表,但根据标题...
它可以处理复杂的业务逻辑,并与数据库进行交互。 - **JavaBean**:JavaBean 是 Java EE 中用于封装数据的对象,通常用于在不同组件之间传递数据。 2. **Struts** - **简介**:Struts 是一个流行的 MVC 框架,...
总的来说,JavaSE作为Java的基础,是学习和开发Java应用的起点,而JavaME和JavaEE则分别扩展了Java在嵌入式和企业级领域的应用。无论是在桌面应用、移动应用还是大型企业级系统中,Java都因其强大、稳定和广泛的支持...
- JDK开发包包括JavaSE、JavaME、JavaEE,其中JavaEE用于企业级Web应用。 12. **Tomcat配置**: - Tomcat的默认端口通常是8080。 13. **JSP预定义**: - `! %>`用于预定义变量和方法,声明的变量全局有效且在...
**Java语言体系**\nJava语言作为一个完整的体系,包括JavaSE(标准版)、JavaEE(企业版)和JavaME(微型版),覆盖了从桌面应用到移动应用,再到服务器端应用的广泛领域。Java的安全特性,如类加载器、安全管理器...
- **JavaME**:面向嵌入式设备和移动终端的应用程序开发。 - **版本更迭**:自Java 5.0起,名称分别简化为Java EE、Java SE、Java ME。 #### 五、Java的跨平台特性 - **定义**:Java程序可以在任何安装了Java...
#### 一、Java与Web开发的融合:JavaEE标准框架 在探讨Java Web开发之前,我们首先要理解Java在Web领域的定位。Java不仅仅是一种编程语言,它还是一套完整的生态系统,适用于各种不同的平台。在Java的三大平台中...
* JavaME[J2ME]:java精简版,主要用于受限环境开发 Java应用场景包括: * 网络编程和互联网电子商务应用 * 桌面应用和局域网应用 * 企业级电子商务应用 * 移动应用开发 Java的三种核心机制包括: * Java虚拟机...
6. **JDBC**:Java Database Connectivity允许Java程序通过API与各种数据库进行交互,提供了一种标准化的方式来执行SQL语句和管理数据库连接。 7. **JavaBeans**:JavaBeans是一种Java组件规范,用于创建可重用的...
笔记还归纳了Java编程的三个主要发展方向:Javase(桌面开发)、Javaee(Web开发)、Javame(手机开发),并为Javase课程提供了细分方向,如面向对象编程、图形用户界面开发、数据库编程、文件IO流编程、网络编程和...
在登录示例中,Servlet可能被用来接收用户提交的登录请求,处理后与Shiro交互进行身份验证。 6. **JSP(JavaServer Pages)**:JSP是JavaEE中的视图技术,用于创建动态网页。在登录页面,JSP可以用于展示登录表单,...
JavaSE技术入门部分知识点如下: Java程序结构:Java程序结构是构成Java程序的基本单元,通常包含类定义、方法、变量、注释...掌握了这些知识点,可以让学习者为后续深入学习JavaEE和JavaME等高级主题打下坚实的基础。
- **Java简介**:Java是一种广泛使用的编程语言,支持多平台、动态Web计算,并分为JavaSE、JavaEE和JavaME三大体系。 - **Java特点**:平台无关性、安全性、面向对象、分布式和健壮性。 - **JDBC桥技术**:JDBC-...
Java分为JavaSE、JavaEE和JavaME三个版本,分别适用于桌面应用、企业级应用和移动设备应用。 - **JDBC (Java Database Connectivity)**:JDBC是Java连接数据库的标准接口,提供了与各种数据库的连接能力。在本系统...
- **JAVA**:Java是一种多平台的、面向对象的编程语言,提供JavaSE(标准版)、JavaEE(企业版)和JavaME(微型版)三个版本,适用于不同规模的开发。Java的特点包括平台无关性、安全性、面向对象等。 - **JDBC ...