Comment obtenir des données de requête dans 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); }
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); }
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)); }
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>
@RequestMapping("/quick12") @ResponseBody public void quickMethod12(Vo vo) throws IOException { System.out.println(vo.getUserList()); }
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 : 'application/json;charset=utf-8' }); </script>
@RequestMapping("/quick13") @ResponseBody public void quickMethod13(@RequestBody List<User> userList) throws IOException { System.out.println(userList); }
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/"/>
<!--资源过滤器-->
<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 @RequestParamannotation @RequestParam a également les paramètres suivants qui peuvent être utilisés : <!--资源过滤器--> <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>
valeur :
obligatoire : | 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ée |
defaultValue : | Lorsqu'aucun paramètre de demande n'est spécifié, la valeur par défaut spécifiée sera utilisée pour l'affectation |
4. Obtenir les paramètres de style Restful |
GET :
. DELETE : | Supprimer la ressource |
PUT : | Mettre à jour la ressource |
POST : | Nouvelle ressource |
/user/1 DELETE : Supprimer l'utilisateur avec l'identifiant = 1 |
user POST : | Ajouter un utilisateur |
1 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é. | @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 | 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. | |
Étapes de développement du convertisseur de type personnalisé : |
//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); }
② 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; } }
③ 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>
- 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 :
@RequestMapping("/quick17") @ResponseBody public void quickMethod17(@RequestHeader(value = "User-Agent",required = false) String headerValue){ System.out.println(headerValue); }
@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); }
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>
文件上传步骤
① 在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>
② 配置文件上传解析器
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"> <property name="defaultEncoding" value="UTF-8"/> <property name="maxUploadSize" value="500000"/> </bean>
③ 编写文件上传代码
@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(); } }
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!

Outils d'IA chauds

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

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

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

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

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.

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.

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.

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.

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.

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

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.

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
