国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

Heim Java JavaBase Allgemeine Anmerkungen zu SpringMVC

Allgemeine Anmerkungen zu SpringMVC

Jun 04, 2020 pm 04:35 PM
java

Allgemeine Anmerkungen zu SpringMVC

Allgemeine Anmerkungen zu SpringMVC

1. @Controller

In SpringMVC ist der Controller verantwortlich Zur Verarbeitung von Anforderungen, die von DispatcherServlet verteilt werden, werden die vom Benutzer angeforderten Daten nach der Verarbeitung durch die Gesch?ftsverarbeitungsschicht in ein Modell gekapselt und das Modell dann zur Anzeige an die entsprechende Ansicht zurückgegeben. SpringMVC bietet eine sehr einfache M?glichkeit, einen Controller zu definieren. Sie müssen keine bestimmte Klasse erben oder eine bestimmte Schnittstelle implementieren. Sie müssen lediglich @Controller verwenden, um eine Klasse als Controller zu markieren, und dann einige Anmerkungen wie @ verwenden. RequestMapping und @RequestParam, um die Zuordnung zwischen URL-Anfragen und Controller-Methoden zu definieren, damit die Au?enwelt auf den Controller zugreifen kann. Darüber hinaus ist Controller nicht direkt von HttpServlet-Objekten wie HttpServletRequest und HttpServletResponse abh?ngig. Sie k?nnen flexibel über die Methodenparameter von Controller abgerufen werden.

@Controller wird zum Markieren einer Klasse verwendet, und die damit markierte Klasse ist ein SpringMVC-Controller-Objekt. Der Dispatch-Prozessor scannt die Methode der annotierten Klasse und erkennt, ob die Methode mit @RequestMapping annotiert ist. @Controller definiert lediglich eine Controller-Klasse, und die mit @RequestMapping annotierte Methode ist der Prozessor, der die Anforderung tats?chlich verarbeitet. Die blo?e Verwendung der @Controller-Markierung für eine Klasse kann nicht wirklich sagen, dass es sich um eine Controller-Klasse von SpringMVC handelt, da Spring sie derzeit nicht erkennt. Wie nutzen Sie Spring, um es zu erkennen? Zu diesem Zeitpunkt müssen wir diese Controller-Klasse zur Verwaltung an Spring übergeben. Es gibt zwei M?glichkeiten:

(1) Definieren Sie das Bean-Objekt von MyController in der SpringMVC-Konfigurationsdatei.

(2) Teilen Sie Spring in der SpringMVC-Konfigurationsdatei mit, wo sich der mit @Controller gekennzeichnete Controller befindet.

<!--方式一-->
<bean class="com.host.app.web.controller.MyController"/>
<!--方式二-->
< context:component-scan base-package = "com.host.app.web" />//路徑寫到controller的上一層(掃描包詳解見下面淺析)

2. @RequestMapping

RequestMapping ist eine Annotation, die zur Verarbeitung der Anforderungsadressenzuordnung verwendet wird und für Klassen oder Methoden verwendet werden kann. Bei einer Klasse bedeutet dies, dass alle Methoden in der Klasse, die auf Anfragen antworten, diese Adresse als übergeordneten Pfad verwenden.

Die RequestMapping-Annotation hat sechs Attribute. Nachfolgend unterteilen wir sie zur Erl?uterung in drei Kategorien (entsprechende Beispiele finden Sie weiter unten).

1. Wert, Methode;

Wert: Geben Sie die tats?chliche Adresse der Anfrage an (wird sp?ter erl?utert). : Geben Sie den Typ der Anforderungsmethode, GET, POST, PUT, DELETE usw. an , wie application/json , text/html;

erzeugt: Gibt den zurückzugebenden Inhaltstyp an. Er wird nur zurückgegeben, wenn der (Accept)-Typ im Anforderungsheader den angegebenen Typ enth?lt

3. Parameter, Header

Parameter: Geben Sie an, dass die Anfrage bestimmte Parameterwerte enthalten muss, bevor diese Methode sie verarbeiten kann.

Header: Die angegebene Anfrage muss bestimmte angegebene Header-Werte enthalten, damit diese Methode die Anfrage verarbeiten kann.

3. @Resource und @Autowired

@Resource und @Autowired werden beide für die Bean-Injection verwendet Das Paket ist javax.annotation.Resource und muss importiert werden, aber Spring unterstützt die Injektion dieser Annotation.

1. Gemeinsame Punkte

Beide k?nnen auf Felder und Setter-Methoden geschrieben werden. Wenn beide in die Felder geschrieben werden, besteht keine Notwendigkeit, Setter-Methoden zu schreiben.

