Table des matières
1. Obtenir les paramètres de la demande
1) Paramètres de type de base : le nom du paramètre de la méthode métier dans
2) Paramètres de type POJO : le nom d'attribut du paramètre POJO de la méthode métier dans
3) Paramètres de type tableau
4) Paramètres de type de collection
③ Dans <annotation-driven> Convertisseur de référence
7.文件上传
Maison Java javaDidacticiel Comment obtenir des données de requête dans SpringMVC ?

Comment obtenir des données de requête dans SpringMVC ?

May 09, 2023 pm 10:04 PM
java springmvc

    1. Obtenir les paramètres de la demande

    Le format des paramètres de la demande du client est : nom=valeur&nom=valeur... Le côté serveur doit obtenir les paramètres demandés et doit parfois encapsuler les données. SpringMVC peut recevoir les éléments suivants. types de paramètres :

    1) Paramètres de type de base : le nom du paramètre de la méthode métier dans

    Controller doit être cohérent avec le nom du paramètre de requête, et la valeur du paramètre sera automatiquement mappée et mise en correspondance.

    //http://localhost:8080/project/quick9?username=zhangsan&age=12
    @RequestMapping("/quick9")
    @ResponseBody
    public void quickMethod9(String username,int age) throws IOException {
        System.out.println(username);
        System.out.println(age);
    }
    Copier après la connexion

    2) Paramètres de type POJO : le nom d'attribut du paramètre POJO de la méthode métier dans

    Controller est cohérent avec le nom du paramètre de requête, et la valeur du paramètre sera automatiquement mappée et mise en correspondance.

    //http://localhost:8080/itheima_springmvc1/quick9?username=zhangsan&age=12
    public class User {
        private String username;
        private int age;
        getter/setter…
    }
    @RequestMapping("/quick10")
    @ResponseBody
    public void quickMethod10(User user) throws IOException {
        System.out.println(user);
    }
    Copier après la connexion

    3) Paramètres de type tableau

    Le nom du tableau de méthodes métier dans Controller est cohérent avec le nom du paramètre de requête, et les valeurs des paramètres seront automatiquement mappées et mises en correspondance.

    //http://localhost:8080/project/quick11?strs=111&strs=222&strs=333
    @RequestMapping("/quick11")
    @ResponseBody
    public void quickMethod11(String[] strs) throws IOException {
        System.out.println(Arrays.asList(strs));
    }
    Copier après la connexion

    4) Paramètres de type de collection

    Lors de l'obtention des paramètres de collection, vous devez envelopper les paramètres de collection dans un POJO.

    <form action="${pageContext.request.contextPath}/quick12" method="post">
     <input type="text" name="userList[0].username"><br>
     <input type="text" name="userList[0].age"><br>
     <input type="text" name="userList[1].username"><br>
     <input type="text" name="userList[1].age"><br>
     <input type="submit" value="提交"><br>
    </form>
    Copier après la connexion
    @RequestMapping("/quick12")
    @ResponseBody
    public void quickMethod12(Vo vo) throws IOException {
        System.out.println(vo.getUserList());
    }
    Copier après la connexion

    Lors de la soumission en utilisant ajax, vous pouvez spécifier le contentType comme json, puis utiliser @RequestBody dans la position du paramètre de méthode pour recevoir les données de collection directement sans utiliser POJO pour l'empaquetage.

    <script>
    //模拟数据
    var userList = new Array();
    userList.push({username: "zhangsan",age: "20"});
    userList.push({username: "lisi",age: "20"});
    $.ajax({
    type: "POST",
    url: "/itheima_springmvc1/quick13",
    data: JSON.stringify(userList),
    contentType : &#39;application/json;charset=utf-8&#39;
    });
    </script>
    Copier après la connexion
    @RequestMapping("/quick13")
    @ResponseBody
    public void quickMethod13(@RequestBody List<User> userList) throws 
    IOException {
        System.out.println(userList);
    }
    Copier après la connexion

    Remarque : Grâce à la capture de paquets de l'outil de développement Google, il a été constaté que le fichier jquery n'était pas chargé. La raison en est que le modèle d'URL du contrôleur frontal SpringMVC DispatcherServlet est configuré avec /, ce qui signifie que toutes les ressources. sont filtrés. Nous pouvons transmettre Les deux méthodes suivantes sont utilisées pour spécifier la libération des ressources statiques : • Spécifiez les ressources publiées dans le spring-mvc

    Lors d'une demande de publication, les données seront tronquées. web.xml pour filtrer l'encodage.

    <mvc:resources mapping="/js/**" location="/js/"/>
    Copier après la connexion

    Lorsque le nom du paramètre de la requête est incohérent avec le nom du paramètre de la méthode métier du contrôleur, vous devez afficher la liaison via l'annotation @RequestParam.

    <!--资源过滤器-->
        <filter>
            <filter-name>CharacterEncodingFilter</filter-name>
            <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
            <init-param>
                <param-name>encoding</param-name>
                <param-value>UTF-8</param-value>
            </init-param>
        </filter>
        <filter-mapping>
            <filter-name>CharacterEncodingFilter</filter-name>
            <url-pattern>/*</url-pattern>
        </filter-mapping>
    Copier après la connexion

    3. L'annotation de liaison de paramètre @RequestParam

    annotation @RequestParam a également les paramètres suivants qui peuvent être utilisés :

    valeur :

    Nom du paramètre de requêteobligatoire : Si le paramètre de requête spécifié est obligatoire ou non Inclure, la valeur par défaut est vraie, s'il n'y a pas de paramètre de ce type lors de la soumission, une erreur sera signaléedefaultValue :Lorsqu'aucun paramètre de demande n'est spécifié, la valeur par défaut spécifiée sera utilisée pour l'affectation
    <form action="${pageContext.request.contextPath}/quick14" method="post">
     <input type="text" name="name"><br>
     <input type="submit" value="提交"><br>
    </form>
    Copier après la connexion
    Restful est un style architectural et un style de conception logiciel, pas une norme. Il fournit simplement un ensemble de principes et de contraintes de conception. Il est principalement utilisé pour les logiciels interactifs client-serveur. Les logiciels conçus sur la base de ce style peuvent être plus simples, plus multicouches et plus faciles à mettre en œuvre des mécanismes de mise en cache.
    4. Obtenir les paramètres de style Restful
    La requête de style Restful utilise « méthode url+request » pour indiquer le but d'une requête. Les quatre verbes du protocole HTTP indiquant la méthode d'opération sont les suivants :

    GET :

    Obtenir des ressources. DELETE : Supprimer la ressourcePUT :Mettre à jour la ressourcePOST :Nouvelle ressource Obtenir l'utilisateur avec l'identifiant = 1
    /user/1 DELETE : Supprimer l'utilisateur avec l'identifiant = 1
    /user/1 PUT :

    Mettre à jour l'utilisateur avec l'identifiant = 11 dans l'adresse URL ci-dessus /user/1 est le paramètre de requête à obtenir. Dans SpringMVC, des espaces réservés peuvent être utilisés pour la liaison des paramètres. L'adresse /user/1 peut être écrite sous la forme /user/{id} et l'espace réservé {id} correspond à la valeur 1. Dans la méthode métier, nous pouvons utiliser l'annotation @PathVariable pour obtenir une correspondance d'espace réservé. 5. Convertisseur de type personnaliséBien que SpringMVC ait fourni par défaut certains convertisseurs de type couramment utilisés, tels que la conversion de la chaîne soumise par le client en type int pour le réglage des paramètres. Mais tous les types de données ne fournissent pas de convertisseurs. Sinon, vous devez personnaliser le convertisseur. Par exemple, les données de type date nécessitent un convertisseur personnalisé. Étapes de développement du convertisseur de type personnalisé : ① Définir la classe du convertisseur pour implémenter l'interface du convertisseur
    user POST : Ajouter un utilisateur
    @RequestMapping("/quick14")
    @ResponseBody
    public void quickMethod14(@RequestParam(value="name",required = 
    false,defaultValue = "defaultname") String username) throws IOException {
    System.out.println(username);
    }
    Copier après la connexion
    //http://localhost:8080/itheima_springmvc1/quick19/zhangsan
    @RequestMapping("/quick19/{name}")
    @ResponseBody
    public void quickMethod19(@PathVariable(value = "name",required = true) String name){
    System.out.println(name);
    }
    Copier après la connexion

    ② Déclarez le convertisseur dans le fichier de configuration spring-mvc.xml

    public class DateConverter implements Converter<String, Date> {
        @Override
        public Date convert(String source) {
            SimpleDateFormat format=new SimpleDateFormat("yyyy-MM-dd");
            Date date = null;
            try {
                date = format.parse(source);
            } catch (ParseException e) {
                e.printStackTrace();
            }
            return date;
        }
    }
    Copier après la connexion

    ③ Dans Convertisseur de référence

    <!--配置自定义转换器-->
        <bean id="conversionService" class="org.springframework.context.support.ConversionServiceFactoryBean">
            <property name="converters">
                <list>
                    <bean class="converter.DateConverter"/>
                </list>
            </property>
        </bean>
    Copier après la connexion
      6. Obtenez l'en-tête de la demande
    • @RequestHeader

    • Utilisez @RequestHeader pour obtenir les informations d'en-tête de la demande, qui sont équivalentes à request.getHeader(name) apprises lors de la phase Web. sont les suivants :
    valeur

    Le nom de l'en-tête de la requête

    obligatoire

    Si cet en-tête de la requête doit être porté

    @RequestMapping("/quick17")
    @ResponseBody
    public void quickMethod17(@RequestHeader(value = "User-Agent",required = false) String 
    headerValue){
        System.out.println(headerValue);
    }
    Copier après la connexion

    @CookieValue

    使用@CookieValue可以获得指定Cookie的值 @CookieValue注解的属性如下:

    value指定cookie的名称
    required是否必须携带此cookie
    @RequestMapping("/quick18")
    @ResponseBody
    public void quickMethod18(@CookieValue(value = "JSESSIONID",required = false) String jsessionid){
        System.out.println(jsessionid);
    }
    Copier après la connexion

    7.文件上传

    文件上传客户端三要素:

    • 表单项type=“file”

    • 表单的提交方式是post

    • 表单的enctype属性是多部分表单形式,及enctype=“multipart/form-data”

    <form action="${pageContext.request.contextPath}/quick20" method="post" 
    enctype="multipart/form-data">
    名称:<input type="text" name="name"><br>
    文件:<input type="file" name="file"><br>
     <input type="submit" value="提交"><br>
    </form>
    Copier après la connexion

    文件上传步骤

    ① 在pom.xml导入fileupload和io坐标

    <!--文件下载-->
        <dependency>
          <groupId>commons-fileupload</groupId>
          <artifactId>commons-fileupload</artifactId>
          <version>1.4</version>
        </dependency>
        <dependency>
          <groupId>commons-io</groupId>
          <artifactId>commons-io</artifactId>
          <version>2.6</version>
        </dependency>
    Copier après la connexion

    ② 配置文件上传解析器

    <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
            <property name="defaultEncoding" value="UTF-8"/>
            <property name="maxUploadSize" value="500000"/>
        </bean>
    Copier après la connexion

    ③ 编写文件上传代码

    @RequestMapping("/quick8")
        @ResponseBody
        public void save8(String name, MultipartFile uploadfile) {
            System.out.println("save8 running...");
            System.out.println(name);
            String filename = uploadfile.getOriginalFilename();
            try {
                uploadfile.transferTo(new File("D:\\upload\\"+filename));
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    Copier après la connexion

    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 de ce site Web
    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

    Outils d'IA chauds

    Undresser.AI Undress

    Undresser.AI Undress

    Application basée sur l'IA pour créer des photos de nu réalistes

    AI Clothes Remover

    AI Clothes Remover

    Outil d'IA en ligne pour supprimer les vêtements des photos.

    Undress AI Tool

    Undress AI Tool

    Images de déshabillage gratuites

    Clothoff.io

    Clothoff.io

    Dissolvant de vêtements AI

    AI Hentai Generator

    AI Hentai Generator

    Générez AI Hentai gratuitement.

    Article chaud

    R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
    4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
    R.E.P.O. Meilleurs paramètres graphiques
    4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
    R.E.P.O. Comment réparer l'audio si vous n'entendez personne
    4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
    R.E.P.O. Commandes de chat et comment les utiliser
    4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌

    Outils chauds

    Bloc-notes++7.3.1

    Bloc-notes++7.3.1

    Éditeur de code facile à utiliser et gratuit

    SublimeText3 version chinoise

    SublimeText3 version chinoise

    Version chinoise, très simple à utiliser

    Envoyer Studio 13.0.1

    Envoyer Studio 13.0.1

    Puissant environnement de développement intégré PHP

    Dreamweaver CS6

    Dreamweaver CS6

    Outils de développement Web visuel

    SublimeText3 version Mac

    SublimeText3 version Mac

    Logiciel d'édition de code au niveau de Dieu (SublimeText3)

    Nombre parfait en Java Nombre parfait en Java Aug 30, 2024 pm 04:28 PM

    Guide du nombre parfait en Java. Nous discutons ici de la définition, comment vérifier le nombre parfait en Java ?, des exemples d'implémentation de code.

    Générateur de nombres aléatoires en Java Générateur de nombres aléatoires en Java Aug 30, 2024 pm 04:27 PM

    Guide du générateur de nombres aléatoires en Java. Nous discutons ici des fonctions en Java avec des exemples et de deux générateurs différents avec d'autres exemples.

    Weka en Java Weka en Java Aug 30, 2024 pm 04:28 PM

    Guide de Weka en Java. Nous discutons ici de l'introduction, de la façon d'utiliser Weka Java, du type de plate-forme et des avantages avec des exemples.

    Numéro de Smith en Java Numéro de Smith en Java Aug 30, 2024 pm 04:28 PM

    Guide du nombre de Smith en Java. Nous discutons ici de la définition, comment vérifier le numéro Smith en Java ? exemple avec implémentation de code.

    Questions d'entretien chez Java Spring Questions d'entretien chez Java Spring Aug 30, 2024 pm 04:29 PM

    Dans cet article, nous avons conservé les questions d'entretien Java Spring les plus posées avec leurs réponses détaillées. Pour que vous puissiez réussir l'interview.

    Break or Return of Java 8 Stream Forach? Break or Return of Java 8 Stream Forach? Feb 07, 2025 pm 12:09 PM

    Java 8 présente l'API Stream, fournissant un moyen puissant et expressif de traiter les collections de données. Cependant, une question courante lors de l'utilisation du flux est: comment se casser ou revenir d'une opération FOREAK? Les boucles traditionnelles permettent une interruption ou un retour précoce, mais la méthode Foreach de Stream ne prend pas directement en charge cette méthode. Cet article expliquera les raisons et explorera des méthodes alternatives pour la mise en œuvre de terminaison prématurée dans les systèmes de traitement de flux. Lire plus approfondie: Améliorations de l'API Java Stream Comprendre le flux Forach La méthode foreach est une opération terminale qui effectue une opération sur chaque élément du flux. Son intention de conception est

    Horodatage à ce jour en Java Horodatage à ce jour en Java Aug 30, 2024 pm 04:28 PM

    Guide de TimeStamp to Date en Java. Ici, nous discutons également de l'introduction et de la façon de convertir l'horodatage en date en Java avec des exemples.

    Programme Java pour trouver le volume de la capsule Programme Java pour trouver le volume de la capsule Feb 07, 2025 am 11:37 AM

    Les capsules sont des figures géométriques tridimensionnelles, composées d'un cylindre et d'un hémisphère aux deux extrémités. Le volume de la capsule peut être calculé en ajoutant le volume du cylindre et le volume de l'hémisphère aux deux extrémités. Ce tutoriel discutera de la façon de calculer le volume d'une capsule donnée en Java en utilisant différentes méthodes. Formule de volume de capsule La formule du volume de la capsule est la suivante: Volume de capsule = volume cylindrique volume de deux hémisphères volume dans, R: Le rayon de l'hémisphère. H: La hauteur du cylindre (à l'exclusion de l'hémisphère). Exemple 1 entrer Rayon = 5 unités Hauteur = 10 unités Sortir Volume = 1570,8 unités cubes expliquer Calculer le volume à l'aide de la formule: Volume = π × r2 × h (4

    See all articles