Maison  >  Article  >  Java  >  Détection en temps réel des données du formulaire et prévention des soumissions répétées à l'aide de Java

Détection en temps réel des données du formulaire et prévention des soumissions répétées à l'aide de Java

WBOY
WBOYoriginal
2023-08-08 16:01:42831parcourir

Détection en temps réel des données du formulaire et prévention des soumissions répétées à laide de Java

Java implémente la détection et la prévention en temps réel de la soumission répétée de données de formulaire

Dans le développement Web, la détection et la prévention en temps réel de la soumission répétée de données de formulaire sont un problème courant. Lorsque les utilisateurs remplissent le formulaire, nous devons détecter les données saisies par l'utilisateur en temps réel pour fournir des invites d'erreur immédiates ; des soumissions répétées peuvent entraîner des conflits de données ou un gaspillage inutile de ressources, des mesures correspondantes doivent donc être prises pour éviter la duplication. Traitement des soumissions. Cet article explique comment utiliser Java pour implémenter la détection en temps réel des données de formulaire et empêcher les soumissions répétées, et est accompagné d'exemples de code.

  1. Détection en temps réel des données du formulaire

Dans le processus de détection en temps réel des données du formulaire, nous pouvons mettre en œuvre une vérification en temps réel côté client via JavaScript pour optimiser l'expérience utilisateur. Voici un exemple simple qui utilise JavaScript pour détecter en temps réel si le format du numéro de téléphone mobile saisi par l'utilisateur est correct :

<script>
function checkPhoneNumber() {
    var phoneNumber = document.getElementById("phoneNumber").value;
    var phoneRegex = /^1[3-9]d{9}$/;
    
    if (!phoneRegex.test(phoneNumber)) {
        document.getElementById("phoneNumberError").innerHTML = "手机号码格式不正确";
    } else {
        document.getElementById("phoneNumberError").innerHTML = "";
    }
}
</script>

<form>
    <input type="text" id="phoneNumber" onkeyup="checkPhoneNumber()">
    <span id="phoneNumberError"></span>
    <button type="submit">提交</button>
</form>

Grâce à la fonction de liaison d'événement onkeyup checkPhoneNumber, lorsque l'utilisateur saisit le numéro de téléphone mobile, il sera vérifié en temps réel si le format du numéro de téléphone mobile est correct, et affichera le message d'erreur correspondant sur la page.

Bien entendu, la vérification en temps réel côté client vise uniquement à offrir une meilleure expérience utilisateur et ne peut pas remplacer la vérification côté serveur. Les données du formulaire doivent être à nouveau vérifiées côté serveur pour empêcher toute soumission malveillante ou contourner la vérification côté client.

  1. Empêcher la soumission répétée des données du formulaire

Afin d'éviter la soumission répétée des données du formulaire, nous pouvons introduire le mécanisme Token côté serveur. Le jeton est une chaîne générée aléatoirement qui est soumise au serveur comme l'un des paramètres du formulaire à chaque fois que le formulaire est soumis. Lorsque le serveur traitera la demande de formulaire, il vérifiera si le jeton est valide. S'il est valide, il traitera la demande. S'il n'est pas valide, il rejettera la demande.

Ce qui suit est un exemple simple pour éviter les soumissions répétées :

@Controller
@RequestMapping("/form")
public class FormController {

    @Autowired
    private TokenService tokenService;

    @RequestMapping(method = RequestMethod.GET)
    public String showForm(Model model) {
        String token = tokenService.generateToken();
        model.addAttribute("token", token);
        return "form";
    }

    @RequestMapping(method = RequestMethod.POST)
    public String processForm(@RequestParam("token") String token) {
        if (!tokenService.isValidToken(token)) {
            return "error";
        }
        // 处理表单请求
        return "success";
    }
}

@Component
public class TokenService {
    private Set<String> tokens = new HashSet<>();

    public String generateToken() {
        String token = UUID.randomUUID().toString();
        tokens.add(token);
        return token;
    }

    public boolean isValidToken(String token) {
        return tokens.remove(token);
    }
}

Dans le FormController, nous générons le jeton via la méthode showForm, mettons le jeton dans le modèle et le transmettons à la page du formulaire. Lorsque le formulaire est soumis, le Token est transmis au serveur en tant que paramètre et la validité du Token est vérifiée dans la méthode processForm. Si le Token n’est pas valide, le traitement de la demande de formulaire sera refusé.

La classe TokenService est utilisée pour générer et vérifier le jeton. Nous utilisons une collection Set pour stocker les jetons valides. Lors de la vérification du jeton, il est supprimé de l'ensemble pour garantir que chaque jeton ne peut être utilisé qu'une seule fois.

En introduisant le mécanisme Token, nous pouvons empêcher efficacement la soumission répétée des données du formulaire et garantir l'intégrité et la sécurité des données du système.

Résumé :

Dans le développement Web, la détection en temps réel des données du formulaire et la prévention des soumissions répétées sont un enjeu important. La vérification en temps réel du client via JavaScript peut offrir une bonne expérience utilisateur ; en introduisant le mécanisme de jeton, la soumission répétée des données du formulaire peut être efficacement évitée. Grâce à l'introduction et aux exemples de cet article, je pense que les lecteurs comprendront mieux la détection en temps réel des données de formulaire et la prévention des soumissions répétées en Java.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn