Programmēšana

Vienkāršs pavasara HTTP tālvadības piemērs

Es izmantoju šo emuāra ierakstu, lai ar vienkāršu piemēru parādītu Spring Framework HTTP tālvadības izmantošanu. Par šo tēmu ir daudz tiešsaistes resursu, tāpēc mans nolūks ir sniegt ļoti vienkāršu, bet pilnīgu pavasara HTTP tālvadības izmantošanu ar klientiem, kuri nav pārlūkprogrammas.

Pavasara pieeja HTTP tālvadībai ļauj klientiem sazināties ar pavasara mitināto servera kodu, izmantojot HTTP, klienta kodam neprasot nekādas zināšanas par HTTP. Tā vietā klienta Java kods tikai "redz" parastus ar uzņēmējdarbību saistītus Java objektus (parasti saskarnes), nevis HTTP specifiskus objektus.

Pavasara HTTP tālvadībai parasti ir nepieciešama Spring un Java gan servera, gan klienta pusē. Tomēr, ja šīs divas prasības var izpildīt, pavasara HTTP tālvadība ir viegli piemērojama.

Šīs darbības ļauj HTTP sazināties starp pavasarī mitinātajiem klientiem un serveriem. Pēc tam, kad vispirms īsi izklāstīju soļus, es tos sīkāk iedziļināšos (ieskaitot kodu paraugus).

  1. Izveidojiet vai izmantojiet esošu pavasara pupiņu, kas parasti ievieš Java saskarni.

    Tas nav nekas īpašs HTTP tālvadībai, un tas ir tas pats solis, kas jums jāveic, lai pavasarī veiktu lielāko daļu lietu (ievērojams izņēmums ir

    Pavasara JDBC

    kas neprasa pavasara pupiņu izmantošanu).

  2. Izveidojiet pavasara XML konfigurācijas failu, lai 1. solī izveidoto pupiņu saistītu ar Spring lietojumprogrammas kontekstu.

    Tāpat kā 1. solī, arī šis XML fails nav nekas īpašs pavasara HTTP tālvadībai, bet ir kopīgs gandrīz visām Spring Framework vadiem un konfigurācijai.

  3. Izveidot vai pievienot web.xml failu.

    Šis trešais solis ir pirmais solis, kas vairāk attiecas uz pavasara HTTP tālvadību, taču joprojām ir parasti lietojams ar

    Pavasara MVC ietvars

    . Šis solis ietver servletu klases un URL kartējumu pievienošanu, kā parasti izmanto kopā

    Java EE

    serveles

    un

    JavaServer lapas

    . Vissvarīgākā šī posma sastāvdaļa ir pavasara norādīšana

    Dispečerservets

    . Šajā ir paredzēta arī izvēles "saite"

    web.xml

    failu konteksta konfigurācijas vietā, kur atrodas un tiek izmantots viens vai vairāki Spring XML lietojumprogrammas konteksta faili.

  4. Izveidojiet pavasara servleta konteksta failu.

    Šis XML fails izskatās ļoti līdzīgs "parastam" pavasara lietojumprogrammas konteksta XML konfigurācijas failam, taču tā nosaukums ir noteikts pēc servletīklu nosaukuma, kam seko saite un vārds servlet. Citiem vārdiem sakot, ja servletu programmā

    web.xml

    fails, tiks izsaukts šis pavasara servleta konfigurācijas fails

    somewebthing-servlet.xml

    . Šis fails satur

    HttpInvokerServiceExporter

    (daļa no tā, kas īpaši attiecas uz HTTP tālvadību, uz kuru attiecas šis emuāra ieraksts) un URL kartēšanas informācija.

  5. Pārbaude!

    Lai gan vienkāršais klients rakstīs, paturot prātā HTTP, un šķiet, ka tas izmanto tikai Java objektus, tas faktiski izsauks pakalpojumu, izmantojot HTTP. Tas tiks "pierādīts", palaižot klientu bez izvietotā pakalpojuma un skatoties iegūto HTTP kļūdas kodu.

Tagad es pievērsīšos iepriekš minēto darbību detalizētākai demonstrēšanai un mēģināšu tās konkrēti ilustrēt ar kodu paraugiem.

1. solis: Pupiņa un tās saskarne

Šis solis neatšķiras no Java klašu un saskarņu definēšanas, kuras tās ievieš lietošanai kopā ar Spring. Šajos kodu sarakstos parādīta saskarne (StateCapitalServiceIF) un īstenošanas klase (StateCapitalService), kas izmantots šajā piemērā.

--- StateCapitalServiceIF.java ---

paketes piemēri.pavasarishttp; importēt java.io.Serializable; / ** * Valsts kapitāla pakalpojuma saskarne, kuru klients izmantos, lai piekļūtu * servera puses funkcionalitātei, izmantojot HTTP. * / publiskā saskarne StateCapitalServiceIF paplašina Serializējamo {/ ** * Norādiet valsts galvaspilsētu, kuras nosaukums ir norādīts. * * @param stateName Valsts nosaukums, kuras kapitāls ir vēlams. * @return Norādītās valsts kapitāls; null, ja nav atrasts. * / public string virkne getCapital (galīgā virknes stāvokļa nosaukums); } 

--- StateCapitalService.java ---

