J2EE项目登录方式的改进设计与实现

j2ee|设计|项目

  摘 要 J2EE是当前建立和开发各种Web应用的主流平台,本文针对在系统中用户登录存在的问题,提出了改进方案,详细描述了系统工作原理,并针对具体业务,给出实现的具体内容,为在J2EE环境下实现统一认证、集中式的系统管理与权限管理体系提供了可行方案。

  关键词 J2EE;Web应用;登录;

  引言

  为改变传统的登录方式,方便用户充分利用网络资源,我们改进了用户登录的方式,建立了用户帐户认证中心系统,负责管理对所有的用户建立网络用户登录标识的各种资料,管理登录和注销过程。用户只需一次登录,就可以访问其拥有的权限和资源,极大地方便了用户的使用,提高了系统资源的利用效益。

  基于J2EE用户登录的设计

  系统采用多层(N-tier)开发模式,基本构架如图1所示。系统基本构架总体上分为四层:系统平台层、服务层和应用层,在服务层和系统平台层之间构架系统的数据层,使得系统数据独立、安全。


图1 系统基本框架图
  系统平台采用J2EE标准,基于J2EE标准开发的应用可以跨平台地移植,并提供了企业计算中需要的各种服务;J2EE中多数标准定义了接口,例如JNDI, JDBC等,因此可以和许多厂商的产品配合,容易得到广泛的支持;J2EE树立了一个广泛而通用的标准,大大简化了应用开发和部署过程。操作系统可以使用基于MS Windows 、或者UNIX、LUNIX等操作系统。

  在系统平台层之上是系统的数据层,数据库可以使用XML。XML具有良好的可扩展性,语言简单有效,可自行定义标记;内容与形式的分离,主要刻画数据内容,不考虑显示效果;有严格的语法要求,便于分析统一和与数据库信息转换;便于传输,为纯文本形式,可通过Http协议直接传输,可跨越防火墙等等。系统还可以采用Oracle、MS SQL Server、DB2、MySql等其他数据库。

  在系统平台层和数据层的支持下,系统通过服务层来对整个平台提供服务。提供应用的支持和标准化的应用接口。用户认证中心就建立在服务层,给每一个用户一个建立用户标识,并负责对每一个登录客户进行系统认证。

  在服务层之上系统构架了应用层。应用层包括单位各种综合应用,如指挥自动化网、政治工作宣传网、财务网等。由于系统提供标准化接口,因此,单位内部现在已有的应用系统和以后开发的应用只要使用标准化接口,就可以方便、无缝地构架在系统平台应用中。

  整个这个多层次结构组成了的系统的整体,通过多层次的结构应用,系统的扩展性和灵活性都得以保证,并且具有了更广阔的适用性。

  基于J2EE用户登录实现

  1、系统实现原理

  用户在访问系统组件中的任何一个页面,系统都会转到登录界面,在用户登录后,系统会自动转会到客户上次请求的页面。并且用户此后可以在系统中无缝切换,不需要再次进行登录,实现了一站式登录。系统用户登录实现原理如图2所示。


图2 系统用户登录实现图
  系统实现步骤如下:

  ⑴ 用户访问应用系统。

  ⑵ 应用系统如果检查到用户没有在自己的服务器登录,则将用户请求重定向到用户认证中心上。

  ⑶ 用户认证中心验证用户的实时状态,如果用户没有登录,则自动转向认证中心的用户登录界面。如果已经登录,将用户标识及用户令牌,重定向回应用系统。

  ⑷ 用户认证中心验证用户身份后,生成用户令牌,重定向回应用系统。

  ⑸ 应用系统接收统一格式的用户令牌,取得用户在本系统上的登录账号,将用户在本系统上状态置为登录,返回用户请求访问的页面。

  ⑹ 如果用户在访问应用系统之前已经在应用系统登录服务器上登录过,第二步到第五步对用户来说就是透明的,用户感觉只是向应用系统发出了访问请求,然后得到了正确的页面反馈。

  从上面的流程,我们可以知道,不管用户访问哪个应用系统,用户只需要一次登录,就保证用户在整个系统中的状态都是在线的,不再需要进行第二次登录。

  2、系统实现关键代码

  系统定义了三个Session变量:

   UserID:标识用户身份;
   Pass:标识用户即时状态;
   Url:保存了上次请求的页面,以保证在用户登录后能转到用户请求的页面。

  初始化时:

