基于Smack库与HttpClient登录的完成

1. 引言
  
  传统的网站或应用程序系统中,用户必须先注册完毕,然后才能利用注册的用户名和密码登录系统。但是在一些系统中,不同的用户所需要具备的权限并不一样,对于某些用户,也许他们只会进入系统一两次,之后就再不会登录该系统。在这种情况下,如果还需要先注册才能登录的话,对于这些用户来说,他们可能觉得太麻烦,从而也就放弃了登录系统的操作。而本文介绍了基于Smack 库[1]与HttpClient[2]登录在PDA 点菜系统中的实现,这种无需注册就可登录的方式很好的解决了上述问题。
  本文介绍了这种登录方式在PDA 点菜系统中的实现和应用。登录到PDA 点菜系统的用户可以分成两类,一类就是酒店工作人员,比如,服务员登录PDA 点菜系统为用户提供开台、点菜、结账等一系列服务。这类用户属于餐馆内部员工,他们拥有对整个PDA 点菜系统的操作权限,想要拥有这类用户具备的对系统的操作权限,就必须在PDA 点菜系统中注册,然后使用注册的用户名登录系统。
  另外一类用户则是来酒店用餐的顾客。顾客并不需要像服务员那样在系统中进行一系列的开台、点菜操作,同时,酒店也不会允许顾客进行这些操作。不过系统中有两样功能对于用户来说却十分有用,一个就是查看菜谱的功能,用户可以通过这项功能查看酒店提供的所有菜品,并选择自己喜欢的菜品,并点菜;另一个功能就是方便用户查看酒店当前的桌台状态,通过这项功能,用户可以随时了解到酒店当前桌台的用餐情况,方便用户选台、转台。
  由于酒店的顾客流动性非常大,不可能指望每一个在酒店用过餐的用户都成为酒店的会员,那么这种无需注册就能直接登录的功能就起到作用了。相对于第一种员工登录方式,这种无需注册的顾客登录方式既新颖,又能为顾客提供更加周全而又高质量的服务。
  
  2. 需求规格说明
  
  通过这种登录方式,顾客不需要在系统中注册,只需要在登录界面输入自己邮箱或聊天工具的用户名和密码,就可直接登录系统。在PDA 点菜系统中,用户可以通过四种不同的登录验证方式登录系统,分别是Gmail 邮箱用户、网易163 用户、MSN 用户、校内网用户。
  这些网站的用户可以在登录界面输入用户名和密码进行登录。后台程序通过调用相关的API或者将用户输入的用户名和密码转发到指定的服务器链接来验证用户输入的用户名和密码是否正确,如果输入的用户名和密码通过验证,则允许用户进入PDA 点菜系统,登录成功。
  
  3. 实现Gmail 邮箱登录验证
  
  3.1 Smack 库为了产品的推广,一些公司会为自己开发的软件产品的部分功能像用户提供API,比如,Google 的邮箱Gmail,即时聊天工具Gtalk;微软的即时聊天工具MSN。用户通过调用这些API 就能方便的使用这些产品的功能,而无需关注这些功能的具体实现。
  Smack 是一个在Apache[3]软件许可证下开放源代码的高级库,它用于和XMPP[4]服务器的通信,由此可以实现即时通讯和聊天的功能。Smack 非常容易使用,并且提够了功能强大的API。利用Smack,只需要很少的几行代码就能实现像用户发送信息的操作,我通过在程序中调用Jive Software[5]公司的 Smack API 实现了Gmail 用户的登录验证功能。
  3.2 Gmail 用户登录验证的具体实现首先去Apache 官网下载smack.jar 包,并将smack.jar 包添加到ClassPath 中,然后在程序中调用smack 包中相应的API 实现用户登录验证。
  以下就是Gmail 和Gtalk 用户登录验证的相关代码实现:
  /**引入XMPPConnection 类*/import org.jivesoftware.smack.XMPPConnection;/**创建一个gmail 的连接对象*/XMPPConnection con = new XMPPConnection("gmail.com");/**建立连接*/con.connect();/**用户输入用户名和密码进行登录*/con.login(username, password);/**用户名非空证明登录成功*/if(con.getUser()!=null){/**转入PDA 点菜系统主界面*/return actionMapping.findForward("success");系统中MSN 用户的登录验证方式和Gmail 用户的一样,他们都是借助官方提供的相关插件API 来实现用户的登录验证。MSN 用户登录验证的实现是通过调用msnm 库的API 实现登录验证。
  
  4. 实现网易163 登录验证
  
  4.1 HttpClientHttpClient 是Apache Jakarta Common 下的一个开放源码的项目,可以用来提供高效的、最新的、功能丰富的支持 HTTP 协议的客户端编程工具包,并且它支持 HTTP 协议最新的版本和建议。HttpClient[6]提供的主要的功能有:
  (1) 实现了所有 HTTP 的方法(GET,POST,PUT,HEAD 等)。
  (2) 支持自动转向。
  (3) 支持 HTTPS 协议。
  (4) 支持代理服务器等。
  像网易163、校内网这些拥有大量用户的网站却并没有像Gmail 和MSN 那样为客户提供现成的API 来供用户使用。在实现这类网站用户的登录验证时,我借鉴了HttpClient 项目中的方法。
  4.2 ieHttpHeaders这里我们还需要使用一个叫做ieHttpHeaders 的工具,这是IE 浏览器的一个小工具,用于分析在访问web 服务器的时候,客户机与服务器进行的数据交换。它会显示请求和响应的header 信息,对于解析web 服务器的工作情况非常有帮助。在这里借助ieHttpHeaders 来查看request/response 的header 信息,这样我们就可以知道在网易163 用户进行登录网站操作的时候,IE 浏览器都进行了哪些具体操作,从而在编写用户登录验证的程序时来实现相关的IE 操作。
  4.3 网易163 用户登录验证的具体实现首先去 Apache 官网下载commons-httpclient.jar 包,然后将commons-httpclient.jar 包添加到 CLASSPATH 中。
  以下是网易163 用户登录验证的相关代码实现:
  /**引入commons.httpclient 包中的相关类*/import org.apache.commons.httpclient.HttpClient;import org.apache.commons.httpclient.methods.GetMethod;/**创建 HttpClient 的实例*/HttpClient client = new HttpClient();/**创建GetMethod 连接方法的实例。GetMethod 构造函数中传入待连接的地址*/GetMethod method = new GetMethod("username + "&password=" + password);/** 调用HttpClient 实例的execute 方法来执行GetMethod 实例*/client.executeMethod(method);/**释放连接*/method.releaseConnection();/**跳转的页面URL*/String toUrl ="+ username.toLowerCase();method = new GetMethod(toUrl);client.executeMethod(method);/**取得目标地址的内容*/String str = method.getResponseBodyAsString();method.releaseConnection();/**如果结果页面中包含“安全退出”字符,证明登录成功*/if(str.indexOf("安全退出") != -1){/**转入PDA 点菜系统主界面*/return actionMapping.findForward("success");}
  校内网的登录验证实现方式与网易163 一样。他们都是通过ieHttpHeaders 捕获用户登录时的header 头信息,了解用户登录时IE 都进行了哪些具体操作,并借助HttpClient 实现登录验证功能。
  
  5. 结论
  

  现在几乎所有人都会拥有自己的电子邮箱或者QQ、MSN 号码,所以通过常用的邮箱和即时聊天工具的登录用户名和密码来登录系统的这种方式能够得到很好的应用。而这种登录方式在PDA 点菜系统中的应用,很好的解决了酒店顾客访问PDA 点菜系统的问题。通过这种登录方式将酒店员工对系统的访问与顾客对系统的访问很好的分隔开来,他们对于系统的访问都不会受到对方的影响,这种登录方式不仅方便了顾客访问PDA 点菜系统的操作,同时还很好的限制了顾客在系统中的权限,防止了用户的不当操作对系统带来的损害。这种登录方式有着很好的通用性,它并不局限于在PDA 点菜系统中的应用,在很多其他的网站或者系统当中,如果有需要类似的功能实现,都能够很好的应用这种登录方式,而且移植操作十分方便。

十年论文机构京都名师论文中心,正规全面的论文刊物为您提供职称论文,毕业论文,硕士论文,医学论文,教育论文等各类论文发表服务。 
  
  参考文献
  [1] Smack[EB/OL]. 2007-06.
  [2] Apache Commons HttpClient[EB/OL].http://jakarta.apache.org/commons/httpclient, 2007-02.
  [3] Apache 的网站: 
  [4] 张彦,夏清国. Jabber/XMPP 技术的研究与应用[J].科学技术与工程,2007,(06).
  [5] JiveSoftware 的网站: http:www.jivesoftware.com.
  [6] 洪亮, 田支斌. 浅析中文环境下的Apach Commons HttpClient 编程[J]. 电脑知识与技术, 2008,(22).

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值