Ce este servlet Web

aplicații Internet în JAVA

protocoale de rețea

Deci, este ușor să încheie - Web-server este un program special care rulează pe calculatorul dumneavoastră și are un port specific. După cum sa menționat mai sus, cel mai popular portul - 80.







HTTP - cine este?

Și acum câteva cuvinte despre HTTP. HTTP - este Hypertext Transfer Protocol - Hypertext Transfer Protocol. În general, nu se transmite unele hipertext ciudat, iar textul cel mai comun, dar odată ce a fost numit așa, atunci așa să fie. Hypertext devine atunci când pokazvaet browser-ul. Este browser-ul, în conformitate cu tag-uri (vom vorbi despre ele mai târziu) formatează textul face referință (aceasta este ceea ce face textul hipertext), prezinta desene, etc.
Atunci când o aplicație creează o conexiune TCP / IP cu o altă aplicație (sau pe alt calculator din aceeași dumneavoastră), acesta poate fi imaginat ca un fel de țeavă, care este acum în ambele direcții pot fi transmise bytes.
HTTP este doar descrie ce octeți (caractere), și în ce ordine ar trebui să fie transmise către client și server să înțeleagă reciproc. HTTP este, probabil, una dintre cele mai simple protocoale. Astăzi, există două versiuni ale protocolului HTTP - 1.0 și 1.1. Cele mai frecvente sunt comenzi GET și POST. Formatul Cererea este după cum urmează:

URL-ul include calea către resursa și parametrii care sunt transmise după calea. Am pus un semn de întrebare și apoi du-te pereche <имя>=<значение> prin semnul . Intr-un fel

După cum puteți vedea, aici am solicitat resurse / RFS / spectacol și să treacă parametrii showName și secondLetter.

Primul cuvânt al servlet

Ce este un servlet. Descrieți pe scurt activitatea servlet, puteți: Web-server, care este capabil de a lucra cu servlete, Java-mașină începe, care, la rândul său execută servlet, iar servlet trimite datele pe care le va genera. Ie atunci când o cerere vine de pe un server client utilizând un fișier de configurare special poate determina care servlet pentru a efectua servlet este executat și creează o pagină HTML care serverul trimite la client.
Și acum, încă o dată, și încet 🙂
Pe server apare o solicitare de la o cerere de client conține în sine URL-ul și parametrii. Serverul are un fișier special de configurare, pe care el spune despre modul în care un servlet trebuie să se facă în cazul sosirii unui anumit URL. Un servlet este executat (în cazul în care puteți utiliza setările) și creează pagina HTML care este trimis la client.
Serverul este, în esență, un recipient (acum componente non-vizuale), care încarcă Servlets, le execută, de asteptare anumite metode și a obține rezultatele lor, trimite-l la client.
Astfel, servlet - un Java clasa care se extinde, în general, din clasa • HttpServlet și are prioritate față de metodele:
• doGet - dacă vrem să răspundă cererii servlet GET.
• doPost - dacă vrem să răspundă la cererea servlet POST.
• doPut, doDelete - dacă vrem să răspundă la UPT servlet și DELETE cerere (există în HTTP). Aceste metode sunt rareori puse în aplicare, deoarece Echipa proprii este, de asemenea, foarte rar.
• init, distruge - pentru managementul la momentul servlet, și momentul distrugerii sale.

Dacă aveți nevoie pentru a prinde toate comenzile, cea mai simplă metodă este de a redefini serviciu. Această metodă se numește atunci când cererea vine de la client. In apare HttpServlet interogare parsarea și metoda doGet cauzate conform respectivei comenzi, doPost etc.
Vom scrie un servlet foarte simplu, care afișează tradiționale Bună ziua, lume!.
Dar, mai întâi avem nevoie pentru a rula Web-server care acceptă servleturile. Cel mai simplu pentru noi să Tomcat.

HTML și XML

Pentru înțelegerea în continuare a materialului, trebuie să aveți unele cunoștințe despre cele două limbi de markup - HTML (Hyper Text Markup Language) și XML (Extensible Markup Language).

Într-un cuvânt - cele două limbi folosesc un sistem de „tag-uri.“ Tag - este un set de caractere, care este inclus în paranteze unghiulare "<«, «>“. De exemplu:

După cum vedeți, am „descoperit“ tag-ul B și după textul „închide“ ea. În principiu, nimic complicat. Este important, care va face browser-ul (sau în alte aplicații), care îndeplinesc următoarea secvență. Pentru HTML, acest lucru înseamnă că textul care nazhoditsya interior ar trebui să fie izolate „bold“ font.
Este important să se înțeleagă că HTML - este doar o modalitate de a „spune“ browser-ului cum să formatați textul. Ie folosind diferite etichete specificați informațiile dvs. vor fi afișate în orice formă. Ie HTML are un set specific de tag-uri cu care există formatarea textului - dimensiunea fontului, alinierea, culoarea de fundal, etc.
Spre deosebire de HTML programare XML - pentru a stoca structura de date. Specificați numele structurii documentului, că în cazul în care și în ce ordine este, ci pentru a arăta astfel un browser de document pe ideea nu poate fi - el ar trebui să sugereze cum să interpreteze o anumită etichetă. Puteți veni cu propriile tag-uri, care sunt foarte importante și este clar pentru tine și instrumentul. Din pacate (sau poate din fericire), acest subiect necesită o carte separată, așa că nu se va opri.
Foarte mult mi cer doar un singur lucru - să se familiarizeze cu conceptele generale ale HTML și XML pentru înțelegerea în continuare. înțelegere destul de simplu - vor învăța subtilitățile ei înșiși în viitor activitatea independentă.

Rulați Tomcat web-server

Descarca Tomcat poate fi un server - Apache Tomcat.
Pe partea stângă, veți vedea o listă de versiuni Tomcat - alege dreapta (am testat aplicarea sa la versiunea 6). ATENȚIE: Înainte de a descărca un fișier de verificare ce versiune a JVM pe care îl utilizați. Dacă 1.4, versiunea Tomcat 6.x / 5.5 nu va face. Există o bibliotecă suplimentară care rezolvă problema de compatibilitate, dar sfatul meu sincer pentru tine - da-te JVM 1.5 si vei evita problemele cu instalarea. În principiu, ați fost treci cu ușurință alte părți nu, pentru că există, de asemenea, necesită Java versiunea 1.5 sau mai mare.

În esență, descărcați fișierul pe care tocmai l-ați dezarhivați în orice director. Am crea de obicei un dosar separat în JAVA pentru a instala toate pachetele, IDE, JDK, și alte lucruri. Nu mai este nevoie fiecare pachet are propriul său director.
În viitor, voi folosi valoarea TOMCAT_HOME pentru a arăta ce director in cadrul Tomcat instalat, trebuie să faci ceva pentru a începe, pentru a seta sau schimba.
De asemenea, este foarte important - trebuie să setați un mediu JAVA_HOME variabilă. Ar trebui să specificați calea către directorul rădăcină al JDK instalat.
Pentru Windows, acest lucru se face după cum urmează:
Start-> Setări-> Controlul Panel-> System-> Avansat-> Variabile de mediu.
Pentru Unix, trebuie doar linia de comandă pentru a crea o JAVA_HOME variabilă sau să-l înregistreze în setarea inițială. (Cred că pentru cei care folosesc Unix este nici o problema).






În cazul în care memoria mea mă servește, pentru versiunile anterioare ale Tomcat a fost, de asemenea, este necesar, cu o posibilă TOMCAT_HOME variabilă, dar acum nu este necesar. Deci, noi nu putem face.
După ce ați instalat Tomcat să verifice performanța sa. Pentru a face acest lucru, du-te la directorul \ Bin și rulați fișierul startup.bat. Dacă nu strici ceva, ar trebui să înceapă DOS-box, care afișează informații diferite. A se vedea să-l că nu a existat nici un mesaj de eroare - acestea sunt imediat evidente - emise în mod normal, un teanc mare de metode. Cel mai important mesaj pentru tine ar trebui să apară la sfârșitul (de obicei, trebuie să aștepte 5-10 secunde - cu condiția ca Tomcat nu conține o mulțime de aplicații)

Server de pornire în 8828 ms: INFO

Numărul de milisecunde, desigur, nu poate fi atât. Dacă totul merge bine, începe browser-ul și tipul în ea

8080 - acesta este portul implicit care ia Tomcat. Port 80, el nu se atinge. Deși, dacă doriți să utilizați un alt port - introduceți directorul \ Conf și fișierul okroyte server.xml. Uită-te în rânduri acolo

După cum puteți vedea, puteți schimba portul 8080 la oricare alta, care este convenabil pentru tine. Nu uitați că, dacă schimbați fișierul pe neobohdimo reporniți Tomcat.
Deci, dacă ați tastat URL-ul specificat, partea din fata ochilor se va deschide pagina principală a serverului Tomcat cu un frumos și (vă asigur) este pisica foarte bine-cunoscut în colțul din stânga sus. (Deși mi se pare că acest lucru este mai mult ca un tigru - acesta poate fi modul în care aceasta este?)

În partea din dreapta sus a inscripției va fi liniștitor

Dacă vedeți această pagină prin intermediul unui browser web, aceasta înseamnă că ați configurare Tomcat cu succes. Felicitări!