Protected void init()
{
 Session.Add("UserID", 0);
 Session.Add("Pass", false);
 Session.Add("Url", "");
}
  对于验证过程,首先将传递过来的参数保存到Session中。如果用户没有登录,则转到Login.jsp页面进行登录。如果用户已经登录了。则将用户标识和用户令牌重定向到应用系统访问页面。

private void Validate()
{
 bool Pass = (bool)Session["Pass"];
 if ((Request. GetString ["Url"] != null) && (Request.GetString["Url "] != ""))
 {
  Session["Url "] = Request.GetString["Url "];
 }
 if (Pass)
 {
  string UserID = Session["UserID"].ToString();
  string Url = Session["Url "].ToString();
  Response.Redirect(Url+"/AppPage.jsp?UserID=" + UserID + "&Pass=True);
 }
 else
 {
  Response.Redirect("Login.jsp")
 }
}
  结束语

  我们已经完成了本文所阐述采用改进的用户登录系统在J2EE体系下的实现,并成功应用到多个的Web应用系统中,实践证明,该登录系统具有以下几个特点:

  ⑴ 具备无缝连接功能。能够尽可能地利用现有系统的身份认证模块以及现有的用户设置和权限设置,尽量保护现有的投资,减少重新的用户设置和权限设置的费用,同时避免对现有系统进行大规模的修改。

  ⑵ 具有良好的扩展性。不仅能支持现有的应用系统及其现有的用户系统,当开发和部署新的应用组件时,这个系统服务可以作为它的身份认证模块的形式工作,也就是说,新的组件应用可以通过集成该服务的形式来实现等价的功能,不必再设计用户系统,。

  ⑶ 具备灵活的使用模式。此系统管理为用户提供多种登录手段,包括传统的口令登录或者配发用户身份卡,用户可以通过多种方式自由地使用该系统服务。为了提高系统安全性,又节约费用,我们采用USB存储设备,将个人的信息存储其中,进行登录认证,取得了良好的效果。

时间: 2024-11-01 05:37:02

J2EE项目登录方式的改进设计与实现的相关文章

数据库-如图所示,改表我该如何设计,我的登录方式有3种 学生,老师,管理员

问题描述 如图所示,改表我该如何设计,我的登录方式有3种 学生,老师,管理员 解决方案 给登陆的账号3种不同的状态标识一下,或者你也可以单独写一个权限表,管理不同人员登录 解决方案二: 不需要什么登录方式.你用用户名登录,你的后台就可以通过这张表查询用户的身份.根据不同的身份,就有权限了,不需要用户选择才知道.

J2EE项目10大风险

j2ee|项目 在过去这段时期里,我担任过程序员.高级设计师以及架构设计师等工作,见识过很优秀的企业级Java项目,也见识过不好的,甚至很"丑陋"的项目.有时候我会自己问自己,为什么一个项目可以取得成功,而另一个却走向失败?很难定义出某种规则或标准来表明各个不同的项目应该如何成功,J2EE项目也并不例外.但与此相反的是,我们可以从各个角度和层次上去考察项目失败的原因,如果很好地避开了这些风险,项目就可以取得成功.在本文中,我将提出排名前10位的企业级Java项目风险,供读者参考. 在各

J2EE项目危机【翻译】 -避免这10项J2EE危机来确保你的企业JAVA项目成功

j2ee|项目   在我作为开发者.高级开发者.架构师的经历中,我遇到过好的.差的甚至是丑陋的企业级JAVA项目.当我问自己,是什么使一个项目成功而使另外的失败,我发现很难得到一个完美的答案,就好像很难用成功来定义所有的软件项目.J2EE项目也不例外.因此,项目被分为不同级别的成功或失败.在这篇文章里,我主要想为您--读者朋友--揭示影响企业级JAVA项目的最大的10项危险. 一些危险只是简单的延迟项目进度,一些却是错误的征兆,而还有一些使项目彻底没有成功的希望.尽管如此,如果具有良好的准备,征

应用Rational工具简化基于J2EE项目(四)分析和工具的进展

j2ee|项目 第 4 部分 :分析和工具的进展 Steven Franklin软件设计师和过程专家2004 年 4 月 在这个展示了 RUP 和其他 Rational 工具使用的样例项目的接下来的阶段,用例通过添加文档和可跟踪性到需求被细化,并且使用的工具和技术被评估和选择. 这个第 4 部分文章的重点在于 ASDI 项目的细化阶段,尤其是在用例分析方面(细化我们的用例以对工作状态(SOW)添加可跟踪性,并且标准化和生成用例文档)并选择合适的工具和技术. 第 4 部分快照 在第 4 部分演示的

J2EE项目代码编写规范分享_java

码编写规范目的:能够在编码过程中实现规范化,为以后的程序开发中养成良好的行为习惯. 代码编写规范使用范围:J2EE项目开发. 包命名规范: 目的:包的命名规范应当体现出项目资源良好的划分 servlet类所在包命名规范:公司名称.开发组名称.项目名称.web.servlet 例如:net.linkcn.web.servlet 自定义标签类所在包命名规范:公司名称.开发组名称.项目名称.web.tags 例如:net.linkcn.web.tags 过滤器类所在包命名规范:公司名称.开发组名称.项

手把手教你使J2EE项目开发自动化

j2ee|项目     编者语:在这本书中,Pragmatic Project Automation, Mike Clark 为你提供了无所不有的方法来自动化你的软件项目:用Ant来一步式构建(one-step builds),用CruiseControl 按计划时间来持续构建(scheduling continuous builds),按一下按钮就可以发布软件,轻易地安装和布署应用,通过email,RSS,你的手机,甚至是熔岩灯(lava lamps)来监控构建和程序运行.方法包含示例使初学者

J2EE项目中开发团队的组建

j2ee|项目 J2EE这种应用模型允许不同的开发人员同时进行开发的各个元素.这里阐述一下对不同层次的设计人员,开发人员的技术要求.对以下几个分类进行描述.  设计师组建团队  表现逻辑层的团队角色  业务逻辑层等团队角色  数据库访问层的团队角色  团队的组成可以根据人员的数量和系统的范围大小.例如,不一定所有的角色都要分配,有些人可以担当不能的角色.  设计师       在基于组件的应用系统开发中,一个或几个人必须对这个系统的整体需求有全面的了解,比如系统的控制流程,和其他的接口等等.有些

用户体验设计:基于用户的改进设计

经常听到设计团队成员(或者他们的管理者)说:"我们需要一个全新的设计."这就是从错误的立足点启动了一个重新设计项目,有着错误的目标和策略. 通常,一个全新的设计将会是一个糟糕的设计,仅仅是因为全新的设计打破了用户的预期.更好的策略是从用户熟悉的设计出发,基于用户对系统如何运作的理解来改进设计. 为什么内部员工期望全新设计 你日复一日地盯着这些事情.当然你会对这个UI审美疲劳了.算算你在你的设计上花费了多少"接触小时数".如果你在一个设计团队呆了几年,你可能已经看了几

win7系统如何为修改登录方式?

  win7系统如何为修改登录方式? 1.打开系统的开始菜单,然后点击打开运行窗口,在运行窗口中输入gpedit.msc,回车确定打开组策略编辑器; 2.然后在win7组策略编辑器中找到名为"计算机配置"的组,然后按照这个次序打开"Windows设置"-"安全设置"-"本地策略",最后打开"安全选项."; 3.在"安全选项"的界面上,我们在右侧的窗口中找到"交互式登录:不显示最