Analyse détaillée des vues SpringMVC et du style REST (avec code)
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>"); } }
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>
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"; }
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 />
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>
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; }
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; }
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; }
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; }
重复一次第一章的内容在我们springmvc拦截所有请求会导致css,js,图片等不能引入我们可以这样解决:
<!--将非mapping配置下的请求交给默认的Servlet来处理--> <mvc:default-servlet-handler/> <!--如果添加了默认servlet,mvc请求将无效,需要添加annotation-driven--> <mvc:annotation-driven></mvc:annotation-driven>
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)

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.

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

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.

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

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 ;

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

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

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.
