springMVC对jsp页面的数据进行校验

简介: 一. 使用注解校验a) 引入校验依赖包 javax.validation validation-api 2.0.0.Final org.

一. 使用注解校验

a) 引入校验依赖包

    <dependency>
        <groupId>javax.validation</groupId>
        <artifactId>validation-api</artifactId>
        <version>2.0.0.Final</version>
    </dependency>
    <dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate-validator</artifactId>
        <version>5.4.1.Final</version>
    </dependency>

hibernate-validator是validation-api的实现

b) 编写form元素实体类

package cultivate_web.vo;

import java.io.Serializable;
import javax.validation.constraints.Min;
import org.hibernate.validator.constraints.NotBlank;
import lombok.Data;

/**
 * login页面的表单信息
 * @date 2018年8月15日 下午4:41:32
 */
@Data
public class LoginForm implements Serializable {

    private static final long serialVersionUID = 6057365255574064840L;

    @NotBlank(message="账户不能为空!")
    @Min(1000)
    private String adminId;
    
    @NotBlank(message="密码不能为空")
    private String pwd;
}

校验注解是有先后顺序的,例如我的代码中@NotBlank(message="账户不能为空!")@Min(1000)的上面,如果输入框数据为空,则会提示"不能为空",如果两个上下位置颠倒,输入框为空会提示"数值不能小于1000".

c) 编写Controller类

package cultivate_web.controller;

import javax.validation.Valid;

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.validation.BindingResult;
import org.springframework.validation.FieldError;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;

import cultivate_domain.pojo.Consumer;
import cultivate_web.vo.LoginForm;

@Controller
@RequestMapping(method=RequestMethod.POST)
public class PostController {

    @RequestMapping("/login")
    public String login( Model model,@Valid LoginForm lf,BindingResult bindingResult){
        
        if(bindingResult.hasErrors()){
            FieldError idmsg = bindingResult.getFieldError("adminId");
            FieldError pwdmsg = bindingResult.getFieldError("pwd");
            
            if(idmsg != null) model.addAttribute("idmsg", idmsg.getDefaultMessage());
            if(pwdmsg != null) model.addAttribute("pwdmsg", pwdmsg.getDefaultMessage());
            return "login";
        }
        return "";
    }
}

这里要注意的是,"BindingResult bindingResult"参数必须紧跟"LoginForm lf".而且"@Valid"必须在 "LoginForm lf"的前面,我就是因为这个注解不在参数对象前面,调试几个小时没找到为什么.

d) 编写jsp页面

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
    <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%@page isELIgnored="false" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>登录系统</title>
</head>
<body>
<h1 align="center">请使用管理员账户登录</h1>
<hr style="height: 5px">
<div style="margin-top: 100px" align="center">
<form action="login" method="post">
    <table align="center" style="border-style: double; width: 300px; height: 200px;">
        <tr>
            <td>账号:</td>
            <td><input id="adminId" name="adminId" type="text"/>
                
            </td>
        </tr>
        <tr><td colspan="2" align="center"><span>${idmsg}</span></td></tr>
        <tr>
            <td>密码:</td>
            <td><input id="pwd" name="pwd" type="password" /></td>
        </tr>   
        <tr><td colspan="2" align="center"><span>${pwdmsg}</span></td></tr>
        <tr>
            <td colspan="2" align="center"><input type="submit" value="提交"/></td>
        </tr>
    </table>
</form>
</div>
</body>
</html>

这就能做一个简单的数据校验了

