Maison Java javaDidacticiel Analyse détaillée des vues SpringMVC et du style REST (avec code)

Analyse détaillée des vues SpringMVC et du style REST (avec code)

Sep 26, 2018 pm 03:26 PM
springmvc

Cet article vous apporte une analyse détaillée des vues SpringMVC et du style REST (avec code). Il a une certaine valeur de référence. Les amis dans le besoin peuvent s'y référer.

Qu'est-ce qu'un résolveur de vue ?

Les deux interfaces les plus importantes utilisées par springMVC pour gérer les vues sont ViewResolver et View.

La fonction principale de ViewResolver est de résoudre un nom de vue logique en une vue réelle. Dans SpringMVC, l'objet View est utilisé pour présenter l'objet View au client, et ViewResolver convertit uniquement le nom de vue logique en. une vue réelle. Un objet View qui se résout en un objet.

La fonction principale de l'interface View est de traiter les vues et de les renvoyer au client.

Le flux d'exécution de l'analyseur de vue :

Une fois la méthode de requête exécutée, un objet ModelAndView est finalement renvoyé For. ceux qui renvoient String , View, ModelMap et d'autres types SpingMVC finiront par les assembler en interne dans un objet ModelAndView, qui contient le nom logique et la vue de l'objet modèle. StringMVC utilise l'analyseur de vue pour obtenir l'objet de vue final. La vue finale peut être une vue JSP ou une autre vue sous forme de fichier. Le processeur de rendu ne se soucie pas de la méthode finalement adoptée. Le processeur se concentre sur le travail de production des données du modèle et a toujours réalisé un découplage complet du MVC.

Vue :

Le rôle de la vue est de restituer les données du modèle et de présenter les données du modèle à l'utilisateur sous une forme ou une autre. Afin de réaliser le découplage du modèle de vue et de la technologie d'implémentation spécifique, Sping définit une interface View. Les objets View sont instanciés par le résolveur de vues et, comme les vues sont sans état, elles ne présentent pas de problèmes de sécurité des threads.

Classes d'implémentation de vues couramment utilisées :

InternalResourceView : encapsule les ressources JSP dans une vue et est l'analyseur de vues utilisé par springmvc par défaut.

JstlView : L'introduction du package jstl springmvc dans un projet JSP utilisera automatiquement cet analyseur.

MapingJackJsonView : Sortie du modèle en mode Json via l'ObjectMapper du framework open source Jackson.

AbstractExcelView : La classe abstraite de la vue de document Excel, qui construit un document Excel basé sur POI

AbstractPdfVIew : La classe abstraite de vue de document PDF, qui construit un document PDF basé sur iText

BeanNameViewResolver : résolvez le nom de la vue logique en un Bean, et l'identifiant du Bean est égal au nom de la vue logique.

Le rôle du résolveur de vue est relativement simple, analysant la vue logique dans un objet de vue spécifique. Tous les résolveurs de vue doivent implémenter l'interface ViewResolver.

JSP est la technologie de vue la plus couramment utilisée, vous pouvez utiliser InternalResourceView comme analyseur de vue

Tant que la balise JSTL est introduite dans le projet, springmvc convertira automatiquement la vue InternalResourceView en JstlView, qui est sa sous-classe.

Chaque analyseur de vue implémente l'interface Ordered et développe un attribut d'ordre, grâce auquel la priorité de l'analyseur peut être définie. Plus l'ordre est petit, plus la priorité est élevée. Printemps MVC analysera le nom de la vue logique en fonction de la priorité de l'ordre de l'analyseur de vue jusqu'à ce que l'analyse soit réussie et que l'objet de vue soit renvoyé, sinon une ServletException sera levée

Vue personnalisée :

@Component
public class MyView implements View {

    @Override
    public String getContentType() {
        return "text/html";
    }

    @Override
    public void render(Map<String, ?> model, HttpServletRequest request, HttpServletResponse response) throws Exception {
            response.getWriter().println("<h1>Spring MVC Custom view</h1>");
    }

}
Copier après la connexion

Nous devons implémenter cette vue personnalisée dans l'interface View, puis remplacer les deux méthodes dans l'interface. Ensuite, nous déclarons cette classe comme Bean et la remettons au printemps pour la gestion. Ici, nous configurons un résolveur beanName.

<!-- 配置BeanName解析器 -->
    <bean id="beanNameViewResolver" class="org.springframework.web.servlet.view.BeanNameViewResolver">
        <property name="order" value="1"/>
    </bean>
Copier après la connexion

Ensuite, écrivez une requête. Cette requête renvoie le nom du Bean. Par défaut, la première lettre est en minuscule et affichée en casse camel.

@RequestMapping("myView")    public String myView(){
        System.out.println("myView load ...");        
        return "myView";
    }
Copier après la connexion

Cela complétera notre vue personnalisée.

Désactivé et redirection :

Si la chaîne de retour contient "redirection :" ou "forward:", SpringMvc effectuera un traitement spécial.

