JSP Implicit Objects

Τι είναι το αντικείμενο JSP Implicit;

  • Τα έμμεσα αντικείμενα JSP δημιουργούνται κατά τη φάση μετάφρασης του JSP στο servlet.
  • Αυτά τα αντικείμενα μπορούν να χρησιμοποιηθούν απευθείας σε σενάρια που περιλαμβάνονται στη μέθοδο εξυπηρέτησης.
  • Δημιουργούνται αυτόματα από το κοντέινερ και μπορούν να προσπελαστούν χρησιμοποιώντας αντικείμενα.

Πόσα Implicit Objects είναι διαθέσιμα στο JSP;

Υπάρχουν 9 τύποι σιωπηρών αντικειμένων διαθέσιμα στο κοντέινερ:

  1. Έξω
  2. Αίτημα
  3. Απάντηση
  4. Config
  5. Εφαρμογή
  6. Συνεδρία
  7. PageContext
  8. Σελίδα
  9. Εξαίρεση

Ας μελετήσουμε ένα προς ένα

1) Έξω

  • Το Out είναι ένα από τα σιωπηρά αντικείμενα για την εγγραφή των δεδομένων στο buffer και την αποστολή εξόδου στον πελάτη ως απόκριση
  • Το αντικείμενο Out μας επιτρέπει να έχουμε πρόσβαση στη ροή εξόδου του servlet
  • Το Out είναι αντικείμενο της κλάσης javax.servlet.jsp.jspWriter
  • Ενώ εργάζεστε με servlet, χρειαζόμαστε αντικείμενο εκτύπωσης

Παράδειγμα:

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Implicit Guru JSP1</title>
</head>
<body>
<% int num1=10;int num2=20;
out.println("num1 is " +num1);
out.println("num2 is "+num2);
%>
</body>
</html>

Επεξήγηση του κώδικα:

Κωδικός Γραμμή 11-12– το out χρησιμοποιείται για εκτύπωση σε ροή εξόδου

Όταν εκτελούμε τον παραπάνω κώδικα, έχουμε την ακόλουθη έξοδο:

Έξω στο JSP

Παραγωγή:

  • Στην έξοδο, παίρνουμε τις τιμές num1 και num2

2) Αίτημα

  • Το αντικείμενο αίτησης είναι μια παρουσία του java.servlet.http.HttpServletRequest και είναι ένα από τα όρισμα της μεθόδου υπηρεσίας
  • Θα δημιουργηθεί ανά κοντέινερ για κάθε αίτημα.
  • Θα χρησιμοποιηθεί για να ζητηθούν πληροφορίες όπως παράμετρος, πληροφορίες κεφαλίδας, όνομα διακομιστή κ.λπ.
  • Χρησιμοποιεί getParameter() για πρόσβαση στην παράμετρο αιτήματος.

Παράδειγμα:

Implicit_jsp2.jsp(φόρμα από την οποία αποστέλλεται το αίτημα στο guru.jsp)

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Implicit Guru form JSP2</title>
</head>
<body>
<form action="guru.jsp">
<input type="text" name="username">
<input type="submit" value="submit">
</form>
</body>
</html>

Guru.jsp (όπου πραγματοποιείται η ενέργεια)

Αίτημα σε JSP

Επεξήγηση κωδικού:

Κωδικός Γραμμή 10-13: Στο implicit_jsp2.jsp(φόρμα) αποστέλλεται αίτημα, επομένως το όνομα χρήστη της μεταβλητής υποβάλλεται σε επεξεργασία και αποστέλλεται στο guru.jsp που είναι ενέργεια του JSP.

Guru.jsp

Κωδικός Γραμμή 10-11: Είναι η ενέργεια jsp όπου γίνεται η επεξεργασία του αιτήματος και το όνομα χρήστη λαμβάνεται από τη φόρμα jsp.

Όταν εκτελείτε τον παραπάνω κώδικα, λαμβάνετε την ακόλουθη έξοδο

Παραγωγή:

Αίτημα σε JSP

Όταν γράφετε δοκιμή και κάνετε κλικ στο κουμπί υποβολής, τότε λαμβάνετε το ακόλουθο αποτέλεσμα "Welcome Test".

Αίτημα σε JSP

3) Απάντηση

  • Το "Response" είναι ένα παράδειγμα κλάσης που υλοποιεί τη διεπαφή HttpServletResponse
  • Το Container δημιουργεί αυτό το αντικείμενο και περνά στη μέθοδο _jspservice() ως παράμετρο
  • Το "Αντικείμενο απόκρισης" θα δημιουργηθεί από το κοντέινερ για κάθε αίτημα.
  • Αντιπροσωπεύει την απάντηση που μπορεί να δοθεί στον πελάτη
  • Το σιωπηρό αντικείμενο απόκρισης χρησιμοποιείται για τον τύπο περιεχομένου, την προσθήκη cookie και την ανακατεύθυνση στη σελίδα απόκρισης

