Heim Java javaLernprogramm Detaillierte Analyse der SpringMVC-Ansichten und des REST-Stils (mit Code)

Detaillierte Analyse der SpringMVC-Ansichten und des REST-Stils (mit Code)

Sep 26, 2018 pm 03:26 PM
springmvc

Dieser Artikel bietet Ihnen eine detaillierte Analyse der SpringMVC-Ansichten und des REST-Stils (mit Code). Ich hoffe, dass er Ihnen als Referenz dienen wird.

Was ist ein View Resolver?

Die beiden wichtigsten Schnittstellen, die springMVC zur Verarbeitung von Ansichten verwendet, sind ViewResolver und View.

Die Hauptfunktion von ViewResolver besteht darin, einen logischen Ansichtsnamen in eine echte Ansicht aufzulösen. In SpringMVC wird das View-Objekt verwendet, um das View-Objekt dem Client anzuzeigen, und ViewResolver konvertiert nur den logischen Ansichtsnamen eine echte Ansicht. Ein View-Objekt, das in ein Objekt aufgelöst wird.

Die Hauptfunktion der View-Schnittstelle besteht darin, Ansichten zu verarbeiten und an den Client zurückzugeben.

Der Ausführungsablauf des Ansichtsparsers:

Nachdem die Anforderungsmethode ausgeführt wurde, wird schließlich ein ModelAndView-Objekt zurückgegeben Diejenigen, die String, View, ModelMap und andere Typen zurückgeben, werden von SpingMVC schließlich intern zu einem ModelAndView-Objekt zusammengesetzt, das den logischen Namen und die Ansicht des Modellobjekts enthält. StringMVC verwendet den Ansichtsparser, um das endgültige Ansichtsobjekt abzurufen. Die endgültige Ansicht kann eine JSP-Ansicht oder eine andere Dateiformansicht sein. Dem Rendering-Prozessor ist es egal, welche Methode letztendlich angewendet wird. Der Prozessor konzentriert sich auf die Arbeit der Modelldatenerzeugung und hat immer eine vollständige Entkopplung von MVC erreicht.

Ansicht:

Die Rolle der Ansicht besteht darin, Modelldaten zu rendern und dem Benutzer die Daten im Modell in irgendeiner Form zu präsentieren. Um die Entkopplung des Ansichtsmodells und der spezifischen Implementierungstechnologie zu erreichen, definiert Sping eine Ansichtsschnittstelle. Ansichtsobjekte werden vom View Resolver instanziiert, und da Ansichten zustandslos sind, gibt es für sie keine Thread-Sicherheitsprobleme.

Häufig verwendete Ansichtsimplementierungsklassen:

InternalResourceView: Kapselt JSP-Ressourcen in eine Ansicht und ist der standardmäßig von springmvc verwendete Ansichtsparser.

JstlView: Durch die Einführung des JSTL-Pakets springmvc in ein JSP-Projekt wird dieser Parser automatisch verwendet

MapingJackJsonView: Geben Sie das Modell im Json-Modus über den ObjectMapper des Jackson Open Source Frameworks aus.

AbstractExcelView: Die abstrakte Klasse der Excel-Dokumentansicht, die ein Excel-Dokument basierend auf POI erstellt

AbstractPdfVIew: Die abstrakte Klasse der PDF-Dokumentansicht, die ein PDF-Dokument basierend auf iText erstellt

BeanNameViewResolver: Lösen Sie den Namen der logischen Ansicht in eine Bean auf, und die ID der Bean entspricht dem Namen der logischen Ansicht.

Die Rolle des View-Resolvers ist relativ einfach: Er analysiert die logische Ansicht in ein bestimmtes View-Objekt. Alle View-Resolver müssen die ViewResolver-Schnittstelle implementieren.

JSP ist die am häufigsten verwendete Ansichtstechnologie. Sie können InternalResourceView als Ansichtsparser verwenden

Solange das JSTL-Tag im Projekt eingeführt wird, konvertiert springmvc die Ansicht InternalResourceView automatisch in JstlView, die seine Unterklasse ist.

Jeder Ansichtsparser implementiert die Ordered-Schnittstelle und entwickelt ein Auftragsattribut, über das die Priorität des Parsers festgelegt werden kann. Je kleiner die Reihenfolge, desto höher die Priorität. Frühling MVC analysiert den logischen Ansichtsnamen gemäß der Priorität der Ansichtsparserreihenfolge, bis die Analyse erfolgreich ist und das Ansichtsobjekt zurückgegeben wird. Andernfalls wird eine ServletException ausgelöst

Benutzerdefinierte Ansicht:

@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>");
    }

}
Nach dem Login kopieren

