22:25 2014/5/11
javaweb中表单登陆验证:表单验证原理都一样,不过struts2提供了validate方法。 没有Form表单类的登陆都是简单的登陆
1.通常把用户名密码为为不为空和用户名长度和密码长度写到Form表单类里通常叫做validate方法返回值为Map<String,
String>类型
在LoginServlet里调用下就行,通常用webutils里的转换成bean方法得到Form类的对象,不用自己创建Form的实例更不用什么get/set那是stuts2的方式,要是不用Form类通常都是简单的校验不用校验用户名密码的空不空及长度,直接用request.getParameter("")方法得到表单的用户名和密码而不是通过webutils去封装表单的参数,简单校验不调用validate方法,不用封装了。
2.验证用户为不为空在调用Form类的validate方法下面一步,虽然登陆要用户名和密码我们两个参数先都获取都往后台传,到service层就只用用户名(目的是在逻辑层校验用户为不为空)然后用用户名为参数去数据库找对应的用户,不管你用用户名找到一个还是多少个同样名字的用户最后返回到controller控制层都要一个用户,最好不要在dao层遍历得到的集合用户而是在业务层service曾,service层不应该有sql语句但是可以组织sql语句所需要的参数。没有Form类的这就算登陆验证的第一步,建议有Form类,看起来更规范。为空说明用户不存在,不为空将user设置到与对象中通常是request域然后转发。验证失败回到login页面,步骤二最好在service层校验严格MVC
/* * 使用参数username查找User对象 * 判断user是否存在,如果不存在,说明登录用户名错误!//
也就是后台校验失败,(用户名错误)可以在控制层处理异常 * 如果存在,判断返回的user的password与登录password是否相同
* 如果不相同,说明登录密码错误 * 都相同了,返回user对象,表示成功! */
3.dao层要是查到空用户返回空的用户。