4.1 Pambuka kanggo HttpSession
Yen sawetara panjaluk teka saka klien sing padha, mula dheweke ujar manawa ana sesi ing antarane klien lan server. Kanggo ngontrol proses iki, wadhah kasebut duwe obyek HttpSession khusus.
Nalika klien nggawe panjalukan kanggo servlet, wadhah servlet mriksa kanggo ndeleng yen parameter ID sesi ana ing panyuwunan kasebut. Yen ora ana parameter kasebut (contone, klien ngubungi server kanggo pisanan), banjur wadhah servlet nggawe obyek HttpSession anyar lan uga menehi ID unik.
Objek sesi disimpen ing server, lan ID dikirim ing respon kanggo klien, lan minangka standar disimpen ing klien ing cookie. Banjur, nalika panjaluk anyar teka saka klien sing padha, wadhah servlet njupuk ID kasebut, lan ID kasebut nemokake obyek HttpSession sing bener ing server.
Sampeyan bisa njaluk obyek sesi saka panjalukan (obyek HttpServletRequest), sing sampeyan kudu nelpon getSession () cara. Iki ngasilake obyek HttpSession.
Napa sesi dibutuhake? Bisa nyimpen informasi babagan klien ing antarane telpon. Dheweke duwe kaya HashMap ing njero, ing ngendi sampeyan bisa nyimpen obyek kanthi tombol. Lan sawetara cara kanggo iki:
Metode | Katrangan | |
---|---|---|
1 | setAttribute(String name, Object o) |
Nambahake obyek menyang sesi |
2 | getAttribute(String name) |
Entuk obyek saka sesi |
3 | removeAttribute(String name) |
Mbusak obyek saka sesi |
Ayo nulis servlet sing bakal nyimpulake kabeh nomer sing diterusake saka macem-macem panjalukan:
public class CalculatorServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException {
// Get the "sum" attribute from the session
HttpSession session = request.getSession();
Integer sum = (Integer) session.getAttribute("sum");
//Handling the situation when the session does not yet have such an attribute
if (sum == null)
sum = 0;
// Get the "n" parameter from the request
String n = request.getParameter("n");
sum += Integer.parseInt(n);
// Write the "sum" attribute to the session
session.setAttribute("sum", sum);
// Print the HTML as a response to the browser
PrintWriter out = response.getWriter();
out.println("<html>");
out.println("<head> <title> CalculatorServlet </title> </head>");
out.println("<body>");
out.println("<h1> Sum == " + sum + "</h1>");
out.println("</body>");
out.println("</html>");
}
}
4.2 Liyane babagan HttpSession
Apa ana liyane sing durung kita ucapake babagan obyek HttpSession?
Pisanan, iku jeneng J SESSION ID. Ing ngisor iki, ID sesi disimpen ing cookie. Nalika sampeyan bisa ndeleng, iku cukup gampang kanggo elinga J+SESSION+ID
:.
Kapindho, sesi kasebut duwe sawetara cara sing luwih migunani:
Metode | Katrangan | |
---|---|---|
1 | getAttributeNames() |
Ngasilake dhaptar kabeh kunci sing disimpen ing sesi kasebut |
2 | getId() |
Ngasilake ID sesi (string) |
3 | isNew() |
Ngasilake bener yen obyek sesi digawe ing panjalukan saiki |
4 | setMaxInactiveInterval(int seconds) |
Nyetel interval ora aktif sesi ing sawetara detik |
5 | invalidate() |
Mbusak kabeh obyek saka sesi |
Ing kene kabeh cara jelas, nanging setMaxInactiveInterval()
kita bakal ngomong babagan liyane.
Yen server nyimpen puluhan ewu sesi, kalebu data klien sing dibukak sasi kepungkur, banjur mung bakal kehabisan memori. Mulane, ana cara kanggo nyetel "umur sesi".
Yen ora ana sing nggunakake sesi kasebut sajrone interval wektu, mula bakal mbusak dhewe - kabeh obyek sing disimpen bakal dibusak saka iku. Iki ditindakake kanggo ngirit memori.
Kanthi gawan, interval iki 1800 detik == 30 menit. Yen sampeyan nyetel nilai kanggo -1, banjur sesi bakal "langgeng" lan bakal dibusak mung nalika pangguna nutup tab browser (uga, utawa klien pedhot).
Tuladha:
|
|
|
GO TO FULL VERSION