Si nous devons accéder directement à la vue, nous pouvons la configurer comme ceci

<!– 直接配置对应的视图访问路径 -->
<mvc:view-controller path="/hello" view-name="hello.jsp" />
<!-- 如果配置了mvc-controller会导致其它页面没法正常访问,还需要添加一个标签 -->
<mvc:annotation-driven />
Copier après la connexion

Chapitre REST

REST (Representational State Transfer) : c'est-à-dire le transfert d'état de la couche de présentation (ressource).
Ressources : Une entité sur le réseau, ou une information sur le réseau. Il peut s'agir d'un morceau de texte, d'une chanson, d'une image, etc. Vous pouvez utiliser une URL pour y pointer. Chaque ressource possède une URL spécifique et unique. Pour accéder à cette ressource, il suffit d'accéder directement à l'URI.
Couche de représentation : la forme sous laquelle les ressources sont présentées.
Transfert d'état : chaque fois qu'une requête est émise, elle représente une interaction entre le client et le serveur. Le protocole HTTP est un protocole sans état, c'est-à-dire que tous les états sont stockés côté serveur. Si le client souhaite faire fonctionner le serveur, il doit utiliser certains moyens pour faire subir une transformation d'état au serveur. Cette transformation est basée sur la couche de présentation, il s'agit donc de la transformation d'état de la couche de présentation.

在我们的SpringMVC之中支持HTTP四种请求状态,REST规定的HTTP协议中四种表示操作方式的动词

GET请求:获取资源

POST请求:新建资源

PUT:更新资源

DELETE:删除资源

我们需要在WEB.xml中配置实现PUT,DELETE请求方式,大家都知道在我们传统的HTML中只有GET,POST两种请求方式。

<!-- 配置HiddenHttpMethodFilter过滤器实现PUT,DELETE请求 -->
<filter>
    <filter-name>HiddenHttpMethodFilter</filter-name>
    <filter-class>
        org.springframework.web.filter.HiddenHttpMethodFilter
    </filter-class>
</filter>
<filter-mapping>
    <filter-name>HiddenHttpMethodFilter</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>
Copier après la connexion

GET请求

GET请求:
<a href="rest/testRest/10">test RestGet请求</a><br><br>

@RequestMapping(value="/testRest/{id}",method=RequestMethod.GET)
public String testRestGet(@PathVariable Integer id){
    System.out.println("GET请求,获取id为:" + id + "的对象!");
    return SUCCESS;
}
Copier après la connexion

Post请求

POST请求:
<form action="rest/testRest" method="post">
    <input type="submit" value="post请求" />
</form>

@RequestMapping(value="/testRest",method=RequestMethod.POST)
public String testRestPost(){
    System.out.println("POST请求,添加新的对象!");
    return SUCCESS;
}
Copier après la connexion

PUT和DELETE请求想要使用必须添加上面的过滤器,并且在Post请求中加上隐藏域name="_method",value="PUT/DELETE"。

PUT,请求其实是由POST请求转换而来的。

PUT请求:
<form action="rest/testRest" method="post">
    <!-- 添加隐藏域,名称为_method,value为请求方式 -->
    <input type="hidden" name="_method" value="PUT" />
    <input type="submit" value="put请求" />
</form>

@RequestMapping(value="/testRest",method=RequestMethod.PUT)
public String testRestPut(){
    System.out.println("PUT请求,更新操作!");
    return SUCCESS;
}
Copier après la connexion

DELETE请求

DELETE请求:
<form action="rest/testRest/10000" method="post">
    <!-- 添加隐藏域,名称为_method,value为请求方式 -->
    <input type="hidden" name="_method" value="DELETE" />
    <input type="submit" value="delete请求" />
</form>

@RequestMapping(value="/testRest/{id}",method=RequestMethod.DELETE)
public String testRestDelete(@PathVariable Integer id){
    System.out.println("DELETE请求,删除操作!" + id);
    return SUCCESS;
}
Copier après la connexion

重复一次第一章的内容在我们springmvc拦截所有请求会导致css,js,图片等不能引入我们可以这样解决:

<!--将非mapping配置下的请求交给默认的Servlet来处理-->
<mvc:default-servlet-handler/>
<!--如果添加了默认servlet,mvc请求将无效,需要添加annotation-driven-->
<mvc:annotation-driven></mvc:annotation-driven>
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.

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)

Comparaison et analyse des différences entre SpringBoot et SpringMVC Comparaison et analyse des différences entre SpringBoot et SpringMVC Dec 29, 2023 am 11:02 AM

SpringBoot et SpringMVC sont tous deux des frameworks couramment utilisés dans le développement Java, mais il existe des différences évidentes entre eux. Cet article explorera les fonctionnalités et les utilisations de ces deux frameworks et comparera leurs différences. Tout d’abord, découvrons SpringBoot. SpringBoot a été développé par l'équipe Pivotal pour simplifier la création et le déploiement d'applications basées sur le framework Spring. Il fournit un moyen rapide et léger de créer des fichiers exécutables autonomes.