Wir müssen diese benutzerdefinierte Ansicht in die View-Schnittstelle implementieren und die beiden Methoden in der Schnittstelle überschreiben. Dann deklarieren wir diese Klasse als Bean und übergeben sie zur Verwaltung an Spring. Hier konfigurieren wir einen BeanName-Resolver.

<!-- 配置BeanName解析器 -->
    <bean id="beanNameViewResolver" class="org.springframework.web.servlet.view.BeanNameViewResolver">
        <property name="order" value="1"/>
    </bean>
Nach dem Login kopieren

Dann schreiben Sie eine Anfrage. Diese Anfrage gibt den Namen der Bohne zurück. Standardmäßig ist der erste Buchstabe kleingeschrieben und wird in Kamelbuchstaben angezeigt.

@RequestMapping("myView")    public String myView(){
        System.out.println("myView load ...");        
        return "myView";
    }
Nach dem Login kopieren

Damit ist unsere benutzerdefinierte Ansicht abgeschlossen.

Aus und umleiten:

Wenn die Rückgabezeichenfolge „umleiten:<🎜“ enthält >“ oder „forward:“ führt SpringMvc eine spezielle Verarbeitung durch.

Wenn wir direkt auf die Ansicht zugreifen müssen, können wir sie so konfigurieren

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

REST-Kapitel

REST (Representational State Transfer): Das heißt, (Ressourcen-)Präsentationsschicht-Zustandsübertragung.

Ressourcen: Eine Entität im Netzwerk oder eine Information im Netzwerk. Es kann sich um einen Text, ein Lied, ein Bild usw. handeln. Sie können eine URL verwenden, um darauf zu verweisen. Jede Ressource verfügt über eine bestimmte, eindeutige URL. Um auf diese Ressource zuzugreifen, greifen Sie einfach direkt auf die URI zu.
Darstellungsebene: Die Form, in der Ressourcen dargestellt werden.
Statusübertragung: Jedes Mal, wenn eine Anfrage ausgegeben wird, stellt sie eine Interaktion zwischen dem Client und dem Server dar. Das HTTP-Protokoll ist ein zustandsloses Protokoll, d. h. alle Zustände werden serverseitig gespeichert. Wenn der Client den Server betreiben möchte, muss er bestimmte Mittel verwenden, um eine Zustandstransformation des Servers zu veranlassen. Diese Transformation basiert auf der Präsentationsschicht, es handelt sich also um eine Zustandstransformation der Präsentationsschicht.

在我们的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>
Nach dem Login kopieren

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;
}
Nach dem Login kopieren

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;
}
Nach dem Login kopieren

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;
}
Nach dem Login kopieren

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;
}
Nach dem Login kopieren

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

<!--将非mapping配置下的请求交给默认的Servlet来处理-->
<mvc:default-servlet-handler/>
<!--如果添加了默认servlet,mvc请求将无效,需要添加annotation-driven-->
<mvc:annotation-driven></mvc:annotation-driven>
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonDetaillierte Analyse der SpringMVC-Ansichten und des REST-Stils (mit Code). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Vergleich und Differenzanalyse zwischen SpringBoot und SpringMVC Vergleich und Differenzanalyse zwischen SpringBoot und SpringMVC Dec 29, 2023 am 11:02 AM

SpringBoot und SpringMVC sind beide häufig verwendete Frameworks in der Java-Entwicklung, es gibt jedoch einige offensichtliche Unterschiede zwischen ihnen. In diesem Artikel werden die Funktionen und Verwendungsmöglichkeiten dieser beiden Frameworks untersucht und ihre Unterschiede verglichen. Lassen Sie uns zunächst etwas über SpringBoot lernen. SpringBoot wurde vom Pivotal-Team entwickelt, um die Erstellung und Bereitstellung von Anwendungen auf Basis des Spring-Frameworks zu vereinfachen. Es bietet eine schnelle und einfache Möglichkeit, eigenständige, ausführbare Dateien zu erstellen

Was sind die Unterschiede zwischen SpringBoot und SpringMVC? Was sind die Unterschiede zwischen SpringBoot und SpringMVC? Dec 29, 2023 am 10:46 AM

Was ist der Unterschied zwischen SpringBoot und SpringMVC? SpringBoot und SpringMVC sind zwei sehr beliebte Java-Entwicklungsframeworks zum Erstellen von Webanwendungen. Obwohl sie häufig separat verwendet werden, sind die Unterschiede zwischen ihnen offensichtlich. Zunächst einmal kann SpringBoot als Erweiterung oder erweiterte Version des Spring-Frameworks betrachtet werden. Es soll den Initialisierungs- und Konfigurationsprozess von Spring-Anwendungen vereinfachen und Entwicklern helfen

Was sind die Unterschiede zwischen Spring und SpringMVC? Was sind die Unterschiede zwischen Spring und SpringMVC? Dec 29, 2023 pm 05:02 PM