Și felicitări, le - ați lansat propriul dvs. personal web-server.

Cele mai populare servlet - Hello, World

După cum puteți vedea care le-am moștenit de la clasa biblioteca HttpServlet și suprascrie o singură metodă - doGet.
Acum, ne concentrăm pe câteva puncte importante:

  1. Call setContentType. Această metodă este important pentru oricine care utilizează limba română - înainte de afișarea paginii cu browser-ul teskt românesc trebuie să fie informat că a fost textul în limba română vom afișa, iar browser-ul ar trebui să utilizeze codificarea. care ni se potrivește.
  2. primirea Writer-clasă pentru datele de ieșire. Este foarte important de notat în momentul următor - o concluzie poate fi realizată caracter cu caracter, și octet cu octet. Pentru a afișa textul folosind ieșire orientat către caractere pentru afișarea de fișiere binare utilizate pentru un singur octet. Pentru o înțelegere mai completă a modului în care mai bine să se uite la informațiile aranjate în firele de I / O pentru Java.

Pentru diferența Java între un simbol și un octet este foarte important - ca și Java este proiectat pentru viitor, pentru simbolul-l folosește doi octeți, în loc de una așa cum a fost în limbajul C devreme sau Pascal. Că clase diferite sunt utilizate pentru tipuri diferite de I / O fluxuri. Reader / Writer - citire / intrare de caractere. InputStream / OutputStream - octeți de citire / scriere.
În cazul nostru, vom imprima textul și, prin urmare, obținerea Writer. Această clasă ne permite să scrie textul HTML cel mai normal în ea. Ce facem. Pentru a construi servlet nu va avea biblioteca standard JDK - trebuie să conectați biblioteci suplimentare. Și o astfel de bibliotecă pentru fericirea noastră este în furnizarea de Tomcat - uite-l în directorul \ Common \ lib. Acest servlet-api.jar. Să-l conectați la linia de asamblare. Tocmai am copiat JAR necesar în directorul cu proiectul. Linia noastra de asamblare va fi după cum urmează:

Deci, servlet nostru asamblat și gata de instalare. Pentru instalare trebuie să facem o serie de acțiuni.

Se pare destul de simplu:

câteva puncte ar trebui să menționăm:

  1. tag-ul Web-app este tag-ul rădăcină. Acesta poate conține atribute suplimentare, dar în prezent noi nu sunt necesare. Toate etichetele ostalyne sunt în interiorul acestuia.
  2. Tag servlet cuprinde etichetele care descriu servlet. Tag servlet-name conține în ea un nume - puteți folosi ceea ce iti place cel mai bine. Tag-servlet clasă trebuie să conțină numele real al clasei. În cazul nostru am pus clasa noastră în pachetul students.web și numele complet al clasei va students.web.HelloWorldServlet.
  3. Tag servlet-cartografiere. Aici definim URL-ul, care va cere utilizatorului pentru a prelua datele de la servlet nostru. a declarat cu mai multă precizie, după cum urmează: definim un servlet va procesa adresa URL introdusă.

Tag servlet-name conține un nume pe care am definit în secțiunea 2 (există și o etichetă de servlet-name), și adresa URL-model tag-ul include o adresă URL.
Fișierul web.xml trebuie să fie localizat în directorul \ Webapps \ studentsApp \ WEB-INF \. Adică, calea completă către fișierul arată astfel:

Acum să ruleze Tomcat și să încercați să obțineți un răspuns de la servlet nostru. Deci, începe apelare Tomcat și linia de browser:

Utilizarea bazei de date

Pentru a începe să utilizați toată baza noastră de date, trebuie să - creați un alt director și copiați JAR pentru munca noastră cu baza de date - mysql-conector-java-3.1.13-bin.jar. este director \ Webapps \ studetnsApp \ WEB-INF \ lib

Prin urmare, calea completă către fișierul va fi: \ Webapps \ studetnsApp \ WEB-INF \ lib \ mysql-conector-java-3.1.13-bin.jar

Și, desigur, ne schimbăm servlet nostru, în scopul de a aduna datele din baza de date. Noul cod pentru servlet nostru va fi ceva mai complicat.

Bine ati venit la Tomcat

Bine ati venit la Tomcat

Vă mulțumim pentru seria dvs. de articole foarte utile.
Doar o singură problemă cu care se confruntă - nu pot realiza afișarea corectă a chirilic în browser.
textul în limba română se obține în acest fel: ............
M-am gândit că problema tomkate 8, set 6, dar problema nu a mers departe.
Poate că problema apare în timpul compilării (utilizați ideea 14).
În general, am înțeles mai mult.

