2.1 HttpServletRequest osztály
A legtöbb munka a szervletnek a kérésből kapott információk alapján történik. Az objektum felelős érte HttpServletRequest
, amit a konténer átad a servletnek (metódusnak service
vagy metódusoknak stb doGet()
. doPost()
)
Ennek az objektumnak jó néhány metódusa van, mivel egyszerűen tárolja a kérésadatokat, és ezen keresztül kommunikálhat a tárolóval.
A módszerek 2 nagy csoportra oszthatók:
- Felhasználói engedélyezéssel kapcsolatos módszerek
- A lekérdezési adatokkal való munkavégzés módszerei
A felhasználói jogosultsági módszereket táblázat formájában adom meg, de nem elemezzük őket. Az a tény, hogy nagyon ritkán használják a felhasználó engedélyezésére. Minden népszerű keretrendszer saját, sokkal fejlettebb engedélyezési módszert alkalmaz.
Fel kellene sorolnom őket, de még egyszer mondom, még egyszer nem láttam, hogy valaki használná őket.
Módszer | Leírás | |
---|---|---|
1 | authenticate(HttpServletResponse) |
Válasz hitelesítést hajt végre |
2 | changeSessionId() |
Módosítsa erőszakkal a munkamenet azonosítóját |
3 | getAuthType() |
A használt hitelesítés típusát adja vissza: ASIC_AUTH, FORM_AUTH, CLIENT_CERT_AUTH, DIGEST_AUTH |
4 | getRemoteUser() |
Visszaadja a felhasználói bejelentkezést |
5 | getRequestedSessionId() |
Az ügyfél SessionID-jét adja vissza |
6 | getSession() |
Egy HttpSession objektumot ad vissza |
7 | getUserPrincipal() |
Egy java.security.Principal objektumot ad vissza |
8 | login(username, password) |
Felhasználói bejelentkezést hajt végre |
9 | logout() |
Kijelentkezteti a felhasználói munkamenetet |
2.2 Adatkérés
A módszerek második csoportja sokkal érdekesebb. Milyen adatok szerepelnek a kérelemben?
- http módszer
- URI
- Lehetőségek
- Címek
Nézzük meg, milyen módszerek állnak rendelkezésre a velük való munkához:
Módszer | Leírás | |
---|---|---|
1 | getMethod() |
A HTTP-módszert adja vissza: GET, POST, DELETE, ... |
2 | getRequestURI() |
A kérés URI-ját adja vissza: http://codegym.cc/my/data |
3 | getRequestURL() |
A kérés URL-jét adja vissza: http://codegym.cc/my/data |
4 | getQueryString() |
A Queryt adja vissza, azaz mindent a ? |
5 | getParameterMap() |
A lekérdezési paraméterek listáját adja vissza |
6 | getParameter(String name) |
A paraméter értékét adja vissza a neve alapján |
7 | getContentType() |
A MimeType kérés törzsét adja vissza |
8 | getReader() |
Olvasó a kérelem törzsének szövegként történő olvasásához |
9 | getInputStream() |
InputStream a kérelem törzsének bájtként való olvasásához[] |
10 | getSession() |
Egy HttpSession objektumot ad vissza |
tizenegy | getCookies() |
Cookie[] objektumok tömbjét adja vissza |
12 | getHeaderNames() |
A címek listáját adja vissza, csak a neveket |
13 | getHeader(String name) |
A fejléc értékét név szerint adja vissza |
14 | getServletPath() |
Az URL-nek azt a részét adja vissza, amely a szervletre hivatkozik |
15 | getContextPath() |
Az URI-nak azt a részét adja vissza, amely meghatározza a kérés tartalmát |
És ez még nem minden módszer...
Bár miután tanulmányoztuk a HTTP protokollt, és megtanultuk, hogyan kell dolgozni a HttpClienttel, itt minden többé-kevésbé ismerős, nem igaz?
Írjunk egy servletet, aminek szöveget és színt lehet átadni, és ez egy HTML oldalt ad vissza, amelyen a megadott színnel írják a szöveget. Hogy tetszik az ötlet?
Kezdjük a servlet megírásával:
public class ColorTextServlet extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws Exception {
//write your code here
}
}
Most meg kell szereznünk a felhasználó által az URI-ból átadott szöveget és színt:
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");
}
}
És végül a szöveget HTML-ként kell kiadnia. A következő előadásban ezzel foglalkozunk, de itt adok egy kis tippet:
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