Der Unterschied zwischen Spring und SpringMVC: 1. Positionierung und Funktionen; 3. Anwendungsfelder; Detaillierte Einführung: 1. Positionierung und Funktionen. Spring ist ein umfassendes Anwendungsentwicklungs-Framework, das Abhängigkeitsinjektion, aspektorientierte Programmierung, Transaktionsverwaltung und andere Funktionen bietet. Es soll die Entwicklung von Anwendungen auf Unternehmensebene vereinfachen Ein darin enthaltenes Modul wird für die Entwicklung von Webanwendungen verwendet und implementiert das MVC-Muster 2. Kernfunktionen und so weiter.

Was ist der Unterschied zwischen SpringBoot und SpringMVC? Was ist der Unterschied zwischen SpringBoot und SpringMVC? Dec 29, 2023 pm 05:19 PM

SpringBoot und SpringMVC sind zwei Frameworks, die häufig in der Java-Entwicklung verwendet werden. Sie werden beide vom Spring-Framework bereitgestellt, weisen jedoch einige Unterschiede in Funktionen und Verwendung auf. In diesem Artikel werden die Merkmale und Unterschiede von SpringBoot bzw. SpringMVC vorgestellt. 1. Funktionen von SpringBoot: Vereinfachte Konfiguration: SpringBoot vereinfacht den Projektkonfigurationsprozess erheblich durch das Prinzip der Konvention vor der Konfiguration. Es kann die für das Projekt und die Entwickler erforderlichen Parameter automatisch konfigurieren

Was sind die Unterschiede zwischen Springboot und SpringMVC? Was sind die Unterschiede zwischen Springboot und SpringMVC? Jun 07, 2023 am 10:10 AM

Die Unterschiede zwischen Springboot und SpringMVC sind: 1. Unterschiedliche Konfigurationen; bereitgestellte Funktion; 8. Verschiedene Funktionen; 9. Unterschiedliche Community- und Dokumentationsunterstützung; 10. Ob Bereitstellungsdeskriptoren erforderlich sind.

Verwendung von SpringMVC für die Webdienstverarbeitung in der Java-API-Entwicklung Verwendung von SpringMVC für die Webdienstverarbeitung in der Java-API-Entwicklung Jun 17, 2023 pm 11:38 PM

Mit der Entwicklung des Internets werden Webdienste immer häufiger eingesetzt. Als Anwendungsprogrammierschnittstelle bringt JavaAPI ständig neue Versionen auf den Markt, um sich an unterschiedliche Anwendungsszenarien anzupassen. Als beliebtes Open-Source-Framework kann SpringMVC uns dabei helfen, auf einfache Weise Webanwendungen zu erstellen. In diesem Artikel wird ausführlich erläutert, wie SpringMVC für die Webdienstverarbeitung in der JavaAPI-Entwicklung verwendet wird, einschließlich der Konfiguration von SpringMVC, dem Schreiben von Controllern und der Verwendung

Vergleichen Sie die Ähnlichkeiten und Unterschiede zwischen SpringBoot und SpringMVC Vergleichen Sie die Ähnlichkeiten und Unterschiede zwischen SpringBoot und SpringMVC Dec 29, 2023 am 08:30 AM

Analyse der Ähnlichkeiten und Unterschiede zwischen SpringBoot und SpringMVC SpringBoot und SpringMVC sind sehr wichtige Entwicklungsframeworks im Java-Bereich. Obwohl beide Teil des Spring-Frameworks sind, gibt es einige offensichtliche Unterschiede in der Verwendung und Funktionalität. In diesem Artikel werden SpringBoot und SpringMVC verglichen und die Ähnlichkeiten und Unterschiede zwischen ihnen analysiert. Lassen Sie uns zunächst etwas über SpringBoot lernen. SpringBo

So verwenden Sie den SpringMVC-Interceptor von Java So verwenden Sie den SpringMVC-Interceptor von Java May 13, 2023 pm 02:55 PM

Die Rolle des Interceptors von SpringMVC ähnelt dem Filter in der Servlet-Entwicklung, der zur Vor- und Nachbearbeitung des Prozessors verwendet wird. Abfangjäger werden in einer bestimmten Reihenfolge zu einer Kette verbunden, und diese Kette wird als Abfangkette (InterceptorChain) bezeichnet. Wenn auf eine abgefangene Methode oder ein abgefangenes Feld zugegriffen wird, werden die Interceptoren in der Interceptor-Kette in der Reihenfolge aufgerufen, in der sie zuvor definiert wurden. Abfangjäger sind auch die konkrete Umsetzung von AOP-Ideen. Der Unterschied zwischen Interceptoren und Filtern: Filter (Filter) Der Verwendungsbereich von Interceptor (Intercepter) ist Teil der Servlet-Spezifikation und kann von jedem JavaWeb-Projekt verwendet werden

See all articles