2.1 Clasa HttpServletRequest
Cea mai mare parte a activității pe care servletul tău trebuie să o facă pe baza informațiilor primite din solicitare. Obiectul este responsabil pentru acesta HttpServletRequest
, pe care containerul îl va transmite servlet-ului dumneavoastră (metodei service
sau metodelor doGet()
etc. doPost()
)
Acest obiect are destul de multe metode, deoarece stochează pur și simplu datele cererii și prin intermediul acestuia puteți interacționa cu containerul.
Metodele pot fi împărțite în două grupuri mari:
- Metode legate de autorizarea utilizatorului
- Metode de lucru cu datele de interogare
Voi da utilizatorilor metode de autorizare sub forma unui tabel, dar nu le vom analiza. Cert este că sunt foarte rar folosite pentru a autoriza un utilizator. Toate cadrele populare folosesc propriile lor abordări mult mai avansate pentru autorizare.
Ar trebui să le enumerez, dar din nou, nu am văzut pe nimeni să le folosească.
Metodă | Descriere | |
---|---|---|
1 | authenticate(HttpServletResponse) |
Efectuează autentificarea răspunsului |
2 | changeSessionId() |
Schimbați forțat ID-ul sesiunii |
3 | getAuthType() |
Returnează tipul de autentificare utilizat: ASIC_AUTH, FORM_AUTH, CLIENT_CERT_AUTH, DIGEST_AUTH |
4 | getRemoteUser() |
Returnează datele de conectare ale utilizatorului |
5 | getRequestedSessionId() |
Returnează SessionID-ul clientului |
6 | getSession() |
Returnează un obiect HttpSession |
7 | getUserPrincipal() |
Returnează un obiect java.security.Principal |
8 | login(username, password) |
Efectuează autentificarea utilizatorului |
9 | logout() |
Se deconectează sesiunea utilizator |
2.2 Solicitați date
Al doilea grup de metode este mult mai interesant. Ce fel de date avem în cerere?
- metoda http
- URI
- Opțiuni
- Titluri
Să vedem ce metode sunt disponibile pentru a lucra cu ele:
Metodă | Descriere | |
---|---|---|
1 | getMethod() |
Returnează metoda HTTP: GET, POST, DELETE,... |
2 | getRequestURI() |
Returnează URI-ul solicitării: http://codegym.cc/my/data |
3 | getRequestURL() |
Returnează adresa URL a solicitării: http://codegym.cc/my/data |
4 | getQueryString() |
Returnează Interogare, adică totul după ? |
5 | getParameterMap() |
Returnează o listă de parametri de interogare |
6 | getParameter(String name) |
Returnează valoarea parametrului după numele său |
7 | getContentType() |
Returnează corpul solicitării MimeType |
8 | getReader() |
Cititorul pentru a citi corpul solicitării ca text |
9 | getInputStream() |
InputStream pentru a citi corpul cererii ca octet[] |
10 | getSession() |
Returnează un obiect HttpSession |
unsprezece | getCookies() |
Returnează o matrice de obiecte Cookie[]. |
12 | getHeaderNames() |
Returnează o listă de titluri, numai nume |
13 | getHeader(String name) |
Returnează valoarea antetului după nume |
14 | getServletPath() |
Returnează partea din adresa URL care se referă la servlet |
15 | getContextPath() |
Returnează partea din URI care specifică conținutul cererii |
Și asta nu sunt nici măcar toate metodele...
Deși după ce am studiat protocolul HTTP și am învățat cum să lucrăm cu HttpClient, totul este mai mult sau mai puțin familiar aici, nu-i așa?
Să scriem un servlet căruia i se poate transmite text și o culoare și va returna o pagină HTML cu acel text scris în culoarea specificată. Cum vi se pare ideea?
Să începem prin a scrie servlet-ul nostru:
public class ColorTextServlet extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws Exception {
//write your code here
}
}
Acum trebuie să obținem textul și culoarea transmise de la URI de către utilizator:
public class ColorTextServlet extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws Exception {
// Getting the parameter “text” и “color” from request
String text= request.getParameter("text");
String color = request.getParameter("color");
}
}
Și, în sfârșit, trebuie să scoateți textul ca HTML. Vom acoperi acest lucru în următoarea prelegere, dar aici voi da un mic indiciu:
public class ColorTextServlet extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws Exception {
// Get the "text" and "color" parameters from the request
String text = request.getParameter("text");
String color = request.getParameter("color");
// Print the HTML as a response to the browser
response.setContentType("text/html;charset=UTF-8");
PrintWriter out = response.getWriter();
try {
out.println("<html>");
out.println("<head> <title> ColorTextServlet </title> </head>");
out.println("<body>");
out.println("<h1 style="color:"+color+">"+text+"</h1>");
out.println("</body>");
out.println("</html>");
} finally {
out.close();
}
}
}
GO TO FULL VERSION