2. Unterschiede

(1) @Autowired

@Autowired ist eine von Spring bereitgestellte Annotation und muss das Paket org.springframework.beans.factory.annotation importieren. Autowired; Nur nach byType injizieren.

public class TestServiceImpl {
    // 下面兩種@Autowired只要使用一種即可
    @Autowired
    private UserDao userDao; // 用于字段上
    
    @Autowired
    public void setUserDao(UserDao userDao) { // 用于屬性的方法上
        this.userDao = userDao;
    }
}

Die Annotation @Autowired setzt abh?ngige Objekte nach Typ (byType) zusammen. Standardm??ig muss das abh?ngige Objekt vorhanden sein. Wenn Nullwerte zul?ssig sind, kann sein erforderliches Attribut auf false gesetzt werden. Wenn wir nach Namen (byName) assemblieren m?chten, k?nnen wir ihn in Verbindung mit der Annotation @Qualifier verwenden. Wie folgt:

public class TestServiceImpl {
    @Autowired
    @Qualifier("userDao")
    private UserDao userDao; 
}

(2) @Resource

@Resource wird standardm??ig automatisch von ByName injiziert, von J2EE bereitgestellt und muss das Paket javax.annotation.Resource importieren. @Resource verfügt über zwei wichtige Attribute: Name und Typ. Spring l?st das Namensattribut der @Resource-Annotation in den Namen der Bean auf, und das Typattribut l?st sich in den Typ der Bean auf. Wenn daher das Namensattribut verwendet wird, wird die automatische Injektionsstrategie byName verwendet, und wenn das Typattribut verwendet wird, wird die automatische Injektionsstrategie byType verwendet. Wenn weder der Name noch das Typattribut angegeben sind, wird die automatische Injektionsstrategie byName über den Reflexionsmechanismus verwendet.

public class TestServiceImpl {
    // 下面兩種@Resource只要使用一種即可
    @Resource(name="userDao")
    private UserDao userDao; // 用于字段上
    
    @Resource(name="userDao")
    public void setUserDao(UserDao userDao) { // 用于屬性的setter方法上
        this.userDao = userDao;
    }
}

Hinweis: Es ist am besten, @Resource auf die Setter-Methode zu setzen, da dies eher dem objektorientierten Denken entspricht und Attribute über Set und Get verwaltet, anstatt Attribute direkt zu bearbeiten.

@Resource-Assembly-Sequenz:

① Wenn Name und Typ gleichzeitig angegeben werden, wird die einzige passende Bean aus dem Spring-Kontext für die Assemblierung gefunden gefunden, wird eine Ausnahme ausgel?st.

② Wenn der Name angegeben ist, wird die Bean, die dem Namen (ID) entspricht, aus dem Kontext für die Assembly gesucht. Wenn sie nicht gefunden wird, wird eine Ausnahme ausgel?st.

③ Wenn der Typ angegeben ist, wird eine ?hnliche passende eindeutige Bean aus dem Kontext für die Assemblierung gefunden. Wenn keine oder mehr als eine Bean gefunden wird, wird eine Ausnahme ausgel?st.

④如果既沒有指定name,又沒有指定type,則自動按照byName方式進行裝配;如果沒有匹配,則回退為一個原始類型進行匹配,如果匹配則自動裝配。

@Resource的作用相當于@Autowired,只不過@Autowired按照byType自動注入。

4、@ModelAttribute和 @SessionAttributes

代表的是:該Controller的所有方法在調用前,先執(zhí)行此@ModelAttribute方法,可用于注解和方法參數(shù)中,可以把這個@ModelAttribute特性,應用在BaseController當中,所有的Controller繼承BaseController,即可實現(xiàn)在調用Controller時,先執(zhí)行@ModelAttribute方法。

@SessionAttributes即將值放到session作用域中,寫在class上面。

具體示例參見下面:使用 @ModelAttribute 和 @SessionAttributes 傳遞和保存數(shù)據(jù)

5、@PathVariable

用于將請求URL中的模板變量映射到功能處理方法的參數(shù)上,即取出uri模板中的變量作為參數(shù)。如:

