j2me结合j2ee实现用户登陆功能【转】

手机客户端代码:
LoginForm:
package com;

import java.io.DataInputStream;
import java.io.IOException;
import java.io.OutputStream;

import javax.microedition.io.Connector;
import javax.microedition.io.HttpConnection;
import javax.microedition.lcdui.Alert;
import javax.microedition.lcdui.AlertType;
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;

/** *//**
* 用Http方式与服务器交互
*
*
@author zdw
*
*/

public class LoginForm extends MIDlet implements CommandListener
{
    
private Form form = null;
    
private Display display = Display.getDisplay(this);;
    
private Command login = null;
    
private Command exit = null;
    
private TextField username = null;
    
private TextField password = null;
    
private Alert alert = null;
    
private Alert error = null;

    
public LoginForm()
    
{
         form
= new Form("用户登录");
         display.setCurrent(form);
         login
= new Command("登录", Command.SCREEN, 1);
         exit
= new Command("退出", Command.EXIT, 1);
         form.addCommand(login);
         form.addCommand(exit);

         username
= new TextField("用户名", "", 20, TextField.ANY);
         password
= new TextField("密码", "", 20, TextField.PASSWORD);

         form.append(username);
         form.append(password);
         form.setCommandListener(
this);
     }


    
public void initAlertOK()
    
{
         alert
= new Alert("提示", "登录成功!!\r\n您的用户名为:" + username.getString()
                
+ "\r\n密码为:" + password.getString(), null, AlertType.INFO);
         alert.setTimeout(Alert.FOREVER);
         display.setCurrent(alert);
     }


    
public void initAlertError()
    
{
         error
= new Alert("提示", "登录失败,用户名或密码错误", null, AlertType.ERROR);
         display.setCurrent(error);
     }


    
protected void startApp() throws MIDletStateChangeException
    
{

     }


    
/** *//**
      * 事件处理
     
*/

    
public void commandAction(Command cmd, Displayable dis)
    
{
        
// 点击退出按钮事件
        if (cmd.getCommandType() == Command.EXIT)
        
{
             System.out.println(
"exit");
            
this.notifyDestroyed();
         }

        
if (cmd == login)
        
{
            
// 必须开启独立线程来处理Http请求,否则会造成死锁
            new Thread(new Runnable()
            
{
                
public void run()
                
{
                    
try
                    
{
                         inTurnServer();
                     }
catch (Exception e)
                    
{
                         e.printStackTrace();
                     }

                 }

             }
).start();

         }

     }


    
/** *//***************************************************************************
      * 与服务器交互相关代码
     
*/

    
public void inTurnServer()
    
{
        
try
        
{
            
// 服务器请求地址
             String url = "http://localhost:8888/LoginWeb/LoginServlet";
            
// 用户输入的用户名
             String username = this.username.getString();
            
// 用户输入的密码
             String password = this.password.getString();
            
// 用url建立一个Http连接(安全的)
             HttpConnection conn = (HttpConnection) Connector.open(url);
            
// 设置请求类型为POST
             conn.setRequestMethod(HttpConnection.POST);
            
// 设置一般的请求属性
             conn.setRequestProperty("Content-Type",
                    
"application/x-www-form-urlencoded");
             conn.setRequestProperty(
"User-Agent",
                    
"Profile/MIDP-1.0 Configuration/CLDC-1.0");
             conn.setRequestProperty(
"Content-Language", "en-US");
             conn.setRequestProperty(
"Accept", "application/octet-stream");
             conn.setRequestProperty(
"Connection", "close");

            
// 要发送的数据
             String formData = "username=" + username + "&password=" + password;
            
// 转换显字节流
            byte[] data = formData.getBytes();
            
// 设置写入流的长度
             conn.setRequestProperty("Content-Length", Integer
                     .toString(data.length));
             OutputStream os
= conn.openOutputStream();
             os.write(data);
             os.close();
            
// 得到Http响应代码
            int rc = conn.getResponseCode();
            
// 正常响应
            if (rc == HttpConnection.HTTP_OK)
            
{
                
// 构建输入流
                 DataInputStream dism = new DataInputStream(conn
                         .openInputStream());
                
// 读取服务器返回的字节流
                 String result = dism.readUTF();
                 dism.close();
                
// 判断
                if (result.equals("true"))
                
{
                    
// 显示登录成功
                    this.initAlertOK();
                 }

                
if (result.equals("false"))
                
{
                    
// 显示登录失败
                    this.initAlertError();
                    
// 将输入框置空
                    this.username.delete(0, this.username.getString().length());
                    
this.password.delete(0, this.password.getString().length());
                }

             }

         }
catch (IOException e)
        
{
             e.printStackTrace();
         }

     }


    
protected void destroyApp(boolean arg0) throws MIDletStateChangeException
    
{

     }


    
protected void pauseApp()
    
{

     }


}

 

你可能感兴趣的:(thread,OS)