选择显示字体大小

教您如何应用rms实现用户自动登录功能

我对整个程序进行了简化,我们不进行联网,对信息的存储也都从简,只是为了说明rms实现应用程序定制的思路,因此给出的代码并没有全面测试和优化。下面是程序的截图



我们用account和preference分别存储用户信息和用户的个性化设置,同样在这两个类中提供序列化的方法,这样方便我们从recordstore中读取和写入。这里只给出preference类的代码,account类似。

package com.j2medev.autologin;import java.io.*;public class preference{    private boolean autologin;    public preference(boolean _autologin)    {        this.autologin = _autologin;    }    public preference()    {    }    public void serialize(dataoutputstream dos)	throws ioexception    {        dos.writeboolean(autologin);    }    public static preference 	deserialize(datainputstream dis)            throws ioexception    {        preference preference = new preference();        preference.setautologin(dis.readboolean());        return preference;    }    public boolean isautologin()    {        return autologin;    }    public void setautologin(boolean autologin)    {        this.autologin = autologin;    }}


我们需要一个model类来处理读取和写入recordstore数据的逻辑,它也非常简单。为了简化程序我们规定首先写入account然后写入preference,这样我们读取的时候只要通过recordid分别为1和2来读取了,在实际使用的时候通常会比较复杂,我们要借助过滤器等查找,可以参考我的基于midp1.0实现个人通讯录。

package com.j2medev.autologin;import javax.microedition.rms.*;import java.io.*;public class model{    private recordstore accountstore;    public static final	string rname = "accountstore";    public model()    {        try        {            accountstore = recordstore.openrecordstore(rname, true);        } catch (recordstoreexception e)        {            e.printstacktrace();        }    }    public void closerecordstore()    {        try        {            accountstore.closerecordstore();        } catch (recordstoreexception e)        {            e.printstacktrace();        }    }    public void saveaccount(account account)    {        bytearrayoutputstream baos = 		new bytearrayoutputstream();        dataoutputstream dos =		new dataoutputstream(baos);        try        {            account.serialize(dos);            byte[] data = baos.tobytearray();            accountstore.addrecord			(data, 0, data.length);            baos.close();        } catch (ioexception e)        {            e.printstacktrace();        } catch (recordstoreexception e)        {            e.printstacktrace();        }    }    public account getaccount	(int recordid)    {        try        {            if (accountstore.getnumrecords() > 0)            {                byte[] data = 				accountstore.getrecord(recordid);                bytearrayinputstream bais = new bytearrayinputstream(data);                datainputstream dis =				new datainputstream(bais);                account account =				account.deserialize(dis);                bais.close();                return account;            }            return null;        } catch (ioexception e)        {            return null;        } catch (recordstoreexception e)        {            return null;        }    }    public void savepreference	(preference preference)    {        bytearrayoutputstream baos =		new bytearrayoutputstream();        dataoutputstream dos =		new dataoutputstream(baos);        try        {            preference.serialize(dos);            byte[] data = baos.tobytearray();            accountstore.addrecord			(data, 0, data.length);            baos.close();                    } catch (ioexception e)        {            e.printstacktrace();        } catch (recordstoreexception e)        {            e.printstacktrace();        }    }    public preference getpreference	(int recordid)    {        try        {            if (accountstore.getnumrecords() > 0)            {                byte[] data =				accountstore.getrecord(recordid);                bytearrayinputstream bais = new bytearrayinputstream(data);                datainputstream dis =				new datainputstream(bais);                preference preference =				preference.deserialize(dis);                bais.close();                return preference;            }            return null;        } catch (ioexception e)        {            return null;        } catch (recordstoreexception e)        {            return null;        }    }}


midlet的设计同样很简单,直接给出代码。整个程序的代码可以从这里下载:

package com.j2medev.autologin;import javax.microedition.lcdui.*;import javax.microedition.midlet.midlet;import javax.microedition.midlet.midletstatechangeexception;public class loginmidlet extends midlet implements commandlistener{    private display display;    private form loginform;    private form successform;    private textfield username;    private textfield password;    private choicegroup autologin;    private model model;    public static final command conncmd	= new command("connect", command.ok, 1);    protected void startapp() 	throws midletstatechangeexception    {        initmidlet();        preference p = model.getpreference(2);        if (p == null  !p.isautologin())        {            display.setcurrent(loginform);        } else if (p.isautologin())        {            account account = 			model.getaccount(1);            system.out.println			("username:" + account.getusrname()			+ "password:"                    + account.getpassword());            display.setcurrent(successform);        }    }    public void initmidlet()    {        model = new model();        display = display.getdisplay(this);        loginform = new form("loginform");        username = new textfield("username", 		null, 20, textfield.any);        password = new textfield("password",		null, 20, textfield.password);        autologin = new choicegroup("autologin", 		choice.multiple,                new string[] 				{ "remember me" }, null);        loginform.append(username);        loginform.append(password);        loginform.append(autologin);        loginform.addcommand(conncmd);        loginform.setcommandlistener(this);        successform = new form("ok");        successform.append("ok you have 		connected to server");    }    protected void pauseapp()    {          }    protected void destroyapp	(boolean arg0) throws	midletstatechangeexception    {    }    public void commandaction	(command arg0, displayable arg1)    {        string _username;        string _password;        boolean auto = false;        if (arg0 == conncmd)        {            _username = username.getstring();            _password = password.getstring();            auto = autologin.isselected(0);            system.out.println			(_username + _password + auto);            if (auto)            {                account account =				new account(_username, _password);                model.saveaccount(account);                preference preference =				new preference(auto);                model.savepreference(preference);            }            display.setcurrent(successform);        }    }}


 


关键字 本文所属关键字

相关 与本文相关文章

分类 所有文章关键字导航

源码编程相关

Java   Asp   PHP   .Net   XML   C/C++   CGI   VB   Jsp   J2ee   J2se   J2me   EJB   Servlet   Tomcat   Resin   Struts   Weblogic   Eclipse   ANT   GUI   JMS   Web servise   IDEA   Webphere   Hibernate   Spring   Jboss   Applet   Swing   Socket   Javamail   Perl   Ajax   P2P   安全   模式   框架   测试   开源   游戏

SQL数据库相关

My-SQL   Ms-SQL   Access   DB2   Oracle   Sybase   SQLserver   索引   存储过程   加密   数据库   分页   视图  

手机无线相关

3G   Wap   CDMA   GRPS   GSM   IVR   彩信   短信   无线   增值业务

网页设计制作相关

HTML   CSS   网页配色   网页特效   Javascript   VBscript   Dreamweaver   Frontpage   JS   Web   网站设计

网站建设推广相关

建站经验   网站优化   网站排名   推广   Alexa

操作系统/服务器相关

Windows XP   Windows 2000   Windows 2003   Windows Me   Windows 9.x   Linux   UNIX   注册表   操作系统   服务器   应用服务器

图形图像多媒体相关

Photoshop   Fireworks   Flash   Coreldraw   Illustrator   Freehand   Photoimpact   多媒体   图形图像

标准 网站致力的规范

Valid CSS!

无不良内容,无不良广告,无恶意代码

Valid XHTML 1.0 Transitional

creativecommons