@Controller  
public class TestController {  
     @RequestMapping(value="/user/{userId}/roles/{roleId}",method = RequestMethod.GET)  
     public String getLogin(@PathVariable("userId") String userId,  
         @PathVariable("roleId") String roleId){  
         System.out.println("User Id : " + userId);  
         System.out.println("Role Id : " + roleId);  
         return "hello";  
     }  
     @RequestMapping(value="/product/{productId}",method = RequestMethod.GET)  
     public String getProduct(@PathVariable("productId") String productId){  
           System.out.println("Product Id : " + productId);  
           return "hello";  
     }  
     @RequestMapping(value="/javabeat/{regexp1:[a-z-]+}",  
           method = RequestMethod.GET)  
     public String getRegExp(@PathVariable("regexp1") String regexp1){  
           System.out.println("URI Part 1 : " + regexp1);  
           return "hello";  
     }  
}

6、@requestParam

@requestParam主要用于在SpringMVC后臺控制層獲取參數(shù),類似一種是request.getParameter("name"),它有三個常用參數(shù):defaultValue = "0", required = false, value = "isApp";defaultValue 表示設置默認值,required 銅過boolean設置是否是必須要傳入的參數(shù),value 值表示接受的傳入的參數(shù)類型。

7、@ResponseBody

作用: 該注解用于將Controller的方法返回的對象,通過適當?shù)腍ttpMessageConverter轉換為指定格式后,寫入到Response對象的body數(shù)據(jù)區(qū)。

使用時機:返回的數(shù)據(jù)不是html標簽的頁面,而是其他某種格式的數(shù)據(jù)時(如json、xml等)使用;

8、@Component

相當于通用的注解,當不知道一些類歸到哪個層時使用,但是不建議。

9、@Repository

用于注解dao層,在daoImpl類上面注解。

?推薦教程:《Java教程



Das obige ist der detaillierte Inhalt vonAllgemeine Anmerkungen zu SpringMVC. 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

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

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.

Clothoff.io

Clothoff.io

KI-Kleiderentferner

Video Face Swap

Video Face Swap

Tauschen Sie Gesichter in jedem Video mühelos mit unserem v?llig kostenlosen KI-Gesichtstausch-Tool aus!

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)

Hei?e Themen

PHP-Tutorial
1502
276
Wie gehe ich mit Transaktionen in Java mit JDBC um? Wie gehe ich mit Transaktionen in Java mit JDBC um? Aug 02, 2025 pm 12:29 PM

Um JDBC -Transaktionen korrekt zu verarbeiten, müssen Sie zun?chst den automatischen Komiti -Modus ausschalten und dann mehrere Vorg?nge ausführen und schlie?lich entsprechend den Ergebnissen festlegen oder rollen. 1. Nennen Sie Conn.SetAutoCommit (False), um die Transaktion zu starten. 2. Führen Sie mehrere SQL -Operationen aus, z. B. einfügen und aktualisieren. 3. Rufen Sie Conn.Commit () an, wenn alle Vorg?nge erfolgreich sind, und rufen Sie Conn.Rollback () auf, wenn eine Ausnahme auftritt, um die Datenkonsistenz zu gew?hrleisten. Gleichzeitig sollten Try-with-Ressourcen verwendet werden, um Ressourcen zu verwalten, Ausnahmen ordnungsgem?? zu behandeln und Verbindungen zu schlie?en, um Verbindungsleckage zu vermeiden. Darüber hinaus wird empfohlen, Verbindungspools zu verwenden und Save -Punkte zu setzen, um teilweise Rollback zu erreichen und Transaktionen so kurz wie m?glich zu halten, um die Leistung zu verbessern.

Wie arbeite man mit Kalender in Java? Wie arbeite man mit Kalender in Java? Aug 02, 2025 am 02:38 AM

Verwenden Sie Klassen im Java.Time -Paket, um das alte Datum und die Kalenderklassen zu ersetzen. 2. Erhalten Sie das aktuelle Datum und die aktuelle Uhrzeit durch LocalDate, LocalDatetime und Local Time; 3. Erstellen Sie ein bestimmtes Datum und eine bestimmte Uhrzeit mit der von () Methode; 4.. Verwenden Sie die Plus/Minus -Methode, um die Zeit nicht zu erh?hen und zu verkürzen. 5. Verwenden Sie ZonedDatetime und zoneId, um die Zeitzone zu verarbeiten. 6. Format und analysieren Sie Datumszeichenfolgen über DateTimeFormatter; 7. Verwenden Sie sofortige, um bei Bedarf mit den alten Datumstypen kompatibel zu sein. Die Verarbeitung der Datum in der modernen Java sollte der Verwendung von Java.Timeapi vorrangig machen, was klare, unver?nderliche und linear ist

Vergleich von Java Frameworks: Spring Boot vs Quarkus gegen Micronaut Vergleich von Java Frameworks: Spring Boot vs Quarkus gegen Micronaut Aug 04, 2025 pm 12:48 PM

