SSH网站实录(6)登录模块添加验证器进行表单验证

来源:互联网 发布:nginx for linux配置 编辑:程序博客网 时间:2024/05/29 02:41

这一段时间一直忙项目没时间写博客了,昨天才把IOS上线。

这一节接着上一节的继续讲解。

讲解内容:

(1)使用SpringMVC的form表单提交登录的用户名密码:

(2)表单验证(有两种方法1.使用SpringMVC自带的验证框架验证。2.使用JSR303 Hibernate验证器验证)

SpringMVC的form表单的使用非常简单:

第一步:在login.jsp界面上引入框架:其中prefix="XXX" 可以自定义,使用的时候前缀使用XXX就行了如<XXX:form....,<XXX:input..,


然后就可以使用SpringMVC的form表单了如下:



form表单优点:使用form表单可以使用modelAttribute把后台对象拿过来显示

如下:model.addAttribute(“xxx”,对象)方法把对象传递到前台form表单,form表单通过modelAttributte="xxx"接收传递的对象

ManagerUerController

@RequestMapping("/indexLogin")public String home(Model model){model.addAttribute("managerUser", new ManagerUser());return "manager_login";}

前台form表单接收:传递的和接收的对象标记要对应:如上面是managerUser标记的,接收的时候也要对应如下:也应该是managerUser


并通过path属性显示对象的值:


path对象的值要和ManagerUser实体类的属性对应



关于Form表单就讲到这。

下面实现对表单的验证:

先看一下效果:点击登录提示信息:



Hibernate验证器需要再导入四个包


然后:第一步在需要验证的数据的实体类属性上面加上注解:


使用的时候:前台在需要显示错误信息的地方加上:path对应属性变量,cssClass是引用的css 样式。这是 springMVC form表单中使用css样式的方式。


然后:ManagerUser中写验证方法:如下,@Valid和 BindingResult bingResult是一定不能缺少的


下面的是使用SpringMVC的验证方式:如下


是SpringMVC的验证方式。注意:bindingResult.rejectValue("password", "username.password.error", "用户名或密码错误");中password是与前台的<form:errors path="password" cssClass="error" />中的password对应的同时与实体类中的属性private String password也对应。三者对应

SpringMVC验证的这一代码的作用是逻辑判断用户名和密码都不为空的时候,查询不到用户,提示用户名和密码错误


贴一下代码:(下面用到了session保存用户登录信息的知识,关于这一点我就不讲解了,需要我讲解的就顶一下。我看一下人数,如果人数比较多我就发一篇博客专门讲一节session保存用户登录信息的知识)

@RequestMapping("/login")public String login(@Valid @ModelAttribute("managerUser")ManagerUser user, BindingResult bindingResult,  HttpSession session){ManagerUser muser = userService.login(user);        if(bindingResult.hasErrors()){                return "manager_login";        }if(muser == null){//没有该用户//bindingResult.reject("username.password.error", "用户名或密码错误");bindingResult.rejectValue("password", "username.password.error", "用户名或密码错误");//return "redirect:/indexLogin";//return "indexLogin";//为什么老师写的可以我的这样写就不对啊,推测是做了异常处理return "manager_login";}session.setAttribute("user", muser);return "manager";//登录成功调到登录成功的界面, }





下面以登录界面验证为例讲解SSH框架中Hibernate验证器的几种使用方式及注意事项:

使用Hibernate验证器的时候会出现下面的几种情况

注意事项:

方式一(最简洁的使用方式):


如上图我们把@ModelAttribute(“managerUser”)注解去掉了。是这样的:如果没有这个标签,验证器默认使用实体类首字母小写的形式传递到前端form表单。因为前端接收的时候使用的是


所以去掉后,默认的实体类首字母小写也是managerUer。与之对应。还是能传递数据到前端的。

如果把前端改为:


那么@ModelAttribute(“user”)必须要加上了。并指明与前端对应的user:



错误使用一:


如上图想通过添加Model model 参数绑定,然后通过model.addAttribute("user",user)的形式达到自定义 “user” 不使用默认的mangerUser的方式传递到前端

这种方式是不行的。错误信息显示不出来????,有时候还会报错。貌似使用因为Hibernate验证器@Valid注解不支持这种方式。错误信息还是使用的默认首字母小写的managerUser对象存储的。

要想指定为user.唯一的一种方式就是使用上面介绍的方式public String login(@Valid @ModelAttribute("user") ManagerUser user, BindingResult bindingResult,  HttpSession session){

关于验证信息的国际化,我一会有时间再讲吧。大家也可以自己百度学习一下。


最后说一句:这个CSDN编辑器太恶心了,本来图片时使用的复制粘贴的形式写的博客。发表后图片全部丢失了。无奈我又重新截图保存到本地上传的。写了3个小时了一篇博客

下一节进入网站新闻模块(包含内容:增删改查,分页,集成百度的Ueditor富文本编辑器等知识)

完!


1 0