Aparent, problema cu JDK 1.8, la compilare de cmd dă următoarele:
caracter unmappable pentru codificarea utf-8
fiecare literă rusă.
Voi încerca să instalați o versiune mai veche zhdk

Încercarea de a compila nimic dat în zhdk 6-a, eroarea este aceeași.
Soluția HETE la problema nu poate fi găsit.
Poate că problema cu OP de codificare, nu există aproape nici idei.
Sunt aproape de a ajunge la rupere departe de chirilic acum.
Într-adevăr rău 2 zile, ucis la problema.

Deci, ce este codul. Descărcați un eșantion sau ceva diferit?

Da, și propria sa, și de a descărca un eșantion Campiglio nu este, de asemenea, corectă.
Deja am dat seama. Mai întâi am deschis fișierul * .java în Notepad, salvați-l în UTF-8 format, și apoi deschideți-l în Notepad ++ și din nou, a văzut un doodle)). Fixe textul din nou în notpade și salvați fișierul. Apoi am compilat fără erori prin intermediul consolei.
Apoi, în Idea am creat un nou proiect și a schimbat toate codificarea UTF-8 (implicit au existat ferestre-1251), și apoi totul a fost bine Campiglio în Idea.
de codificare modificări la un proiect existent nu a ajutat că am încercat inițial. Pentru că am păcătuit la tomkat, atunci zhdk, este încă ceva.
Dar, apoi, din nou, este ciudat faptul că fișierul descărcat și a dat aceeași eroare atunci când compilarea, nu am văzut că încă aici pe cineva a avut astfel de probleme.
Nu-ți face griji, mă bucur că am făcut-o fix, ca AS Pușkin, experiența - fiul erorilor dificil))

Pentru a compila din linia de comandă este necesar să se utilizeze o -encoding cheie suplimentară - în caz contrar într-un UTF-8 din linia de comandă cu litere românești nu pot fi compilate.

Da, desigur, Campiglio, cu o cheie pe ea și a primit un caracter unmappable pentru codificarea utf-8
fiecare literă rusă.

O eroare similară cu eroarea Alex (Alex din Romania doar simboluri care urmează să fie afișate într-un diamant cu întrebări, am afișat doar întrebări (în diferite stadii de eroare)).
În general, am găsit o eroare, dar nu a înțeles ce este.
Eroarea este în această linie:
response.setContentType ( «text / html, charset = utf-8" ); - linie de defect
response.setContentType ( «text / html; charset = utf-8" ); - Linie fixă

Nu știu de ce, dar aceste două linii aparent identice funcționează diferit. Mai întâi m-am luat un carnețel în UTF-8, un al doilea copiat aici. De ce nu este munca mea - și nu au înțeles.

Mai bine să nu folosească setContentType și setCharacterEncoding.
În primul caz, stabilește un tip comun de informații care urmează să fie returnate - în acest caz HTML în UTF-8. Toate enumerate separate prin punct și virgulă.
În al doilea caz, puteți utiliza doar «utf-8" . Acest lucru indică faptul că timpii morți codificarea UTF-8.

Aș adăuga că am avut o problemă cu faptul că modificările dreptul la un java fișier, compilate în clasa, doborâți în folderul corespunzător Tomcat, stimularea URL-ul, dar nu a existat nici o schimbare.
A decis că în Tomcat reluat serviciile. El a văzut ceva în lui sau crom hashes aceleași oferte.

cu adevărat șocant atunci când transplantat la dezvoltarea desktop-ul ... de fapt, am uimit de modul în care încă mai funcționează. configs tyscha, concepte. cum să depanare, dacă nu pornește, nu este clar, documentația oficială pe întreaga bibliotecă. este încă doar un exemplu, există un întreg întunecat, tot felul de Maven, iedera, cadre - fiecare cu propria sa logică, etc. etc ... la producția nu dozhivosh, dacă începeți de la zero.
mâinile în jos toate acest studiu, atunci când vă imaginați volumul. Nu-mi pot imagina cum totul este studiat în universități.

Multumesc pentru articol!
Din păcate, cel mai mult în industria cererii în programarea pentru ziua curentă. = (

Vă mulțumesc pentru cuvintele frumoase. Acest lucru - tot felul de instrumente. Așa că vreau să dau cel puțin forțele lor să înțeleagă că trebuie să ne uităm (și care parte), și nu este necesar sau nu este necesar.

Multumesc pentru articol toate sa întâmplat prima dată.
Problema a fost că el a făcut-o prin proiectul Maven a crescut cu dependenta, Mauger care poate ajuta. Trebuie să adăugați următorul cod în pom.xml.

org.apache.tomcat
Tomcat-servlet-api
8.5.3