2.1 HttpServletRequest-klasse
Det meste af det arbejde, din servlet skal udføre baseret på de oplysninger, der er modtaget fra anmodningen. Objektet er ansvarligt for det HttpServletRequest
, som containeren vil videregive til din servlet (til metoden service
eller metoderne osv doGet()
. )doPost()
Dette objekt har en del metoder, da det blot gemmer anmodningsdataene, og gennem det kan du interagere med containeren.
Metoder kan opdeles i 2 store grupper:
- Metoder relateret til brugerautorisation
- Metoder til at arbejde med forespørgselsdata
Jeg vil give brugeren godkendelsesmetoder i form af en tabel, men vi vil ikke analysere dem. Faktum er, at de meget sjældent bruges til at autorisere en bruger. Alle populære rammer bruger deres egne, meget mere avancerede tilgange til autorisation.
Jeg burde nævne dem, men igen, jeg har ikke set nogen bruge dem.
Metode | Beskrivelse | |
---|---|---|
1 | authenticate(HttpServletResponse) |
Udfører svargodkendelse |
2 | changeSessionId() |
Skift sessions-id'et med magt |
3 | getAuthType() |
Returnerer den type godkendelse, der bruges: ASIC_AUTH, FORM_AUTH, CLIENT_CERT_AUTH, DIGEST_AUTH |
4 | getRemoteUser() |
Returnerer brugerlogin |
5 | getRequestedSessionId() |
Returnerer klientens sessions-id |
6 | getSession() |
Returnerer et HttpSession-objekt |
7 | getUserPrincipal() |
Returnerer et java.security.Principal-objekt |
8 | login(username, password) |
Udfører brugerlogin |
9 | logout() |
Logger brugersessionen ud |
2.2 Anmod om data
Den anden gruppe af metoder er meget mere interessant. Hvilken slags data har vi i anmodningen?
- http metode
- URI
- Muligheder
- Titler
Lad os se, hvilke metoder der er tilgængelige til at arbejde med dem:
Metode | Beskrivelse | |
---|---|---|
1 | getMethod() |
Returnerer HTTP-metoden: GET, POST, DELETE, ... |
2 | getRequestURI() |
Returnerer anmodningens URI: http://codegym.cc/my/data |
3 | getRequestURL() |
Returnerer anmodningens URL: http://codegym.cc/my/data |
4 | getQueryString() |
Returnerer forespørgsel, dvs. alt efter ? |
5 | getParameterMap() |
Returnerer en liste over forespørgselsparametre |
6 | getParameter(String name) |
Returnerer værdien af parameteren efter dens navn |
7 | getContentType() |
Returnerer MimeType-anmodningstekst |
8 | getReader() |
Læser til at læse anmodningens brødtekst som tekst |
9 | getInputStream() |
InputStream for at læse anmodningstekst som byte[] |
10 | getSession() |
Returnerer et HttpSession-objekt |
elleve | getCookies() |
Returnerer en matrix af Cookie[]-objekter |
12 | getHeaderNames() |
Returnerer en liste over titler, kun navne |
13 | getHeader(String name) |
Returnerer overskriftsværdien efter navn |
14 | getServletPath() |
Returnerer den del af URL'en, der refererer til servlet'en |
15 | getContextPath() |
Returnerer den del af URI'en, der specificerer indholdet af anmodningen |
Og det er ikke engang alle metoderne ...
Selvom efter at vi har studeret HTTP-protokollen og lært at arbejde med HttpClient, er alt mere eller mindre velkendt her, ikke?
Lad os skrive en servlet, der kan sendes tekst og en farve til, og den vil returnere en HTML-side med den tekst skrevet i den angivne farve. Hvordan kan du lide ideen?
Lad os starte med at skrive vores servlet:
public class ColorTextServlet extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws Exception {
//write your code here
}
}
Nu skal vi få teksten og farven sendt fra URI'en af brugeren:
public class ColorTextServlet extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws Exception {
// Getting the parameter “text” and “color” from request
String text= request.getParameter("text");
String color = request.getParameter("color");
}
}
Og endelig skal du udskrive teksten som HTML. Det kommer vi ind på i næste foredrag, men her vil jeg give et lille hint:
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