Pre-Formancetartuptimemoryusage, QuarkusandmicronautleadduToCompile-Time-foringandgraalvSupport, WithQuarkusofttenperformLightBetterin serverloser Szenarien.2. Thyvelopecosystem,

Verst?ndnis von Netzwerkports und Firewalls Verst?ndnis von Netzwerkports und Firewalls Aug 01, 2025 am 06:40 AM

Networkportsandfirewallsworktogethertoenablecommunicationwhileensuringsecurity.1.Networkportsarevirtualendpointsnumbered0–65535,withwell-knownportslike80(HTTP),443(HTTPS),22(SSH),and25(SMTP)identifyingspecificservices.2.PortsoperateoverTCP(reliable,c

Wie funktioniert die Müllsammlung in Java? Wie funktioniert die Müllsammlung in Java? Aug 02, 2025 pm 01:55 PM

Die Müllsammlung von Java (GC) ist ein Mechanismus, der automatisch den Speicher verwaltet, der das Risiko eines Speicherlecks verringert, indem unerreichbare Objekte zurückgeführt werden. 1.GC beurteilt die Zug?nglichkeit des Objekts aus dem Stammobjekt (z. B. Stapelvariablen, aktive Threads, statische Felder usw.) und nicht erreichbare Objekte als Müll markiert. 2. Basierend auf dem markierten Algorithmus markieren Sie alle erreichbaren Objekte und l?schen Sie nicht markierte Objekte. 3.. Verfolgen Sie eine Generationskollektionsstrategie: Die neue Generation (Eden, S0, S1) führt h?ufig MollGC aus; Die ?lteren Menschen erzielen weniger, dauert jedoch l?nger, um MajorGC durchzuführen. MetaPace speichert Klassenmetadaten. 4. JVM bietet eine Vielzahl von GC -Ger?ten: SerialGC ist für kleine Anwendungen geeignet; ParallelgC verbessert den Durchsatz; CMS reduziert sich

Verwenden von HTML `Input` -Typen für Benutzerdaten Verwenden von HTML `Input` -Typen für Benutzerdaten Aug 03, 2025 am 11:07 AM

Durch die Auswahl des richtigen HTMlinput -Typs kann die Datengenauigkeit verbessert, die Benutzererfahrung verbessert und die Benutzerfreundlichkeit verbessert werden. 1. W?hlen Sie die entsprechenden Eingabetypen gem?? dem Datentyp aus, z. B. Text, E -Mail, Tel, Nummer und Datum, die automatisch überprüft und an die Tastatur anpassen k?nnen. 2. Verwenden Sie HTML5, um neue Typen wie URL, Farbe, Reichweite und Suche hinzuzufügen, die eine intuitivere Interaktionsmethode bieten k?nnen. 3.. Verwenden Sie Platzhalter und erforderliche Attribute, um die Effizienz und Genauigkeit der Formulierung zu verbessern. Es sollte jedoch beachtet werden, dass der Platzhalter das Etikett nicht ersetzen kann.

Vergleich von Java -Build -Werkzeugen: Maven vs. Gradle Vergleich von Java -Build -Werkzeugen: Maven vs. Gradle Aug 03, 2025 pm 01:36 PM

GradleStheBetterChoiceFormostnewProjectsDuetoitSuperiorFlexibilit?t, Leistung und ModerntoolingSupport.1.GRADLE'SGROOVY/KOTLINDSLISMORECONCISEANDEIPRESSIVETHANMANMANBOSEXML.2.GRAGRECONCISEANDEPRPRESSIVETHANMAVENSVOSEXML.2.

Gehen Sie mit einer Beispielverschiebung erkl?rt Gehen Sie mit einer Beispielverschiebung erkl?rt Aug 02, 2025 am 06:26 AM

Auf Defer wird verwendet, um bestimmte Vorg?nge auszuführen, bevor die Funktion zurückgibt, z. B. die Reinigungsressourcen. Die Parameter werden sofort bewertet, wenn sie aufgeschoben werden, und die Funktionen werden in der Reihenfolge von Last-In-First-Out (LIFO) ausgeführt. 1. Mehrere Defers werden in umgekehrter Reihenfolge der Erkl?rungen ausgeführt. 2. h?ufig für die sichere Reinigung wie das Schlie?en von Dateien verwendet; 3. Der benannte Rückgabewert kann ge?ndert werden; V. 5. Vermeiden Sie den Missbrauch von Verschiebungen in Schleifen, um Ressourcenleckage zu verhindern. Die korrekte Verwendung kann die Sicherheit und die Lesbarkeit der Code verbessern.

See all articles