2.1 HttpServletRequest-klass
Det mesta av arbetet som din servlet måste göra baserat på informationen från förfrågan. Objektet är ansvarigt för det HttpServletRequest
, som behållaren skickar till din servlet (till metoden service
eller metoderna doGet()
, doPost()
etc.)
Detta objekt har en hel del metoder, eftersom det helt enkelt lagrar förfrågningsdata och genom det kan du interagera med behållaren.
Metoderna kan delas in i 2 stora grupper:
- Metoder relaterade till användarauktorisering
- Metoder för att arbeta med frågedata
Jag kommer att ge användarna auktoriseringsmetoder i form av en tabell, men vi kommer inte att analysera dem. Faktum är att de mycket sällan används för att auktorisera en användare. Alla populära ramverk använder sina egna, mycket mer avancerade metoder för auktorisering.
Jag borde lista dem, men återigen, jag har inte sett någon använda dem.
Metod | Beskrivning | |
---|---|---|
1 | authenticate(HttpServletResponse) |
Utför svarsautentisering |
2 | changeSessionId() |
Tvångsändring av sessions-ID |
3 | getAuthType() |
Returnerar typen av autentisering som används: ASIC_AUTH, FORM_AUTH, CLIENT_CERT_AUTH, DIGEST_AUTH |
4 | getRemoteUser() |
Returnerar användarinloggning |
5 | getRequestedSessionId() |
Returnerar klientens sessions-ID |
6 | getSession() |
Returnerar ett HttpSession-objekt |
7 | getUserPrincipal() |
Returnerar ett java.security.Principal-objekt |
8 | login(username, password) |
Utför användarinloggning |
9 | logout() |
Loggar ut användarsessionen |
2.2 Begär data
Den andra gruppen av metoder är mycket mer intressant. Vilken typ av data har vi i begäran?
- http-metoden
- URI
- alternativ
- Titlar
Låt oss se vilka metoder som finns tillgängliga för att arbeta med dem:
Metod | Beskrivning | |
---|---|---|
1 | getMethod() |
Returnerar HTTP-metod: GET, POST, DELETE, ... |
2 | getRequestURI() |
Returnerar begäran URI: http://codegym.cc/my/data |
3 | getRequestURL() |
Returnerar webbadressen för begäran: http://codegym.cc/my/data |
4 | getQueryString() |
Returnerar fråga, dvs allt efter ? |
5 | getParameterMap() |
Returnerar en lista med frågeparametrar |
6 | getParameter(String name) |
Returnerar värdet på parametern efter dess namn |
7 | getContentType() |
Returnerar MimeType-förfrågan |
8 | getReader() |
Läsare för att läsa förfrågans brödtext som text |
9 | getInputStream() |
InputStream för att läsa förfrågans text som byte[] |
10 | getSession() |
Returnerar ett HttpSession-objekt |
elva | getCookies() |
Returnerar en array av Cookie[]-objekt |
12 | getHeaderNames() |
Returnerar en lista med titlar, endast namn |
13 | getHeader(String name) |
Returnerar rubrikvärdet efter namn |
14 | getServletPath() |
Returnerar den del av URL:en som refererar till servleten |
15 | getContextPath() |
Returnerar den del av URI:n som anger innehållet i begäran |
Och det är inte ens alla metoder...
Fast efter att vi har studerat HTTP-protokollet och lärt oss hur man arbetar med HttpClient är allt mer eller mindre bekant här, eller hur?
Låt oss skriva en servlet som kan skickas text och en färg till, och den kommer att returnera en HTML-sida med den texten skriven i den angivna färgen. Hur gillar du idén?
Låt oss börja med att skriva vår servlet:
public class ColorTextServlet extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws Exception {
//write your code here
}
}
Nu måste vi få texten och färgen skickad från URI:n av användaren:
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");
}
}
Och slutligen måste du mata ut texten som HTML. Vi kommer att ta upp detta i nästa föreläsning, men här kommer jag att ge en liten 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();
}
}
}