Παράδειγμα:

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Implicit Guru JSP4</title>
</head>
<body>
<%response.setContentType("text/html"); %>
</body>
</html>

Επεξήγηση του κώδικα:

Κωδικός Γραμμή 11: Στο αντικείμενο απόκρισης μπορούμε να ορίσουμε τον τύπο περιεχομένου

Εδώ ορίζουμε μόνο τον τύπο περιεχομένου στο αντικείμενο απόκρισης. Ως εκ τούτου, δεν υπάρχει έξοδος για αυτό.

4) Διαμόρφωση

  • Το "Config" είναι του τύπου java.servlet.servletConfig
  • Δημιουργείται από το κοντέινερ για κάθε σελίδα jsp
  • Χρησιμοποιείται για τη λήψη της παραμέτρου προετοιμασίας στο web.xml

Παράδειγμα:

Web.xml (καθορίζει το όνομα και την αντιστοίχιση του servlet)

Διαμόρφωση στο JSP

Implicit_jsp5.jsp (λήψη της τιμής του ονόματος servlet)

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Implicit Guru JSP5</title>
</head>
<body>
<% String servletName = config.getServletName();
out.println("Servlet Name is " +servletName);%>
</body>
</html>

Επεξήγηση του κώδικα:

Στο web.xml

Κωδικός Γραμμή 14-17: Στο web.xml έχουμε αντιστοίχιση των servlets στις κλάσεις.

Implicit_jsp5.jsp

Κωδικός Γραμμή 10-11: Για να λάβουμε το όνομα του servlet στο JSP, μπορούμε να χρησιμοποιήσουμε το config.getServletName, το οποίο θα μας βοηθήσει να πάρουμε το όνομα του servlet.

Όταν εκτελείτε τον παραπάνω κώδικα, λαμβάνετε την ακόλουθη έξοδο:

Απάντηση στο JSP

Παραγωγή:

  • Το όνομα Servlet είναι "GuruServlet" καθώς το όνομα υπάρχει στο web.xml

5) Εφαρμογή

  • Το αντικείμενο εφαρμογής (γραμμή κώδικα 10) είναι μια παρουσία του javax.servlet.ServletContext και χρησιμοποιείται για τη λήψη των πληροφοριών περιβάλλοντος και των χαρακτηριστικών στο JSP.
  • Το αντικείμενο εφαρμογής δημιουργείται από ένα κοντέινερ ανά εφαρμογή, όταν η εφαρμογή αναπτύσσεται.
  • Το αντικείμενο Servletcontext περιέχει ένα σύνολο μεθόδων που χρησιμοποιούνται για την αλληλεπίδραση με το κοντέινερ servlet. Μπορούμε να βρούμε πληροφορίες για το κοντέινερ servlet

Παράδειγμα:

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Guru Implicit JSP6</title>
</head>
<body>
<% application.getContextPath(); %>
</body>
</html>

Επεξήγηση του κώδικα:

  • Στον παραπάνω κώδικα, το χαρακτηριστικό εφαρμογής βοηθά να λάβετε τη διαδρομή περιβάλλοντος της σελίδας JSP.

6) Συνεδρία

  • Η συνεδρία κρατά αντικείμενο "httpsession" (γραμμή κώδικα 10).
  • Το αντικείμενο περιόδου λειτουργίας χρησιμοποιείται για τη λήψη, τον ορισμό και την αφαίρεση χαρακτηριστικών στο εύρος της περιόδου σύνδεσης και επίσης χρησιμοποιείται για τη λήψη πληροφοριών συνεδρίας

Παράδειγμα:

Implicit_jsp7 (το χαρακτηριστικό έχει οριστεί)

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Implicit JSP</title>
</head>
<body>
<% session.setAttribute("user","GuruJSP"); %>
<a href="implicit_jsp8.jsp">Click here to get user name</a>
</body>
</html>

Implicit_jsp8.jsp (getAttribute)

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>implicit Guru JSP8</title>
</head>
<body>
<% String name = (String)session.getAttribute("user");
out.println("User Name is " +name);
%>
</body>
</html>

Επεξήγηση του κώδικα:

Implicit_jsp7.jsp

Κωδικός Γραμμή 11: ορίζουμε το χαρακτηριστικό χρήστη στη μεταβλητή συνεδρίας και αυτή η τιμή μπορεί να ληφθεί από τη συνεδρία σε όποιο jsp κληθεί από αυτήν (_jsp8.jsp).

Κωδικός Γραμμή 12: Καλούμε ένα άλλο jsp στο href στο οποίο θα λάβουμε την τιμή για το χαρακτηριστικό χρήστη που έχει οριστεί.

Implicit_jsp8.jsp

Κωδικός Γραμμή 11: Λαμβάνουμε την τιμή του χαρακτηριστικού χρήστη από το αντικείμενο συνεδρίας και εμφανίζουμε αυτήν την τιμή

Όταν εκτελείτε τον παραπάνω κώδικα, λαμβάνετε την ακόλουθη έξοδο:

Συνεδρία στο JSP

Όταν κάνετε κλικ στον σύνδεσμο για το όνομα χρήστη. Θα λάβετε την ακόλουθη έξοδο.

Συνεδρία στο JSP

Παραγωγή:

  • Όταν κάνουμε κλικ στον σύνδεσμο που δίνεται στο implicit_jsp7.jsp, τότε ανακατευθυνόμαστε στη δεύτερη σελίδα jsp, δηλαδή στη σελίδα (_jsp8.jsp) και παίρνουμε την τιμή από το αντικείμενο περιόδου λειτουργίας του χαρακτηριστικού χρήστη (_jsp7.jsp).

7) Περιεχόμενο σελίδας

  • Αυτό το αντικείμενο είναι τύπου pagecontext.
  • Χρησιμοποιείται για τη λήψη, τον ορισμό και την αφαίρεση των χαρακτηριστικών από ένα συγκεκριμένο πεδίο

Τα πεδία είναι 4 τύπων:

  • Σελίδα
  • Αίτημα
  • Συνεδρία
  • Εφαρμογή

Παράδειγμα:

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Implicit Guru JSP9</title>
</head>
<body>
<% pageContext.setAttribute("student","gurustudent",pageContext.PAGE_SCOPE);
String name = (String)pageContext.getAttribute("student");
out.println("student name is " +name);
%>
</body>
</html>

Επεξήγηση του κώδικα:

Κωδικός Γραμμή 11: ορίζουμε το χαρακτηριστικό χρησιμοποιώντας το αντικείμενο pageContext και έχει τρεις παραμέτρους:

  • Κλειδί
  • αξία
  • Έκταση

Στον παραπάνω κώδικα, το κλειδί είναι το student και η τιμή είναι "gurustudent" ενώ το εύρος είναι το εύρος της σελίδας. Εδώ το εύρος είναι "σελίδα" και μπορεί να χρησιμοποιηθεί μόνο το εύρος της σελίδας.

Κωδικός Γραμμή 12: Λαμβάνουμε την τιμή του χαρακτηριστικού χρησιμοποιώντας το pageContext

Όταν εκτελείτε τον παραπάνω κώδικα, λαμβάνετε την ακόλουθη έξοδο:

PageContext στο JSP

Παραγωγή:

  • Η έξοδος θα εκτυπώσει "το όνομα του μαθητή είναι γκουρούστεντ".

8) Σελ

  • Η μεταβλητή Page implicit κρατά το τρέχον εκτελούμενο αντικείμενο servlet για το αντίστοιχο jsp.
  • Λειτουργεί ως αυτό το αντικείμενο για την τρέχουσα σελίδα jsp.

Παράδειγμα:

Σε αυτό το παράδειγμα, χρησιμοποιούμε αντικείμενο σελίδας για να λάβουμε το όνομα της σελίδας χρησιμοποιώντας τη μέθοδο toString

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Implicit Guru JSP10</title>
</head>
<body>
<% String pageName = page.toString();
out.println("Page Name is " +pageName);%>
</body>
</html>

Επεξήγηση του κώδικα:

Κωδικός Γραμμή 10-11: Σε αυτό το παράδειγμα, προσπαθούμε να χρησιμοποιήσουμε τη μέθοδο toString() του αντικειμένου σελίδας και προσπαθούμε να πάρουμε το όνομα συμβολοσειράς της Σελίδας JSP.

Όταν εκτελείτε τον κώδικα, λαμβάνετε την ακόλουθη έξοδο:

Σελίδα στο JSP

Παραγωγή:

  • Η έξοδος είναι το όνομα συμβολοσειράς της παραπάνω σελίδας jsp

9) Εξαίρεση

  • Εξαίρεση είναι το σιωπηρό αντικείμενο της κλάσης ρίχνοντας.
  • Χρησιμοποιείται για χειρισμός εξαιρέσεων στο JSP.
  • Το αντικείμενο εξαίρεσης μπορεί να χρησιμοποιηθεί μόνο σε σελίδες σφαλμάτων.Παράδειγμα:
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1" isErrorPage="true"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Implicit Guru JSP 11</title>
</head>
<body>
<%int[] num1={1,2,3,4};
out.println(num1[5]);%>
<%= exception %>
</body>
</html>

Επεξήγηση του κώδικα:

Κωδικός Γραμμή 10-12 – Έχει έναν πίνακα αριθμών, δηλαδή num1 με τέσσερα στοιχεία. Στην έξοδο, προσπαθούμε να εκτυπώσουμε το πέμπτο στοιχείο του πίνακα από το num1, το οποίο δεν δηλώνεται στη λίστα πίνακα. Έτσι χρησιμοποιείται για να λάβουμε αντικείμενο εξαίρεσης του jsp.

Παραγωγή:

Εξαίρεση στο JSP

Λαμβάνουμε ArrayIndexOfBoundsException στον πίνακα όπου λαμβάνουμε έναν πίνακα num1 του πέμπτου στοιχείου.