Quelles sont les différences entre SpringBoot et SpringMVC ? Quelles sont les différences entre SpringBoot et SpringMVC ? Dec 29, 2023 am 10:46 AM

Quelle est la différence entre SpringBoot et SpringMVC ? SpringBoot et SpringMVC sont deux frameworks de développement Java très populaires pour la création d'applications Web. Bien qu’ils soient souvent utilisés séparément, les différences entre eux sont évidentes. Tout d’abord, SpringBoot peut être considéré comme une extension ou une version améliorée du framework Spring. Il est conçu pour simplifier le processus d'initialisation et de configuration des applications Spring afin d'aider les développeurs

Quelles sont les différences entre spring et springmvc Quelles sont les différences entre spring et springmvc Dec 29, 2023 pm 05:02 PM

La différence entre spring et springmvc : 1. Positionnement et fonctions ; 2. Fonctions de base 3. Champs d'application ; Introduction détaillée : 1. Positionnement et fonctions. Spring est un cadre de développement d'applications complet qui fournit l'injection de dépendances, la programmation orientée aspect, la gestion des transactions et d'autres fonctions. Il est conçu pour simplifier le développement d'applications au niveau de l'entreprise, et Spring MVC est le meilleur. Framework Spring. Un module qu'il contient est utilisé pour le développement d'applications Web et implémente le modèle MVC 2. Fonctions de base, etc.

Quelle est la différence entre SpringBoot et SpringMVC ? Quelle est la différence entre SpringBoot et SpringMVC ? Dec 29, 2023 pm 05:19 PM

SpringBoot et SpringMVC sont deux frameworks couramment utilisés dans le développement Java. Ils sont tous deux fournis par le framework Spring, mais ils présentent certaines différences dans leurs fonctions et leur utilisation. Cet article présentera respectivement les caractéristiques et les différences de SpringBoot et SpringMVC. 1. Caractéristiques de SpringBoot : Configuration simplifiée : SpringBoot simplifie considérablement le processus de configuration du projet grâce au principe de convention sur la configuration. Il peut configurer automatiquement les paramètres requis par le projet et les développeurs

Quelles sont les différences entre springboot et springmvc Quelles sont les différences entre springboot et springmvc Jun 07, 2023 am 10:10 AM

Les différences entre springboot et springmvc sont les suivantes : 1. Différentes significations ; 2. Différentes configurations ; 3. Différentes dépendances ; 4. Différentes périodes de développement 6. Différentes façons d'implémenter la fonction d'empaquetage JAR ; Fonction fournie ; 8. Différentes fonctions ; 9. Différents supports de communauté et de documentation ;

Utilisation de SpringMVC pour le traitement des services Web dans le développement d'API Java Utilisation de SpringMVC pour le traitement des services Web dans le développement d'API Java Jun 17, 2023 pm 11:38 PM

Avec le développement d’Internet, les services Web deviennent de plus en plus courants. En tant qu'interface de programmation d'applications, JavaAPI lance constamment de nouvelles versions pour s'adapter aux différents scénarios d'application. En tant que framework open source populaire, SpringMVC peut nous aider à créer facilement des applications Web. Cet article explique en détail comment utiliser SpringMVC pour le traitement des services Web dans le développement JavaAPI, y compris la configuration de SpringMVC, l'écriture de contrôleurs et l'utilisation de

Comparez les similitudes et les différences entre SpringBoot et SpringMVC Comparez les similitudes et les différences entre SpringBoot et SpringMVC Dec 29, 2023 am 08:30 AM

Analyser les similitudes et les différences entre SpringBoot et SpringMVC SpringBoot et SpringMVC sont des frameworks de développement très importants dans le domaine Java. Bien qu'ils fassent tous deux partie du framework Spring, il existe des différences évidentes en termes d'utilisation et de fonctionnalité. Cet article comparera SpringBoot et SpringMVC et analysera les similitudes et les différences entre eux. Tout d’abord, découvrons SpringBoot. PrintempsBo

Comment utiliser l'intercepteur SpringMVC de Java Comment utiliser l'intercepteur SpringMVC de Java May 13, 2023 pm 02:55 PM

Le rôle de l'intercepteur L'intercepteur de SpringMVC est similaire au filtre dans le développement de servlets, qui est utilisé pour pré-traiter et post-traiter le processeur. Les intercepteurs sont connectés en une chaîne dans un certain ordre, et cette chaîne est appelée chaîne d'intercepteurs (InterceptorChain). Lors de l'accès à une méthode ou à un champ intercepté, les intercepteurs de la chaîne d'intercepteurs seront appelés dans l'ordre dans lequel ils ont été précédemment définis. Les intercepteurs sont également la mise en œuvre spécifique des idées AOP. La différence entre les intercepteurs et les filtres : Filtre (Filter) Le domaine d'utilisation de l'intercepteur (Intercepter) fait partie de la spécification du servlet et peut être utilisé par n'importe quel projet JavaWeb.

See all articles