paketes piemēri.pavasarishttp; importēt java.util.Map; / ** * Funkcionalitātes ieviešana, kas jāveic pēc klienta izsaukuma, izmantojot * HTTP. * / public class StateCapitalService ievieš StateCapitalServiceIF {Map statesAndCapitals = null; public StateCapitalService () {} / ** * Iestatīt manām valstīm štatu kartēšanu. * * @param statesAndCapitals Norāda uz valstu galvaspilsētu kartēšanu. * / public void setStatesAndCapitals (galīgās kartes statesAndCapitals) {this.statesAndCapitals = statesAndCapitals; } / ** * Norādiet valsts galvaspilsētu, kuras nosaukums ir norādīts. * * @param stateName Valsts nosaukums, kuras kapitāls ir vēlams. * @return Norādītās valsts kapitāls; null, ja nav atrasts. * / public string virkne getCapital (galīgā virknes stāvokļa nosaukums) {return this.statesAndCapitals.get (stateName); }} 

2. solis: Pavasara lietojumprogrammas konteksta konfigurācijas fails

Man patīk pavasara HTTP specifisko konfigurāciju turēt atsevišķi no pupiņu XML konfigurācijas. Tāpēc pupiņu konfigurācija ir tieši tāda, kādu to parasti redzētu ar Spring. Lai konfigurētu StateCapitalService klasē iepriekš, tiek izmantota šāda konfigurācija:

--- pavasaris-http-config.xml ---

Pagaidām nekas īpašs HTTP tālvadībai nav izdarīts. Faktiski pupiņu, tās saskarni un XML lietojumprogrammas konteksta konfigurāciju visus varētu vadīt parastā Java SE klase, piemēram, tā, kas parādīta zemāk:

--- MainServiceAppContext.java ---

paketes piemēri.pavasarishttp; importēt org.springframework.context.ApplicationContext; importēt org.springframework.context.support.ClassPathXmlApplicationContext; / ** * Parāda, kā pavasara pupas var izmantot bez HTTP iesaistīšanās. * / public class MainServiceAppContext {public static void printStateInfo (final StateCapitalServiceIF stateCapitalMapper, final String state) {System.out.println ("" + state + "kapitāls ir" + stateCapitalMapper.getCapital (state)); } / ** * @param argumentē komandrindas argumentus * / public static void main (String [] args) {final ApplicationContext context = new ClassPathXmlApplicationContext ("piemēri / springhttp / spring-http-config.xml"); StateCapitalServiceIF stateCapitalMapper = (StateCapitalServiceIF) context.getBean ("stateCapitalService"); printStateInfo (stateCapitalMapper, "Alabama"); printStateInfo (stateCapitalMapper, "Kolorādo"); }} 

3. solis: web.xml Fails

Šis web.xml fails ir pazīstams ikvienam, kurš ir izstrādājis Java EE tīmekļa lietojumprogrammu. The web.xml lietots šajā piemērā, tiek parādīts nākamais.

  Vienkāršs pavasara HTTP tālvadības piemērs Tas ir domāts kā ļoti vienkāršs pavasara HTTP attālinātās iespējas izmantošanas piemērs. statesCapitals org.springframework.web.servlet.DispatcherServlet 1 statesCapitals / statesCapitals org.springframework.web.context.ContextLoaderListener contextConfigLocation /WEB-INF/examples/springhttp/spring-http-config.x 

4. solis: Serversīklietnes konteksta konfigurācijas fails

Tā kā servletīkls šajā piemērā ir nosaukts "statesCapitals", tiek nosaukts pavasara servleta konfigurācijas fails statesCapitals-servlet.xml jāsniedz. Tas tiek parādīts nākamais:

--- statesCapitals-servlet.xml ---

   piemēri.springhttp.StateCapitalServiceIF httpStateCapitalService 

5. solis: tā pārbaude

Mums ir jākonfigurē klients saziņai, izmantojot HTTP, ar mūsu servera puses lietojumprogrammu. Konfigurācija tam ir ietverta pavasaris-http-klients-config.xml šim piemēram un tiek parādīts nākamais:

--- pavasaris-http-klients-config.xml ---

   // localhost: 8080 / SpringHTTPExample / statesCapitals example.springhttp.StateCapitalServiceIF 

Klasē ir klienta kods, kas izmanto iepriekš minēto XML, lai palaistu Spring konteineru un izsauktu servera puses kodu, izmantojot HTTP. HttpClient un nākamais tiek parādīts kods:

--- HttpClient.java ---

paketes piemēri.pavasarishttp.klients; importa piemēri.springhttp.StateCapitalServiceIF; importēt org.springframework.context.ApplicationContext; importēt org.springframework.context.support.ClassPathXmlApplicationContext; / ** * Šī klase parāda pavasara HTTP pakļautā pakalpojuma klientu un parāda, * kā klients mijiedarbojas ar serveri tā, it kā izmantojot parastos Java objektus *, nevis izmantojot kaut ko īpašu HTTP. * / public class HttpClient {public static void printStateInfo (final StateCapitalServiceIF stateCapitalMapper, final String state) {System.out.println ("+ valsts + kapitāls ir" + stateCapitalMapper.getCapital (štats)); } public static void main (final String [] argumenti) {final ApplicationContext context = new ClassPathXmlApplicationContext ("piemēri / springhttp / klients / pavasaris-http-klients-config.xml"); gala StateCapitalServiceIF stateCapitalService = (StateCapitalServiceIF) context.getBean ("stateCapitalProxyService"); printStateInfo (stateCapitalService, "Kolorādo"); printStateInfo (stateCapitalService, "Alabama"); }} 
$config[zx-auto] not found$config[zx-overlay] not found