目录
相关文章
|
5天前
|
Java 数据安全/隐私保护
JavaBean组件<jsp:forward>动作<jsp:param>动作登录页面输入用户名和密码,然后进入检查页面判断是否符合要求,符合要求跳转到成功界面,不符合要求返回登录界面,显示错误信息。
该博客文章通过JavaBean组件和JSP动作元素`<jsp:forward>`与`<jsp:param>`的使用示例,演示了用户登录流程,包括登录信息的提交、验证以及根据验证结果进行的页面跳转。
JavaBean组件<jsp:forward>动作<jsp:param>动作登录页面输入用户名和密码,然后进入检查页面判断是否符合要求,符合要求跳转到成功界面,不符合要求返回登录界面,显示错误信息。
|
3月前
|
自然语言处理 Java 数据库连接
掌握JSP页面编程:动态生成Web内容
【4月更文挑战第3天】Java Server Pages (JSP) 是一种用于创建动态Web内容的Java技术,它结合HTML并允许在页面中嵌入Java代码。JSP支持代码片段、表达式语言(EL)和JSTL标签库,简化动态内容生成。当服务器接收到请求时,执行JSP中的Java代码并将结果嵌入HTML返回给客户端。示例展示了如何显示当前日期和时间。JSP可与Servlet、JavaBeans、数据库等结合,用于构建功能丰富的交互式Web应用。
85 5
掌握JSP页面编程:动态生成Web内容
|
5天前
|
存储 Java
JSP中实现留言页面的编写并将留言信息展示出来
这篇文章介绍了如何在JSP中编写留言页面,并通过JavaBean类存储用户留言信息,同时展示了留言信息的展示方法。
JSP中实现留言页面的编写并将留言信息展示出来
|
3天前
|
缓存 Java 应用服务中间件
SpringMVC入门到实战------七、SpringMVC创建JSP页面的详细过程+配置模板+实现页面跳转+配置Tomcat。JSP和HTML配置模板的差异对比(二)
这篇文章详细介绍了在SpringMVC中创建JSP页面的全过程,包括项目的创建、配置、Tomcat的设置,以及如何实现页面跳转和配置模板解析器,最后还对比了JSP和HTML模板解析的差异。
SpringMVC入门到实战------七、SpringMVC创建JSP页面的详细过程+配置模板+实现页面跳转+配置Tomcat。JSP和HTML配置模板的差异对比(二)
|
5天前
|
Java
`<jsp:getProperty>`动作和`<jsp:setProperty>`动作的使用在一个静态页面填写图书的基本信息,页面信息提交给其他页面,并且在其页面显示。要去将表单元素的值赋值给Java
该博客文章讲解了JSP中`<jsp:getProperty>`和`<jsp:setProperty>`动作的使用方法,包括它们的语法格式和如何在页面中使用这些动作来获取和设置JavaBean对象的属性值,并通过图书信息的填写和展示示例进行了演示。
`<jsp:getProperty>`动作和`<jsp:setProperty>`动作的使用在一个静态页面填写图书的基本信息,页面信息提交给其他页面,并且在其页面显示。要去将表单元素的值赋值给Java
|
3天前
|
前端开发 JavaScript Java
springmvc前端jsp与html
在Spring MVC框架中,前端页面既可以使用JSP(JavaServer Pages)也可以使用HTML,具体使用哪一种或哪几种技术,主要取决于项目的需求、团队的熟悉度以及项目的可维护性等因素。
8 2
|
4天前
|
XML JSON Java
使用IDEA+Maven搭建整合一个Struts2+Spring4+Hibernate4项目,混合使用传统Xml与@注解,返回JSP视图或JSON数据,快来给你的SSH老项目翻新一下吧
本文介绍了如何使用IntelliJ IDEA和Maven搭建一个整合了Struts2、Spring4、Hibernate4的J2EE项目,并配置了项目目录结构、web.xml、welcome.jsp以及多个JSP页面,用于刷新和学习传统的SSH框架。
13 0
使用IDEA+Maven搭建整合一个Struts2+Spring4+Hibernate4项目,混合使用传统Xml与@注解,返回JSP视图或JSON数据,快来给你的SSH老项目翻新一下吧
|
6天前
|
Java
编写一个jsp页面,利用Scriptlet编写一段计算代码,要求用零作为除数,并使用page指令将错误信息显示在另外一个jsp页面,产生的错误信息为“错误,不能用0做除数”
该文章展示了如何创建一个JSP页面,使用Scriptlet编写包含除零操作的计算代码,并配置page指令将错误信息重定向至另一个JSP页面进行显示。
编写一个jsp页面,利用Scriptlet编写一段计算代码,要求用零作为除数,并使用page指令将错误信息显示在另外一个jsp页面,产生的错误信息为“错误,不能用0做除数”
|
2月前
|
Java
JSP 教程 之 JSP 页面重定向 2
JSP页面重定向使用`response.sendRedirect()`或设置状态码和`Location`头来实现。简单示例展示如何将用户重定向至百度首页。保存代码到PageRedirecting.jsp,访问即生效。
25 3
|
2月前
|
Java
JSP 教程 之 JSP 页面重定向 1
JSP教程讲解了如何进行页面重定向,主要使用response对象的sendRedirect()方法,例如:`response.sendRedirect(&quot;http://www.baidu.com&quot;)`。此外,也可结合setStatus()和setHeader()方法实现相同功能,如:设置状态码为临时移动(SC_MOVED_TEMPORARILY)并设定Location头为指定URL,以引导浏览器访问新位置。
26 2