Java登陆验证模块的实现及小结

登陆验证模块的实现

 

登陆页面验证首先是验证账号

验证码是否填写,密码长度是否符合要求,验证码是否

正确。这几个验证是通过自定义的几个

$.fn

扩展函数实现的

($.fn.remote=Function(url,msg, 

msgCnt){})

实现的,一般将这些自定义的函数放在一个

js

文件中,便于维护。

 

自定义函数一般包含相应的提示字符串,及节点对象

$(

#id

)

等参数。通过函数对节点

var value = this.val();value

是否为空或空字符串的判断,相应的改变节点

text

属性的值。

 

1

验证码正确验证

 

1

验证码正确与否的验证是通过采用了

Ajax

技术的函数实现的。

对应的

action

result

的属性为

json

result

要配置

<param name="root">ok</param>

的参数

action

类要有布尔

类型的名为

ok

的属性,通过返回值

ok

,更改相应的改变节点

text

属性的值。

 

如:

 

$.fn.remote=function(url,msg,msgCnt){ 

var value=

this.val()

;//

获得表单提交的数据

,

如你所填入的验证码

/

资费名称

 

 

var 

name=

this.attr

("name");//

获得表单名称,如验证码文本框的

name:verifiCode 

 

 

var b=false; 

$.ajax({

url

:url+"?"+name+"="+value,

dataTyp

e:"json",

async

:false,

success

:function(data){ 

 

if(data){ 

 

 

 

$(msgCnt).text(""); 

 

 

 

b=true; 

 

 

}else{ 

 

 

 

$(msgCnt).text(msg); 

 

 

 

 

 

 

 

 

 

 

}); 

return b; 

}; 

2

)验证码的点击更新是利用了

result=stream

的属性(要配置

name="inputName"

name="contentType"

的参数)

,点击发送请求,对应的

action

(该类必须有

InputStream

类的

属性,且名字要和

result

相应参数的属性值相同)生成验证码并存入

session

 

 

2

账户和密码的验证

 

当前面一系列的验证结果都满足条件时,才能提交表单。可定义一个函数实现:

 

if(b1 && b2 && b4) {$("#loginForm").submit();} 

相应

action 

接受到数据后,根据账户和密码调用

DAO

的相关方法,查询返回

admin

 

如果

admin

存在则转发到主页面

(通过

result

admin

的不同状态下返回的字符串实现

不同的

type="redirectAction"

,此时将

admin

存入

session

。为后面的登陆检查验证做准备。

 

session.put(KEY_ADMIN, admin); 

如果不存在就,还是停留在登陆页面。

 

 

3

检查登陆验证。

 

为了防止未登录而访问数据,通过

struts2

的自定义拦截器功能实现登陆检查验证。

 

Interceptor

AbstractInterceptor

,

AbstractIntercepto

,相对较简洁。在接口定义的方法

intercept

(ActionInvocation 

in)

实现验证

逻辑。

 

ActionInvocatio

n

getInvocationContext()

action

ActionContext

。通过

action

上下问对象获得

session

对象,在

session

对象中获取

admin

象:

 

Admin admin = (Admin)session.get(Constants.KEY_ADMIN); 

如果

admin

为空,则通过

return 

返回字符串及全局

result

回到

登陆页面

 

如果

admin

不为空,

则通过

ActionInvocation

对象调用

invoke()

方法,

调用后面的

action

 

权限管理:

 

每个用户具有不同的角色,

不同的角色具有不同的权限。

当用户登陆的时候,

根据用户

对象取得用户所具有的角色,根据角色

id

privileges.xml

(通过

privilegereader

类)文件中

获得用户具有的所有权限,然后将此所有权限的集合存入

session

。当用户每一次发送请求

时都要通过拦截器,在拦截器中截取用户的请求路径(

request.getServletPath()

,并检查是

否存在于

session

中的用户所具有权限中。

如果没有就返回到提示页面,

如果有就调用

invoke()

方法执行后面的

action

result

 

拦截器的配置:

 

1.

 

首先注册拦截器

 

<interceptor name="checklogin" class="com.tarena.netctoss.interceptor.CheckLoginInterceptor"> 

</

interceptor>

 

2.

 

然后定义拦截器栈,将默认拦截器栈也加进来。

 

<

interceptor-stack

 name="loginStack"> 

 

 

 

 

<interceptor-ref name="checklogin"/> 

 

 

 

 

<interceptor-ref name="defaultStack"/> 

</interceptor-stack> 

3.

 

为当前

package

中所有

Action

指定默认的拦截器:

 

<

default-interceptor-ref

 name="openSessionStack"/> 

 

资费管理模块:

 

资费管的功能主要有资费信息的增加、管理、删除和修改等功能。采用三大框架整合技

术实现的。

 

applicationContext.xml

文件中配置连接池(用户名、密码、驱动包、连接路径)

,将

连接池注入

SessionFactory

中,

SessionFactory

中配置

Hibernate

框架参数:

如方言

dialect

show_sql

等,指定映射描述。然后开启组件扫描:

 

<

context:component-scan 

base-package="com.tarena.netctoss"> 

</context:component-scan> 

因为采用注解的形式,

所以

dao

要继承

HibernateDaoSupport

定义一个

set

方法调用父

类的

super.setSessionFactory(sf)

方法,实例化

HibernateTemplate

 

dao

中利用

getHibernateTemplate()

实现一列的增删改查方法。

 

List list = getHibernateTemplate().find(hql,name); 

 

关于事务:

 

applicationContext.xml

文件中定义事务管理

Bean,

然后

定义通知

<tx:advice 

transaction-manager="txManager">

,可以在里面(

<tx:attributes>

)指定目标组件中的哪些方

法采用哪种事务管理方式。然后定义

<aop:config>,

指定切入点

<aop:pointcut 

 

>

,将指定的

dao

<aop:advisor 

advice-ref="txAdvice" 

pointcut-ref="servicepointcut"/>

 

dao

@Respository

扫描进组件

法采用哪种事务管理方式。然后定义

<aop:config>,

指定切入点

<aop:pointcut 

 

>

,将指定的

dao

<aop:advisor 

advice-ref="txAdvice" 

pointcut-ref="servicepointcut"/>

 

dao

@Respository

扫描进组件。

法采用哪种事务管理方式。然后定义<aop:config>,指定切入点<aop:pointcut  >,将指定的dao当做目标。然后关联通知和切入点:<aop:advisor advice-ref="txAdvice" pointcut-ref="servicepointcut"/>。 
将dao用@Respository扫描进组件。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值