שאלות ראיון ותשובות ב-JSP

מבחר ראשון לראיונות JSP הוא חשוב מאוד כאשר אתה הולך לראיון Java. JSP הוא חלק מהולם בכל יישום אינטרנט עם Java EE ולאחרונה כתבתי הרבה על תכונות שונות ב-JSP. התחלנו מהיסודות של JSP, תסריטים ב-JSP וסיימנו עם תגיות מותאמות ב-JSP כדי להימנע מקוד Java בעמודי JSP. כמה מהשיעורים שאתה יכול לבדוק הם:

  1. מדריך JSP למתחילים
  2. אובייקטים משתמשים ב-JSP
  3. הכוויות JSP
  4. טיפול בחריגות ב-JSP
  5. תגיות פעולה ב-JSP
  6. EL של JSP
  7. תגיות JSTL היבסיקיות
  8. תגיות מותאמות ב-JSP

שאלות ראיונות JSP


כאן אני מספק כמה שאלות חשובות לראיון JSP עם תשובות כדי לעזור לך בראיונות. אלו שאלות ראיון JSP טובות ותשובות עבור מתכנתים מנוסים וגם מתחילים. לפני שתקרא את התשובות, אני ממליץ לך לקרוא את ההדרכות למעלה ולנסות לענות עליהן בעצמך ולבחון את ההבנה שלך ב-JSP.

  1. מהו JSP ולמה אנו זקוקים אליו?
  2. מהן שלבי החיים של JSP?
  3. מהם שיטות החיים של JSP?
  4. אילו שיטות חיים של JSP ניתן לדרוס?
  5. איך אפשר למנוע גישה ישירה של דפי JSP מדפדפן הלקוח?
  6. מהם סוגי ההערות השונים ב-JSP?
  7. מהו Scriptlet, Expression ו-Declaration ב-JSP?
  8. מהם אובייקטים המשתמשים במקום ב-JSP?
  9. האם ניתן להשתמש באובייקטים משתנים בשיטה המוגדרת ב-JSP Declaration?
  10. איזה אובייקט משתנה אינו זמין בדפי JSP רגילים?
  11. מהם יתרונות אובייקט PageContext המשתמשים ב-JSP?
  12. כיצד אנו מגדירים פרמטרי init ל-JSP?
  13. למה מניעת שימוש באלמנטים תסריטיים ב-JSP?
  14. האם ניתן להגדיר מחלקה בדף JSP?
  15. כיצד ניתן להשבית קוד Java או סקריפטים בדף JSP?
  16. הסבר על אלמנטי הפעולה ב-JSP או תגי פעולה?
  17. מה ההבדל בין הכוונת הכללית והפעולה jsp:include?
  18. מהו שפת הביטוי של JSP ומהם יתרונותיה?
  19. מהם אובייקטים משתמשים של JSP EL ובמה הם שונים מאובייקטים משתמשים של JSP?
  20. כיצד להשתמש ב-JSP EL כדי לקבל את שם שיטת ה-HTTP?
  21. מהו ספריית התגים הסטנדרטית של JSP, נתן דוגמאות לשימוש?
  22. מהם סוגי התגים JSTL?
  23. מהו תג מותאם אישית של JSP ומהם הרכיבים שלו?
  24. תן דוגמה למקום בו נדרש תג מותאם אישית של JSP?
  25. למה אין צורך להגדיר תגי JSP סטנדרטיים ב-web.xml?
  26. כיצד ניתן לטפל בחריגות שנזרקות על ידי שיטת השירות של JSP?
  27. איך ניתן לתפוס חריגה ולעבד אותה באמצעות JSTL?
  28. כיצד להדפיס "<br> יוצר שורה חדשה ב-HTML" ב-JSP?
  29. מהו jsp-config בתיאור ההפצה?
  30. איך להתעלם מהערך של ביטוי ה-EL ב-JSP?
  31. מתי יאתחל המאגר מספר רב של אובייקטים JSP/Servlet?
  32. אפשר להשתמש ב-JavaScript עם עמודי JSP?
  33. איך ניתן למנוע יצירת סשן משתמש כבילתי ב-JSP?
  34. מה ההבדל בין JspWriter ו- PrintWriter של Servlet?
  35. איך ניתן להרחיב את טכנולוגיית JSP?
  36. ספק כמה עקרונות מיטב JSP?

שאלות ראיון ותשובות על JSP

  1. מהו JSP ולמה אנו זקוקים לזה?

    JSP הוא שמורת תקן של JavaServer Pages. JSP הוא טכנולוגיה בצד השרת של Java המיועדת ליצירת דפי אינטרנט דינמיים. JSP הוא הרחבה של טכנולוגיית Servlet שמטרתה סיוע למפתחים ליצור דפים דינמיים בעזרת תחביר דומה ל-HTML. יש אפשרות ליצור תצוגות משתמש ב-Servlet, אך הקוד יהפוך לפתאום חסר יופי ומוטל בשגיאות. בנוסף, רוב האלמנטים בדף אינטרנט הם סטטיים, ולכן דף ה-JSP יותר מתאים לדפי אינטרנט. יש להימנע מהכנסת לוגיקת עסקים בדפי JSP ולנסות להשתמש בהם רק למטרות הצגה. ישנם אלמנטים כתיבת קוד Java בדפי JSP, אך הוא מומלץ להימנע ממנם ולהשתמש באלמנטי פעולה של JSP, תגי JSTL או תגי מותאמים אישית כדי להשיג את אותם פונקציות. יתרה מכך, יתרון נוסף של JSP הוא שרוב הקונטיינרים תומכים בהטענה חמה של דפי JSP. יש רק לבצע את השינויים הדרושים בדף JSP ולהחליף את הדף הישן בדף JSP המעודכן בספריית ההתקנה, והקונטיינר יטען את הדף JSP החדש. אין צורך להדר את קוד הפרויקט או לאתחל את השרת, להבחין משינוי בקוד של Servlet שמחייב לבנות מחדש את הפרויקט ולהתקין אותו מחדש. אף שרוב הקונטיינרים כיום מספקים תמיכה בהטענה חמה של יישומים, עדיין זה יכול לדרוש מאמץ נוסף מאשר דפי JSP.

  2. מהם שלבי מחזור החיים של JSP?

    אם תבדוק בקוד של עמודי JSP, הוא נראה כמו HTML ולא דומה לכלל מחלקות ג'אווה. למעשה, מעטפת JSP טופלת את עמודי ה-JSP ויוצרת את מחלקת ה-Servlet המשמשת באפליקציה האינטרנטית. שלבי מחזור החיים של JSP הם:

    1. תרגום – מעטפת JSP בודקת את קוד עמוד ה-JSP ומפענחת אותו כדי ליצור את קוד המקור של ה-Servlet. לדוגמה, ב-Tomcat תמצאו קבצי מחלקות Servlet שנוצרו בתיקיית TOMCAT/work/Catalina/localhost/WEBAPP/org/apache/jsp. אם שם עמוד ה-JSP הוא home.jsp, לרוב שם המחלקה שנוצרת הוא home_jsp ושם הקובץ הוא home_jsp.java
    2. הידור – מעטפת JSP מהדהדת את קוד המחלקה של JSP ויוצרת קובץ מחלקה בשלב זה.
    3. טעינת מחלקה – המעטפת טוענת את המחלקה לזיכרון בשלב זה.
    4. התייצבות – המעטפת מפעילה את בנאי המחלקה שאינו מקבל פרמטרים של המחלקה שנוצרה כדי לטעון אותה לזיכרון וליצור אותה.
    5. אתחול – המעטפת מפעילה את שיטת האתחול של אובייקט מחלקת ה-JSP ומאתחלת את התצורה של ה-Servlet עם פרמטרי אתחול המוגדרים בתיאור הפיתוח. לאחר מכן, ה-JSP מוכן לטיפול בבקשות הלקוח. לרוב, מהתרגום ועד האתחול של ה-JSP קורה כאשר בקשה ראשונה ל-JSP מגיעה, אך אפשר להגדיר אותו להיות מטען ואיתחול בעת הפרסום כמו סרבלים באמצעות הרכיב load-on-startup.
    6. עיבוד בקשה – זהו מחזור החיים הארוך ביותר של עמוד ה-JSP ועמוד ה-JSP מעבד את בקשות הלקוח. העיבוד הוא מרובה לסניפים ודומה לסרבלים, ולכל בקשה נוצר תהליך חדש וכך יוצרים אובייקטי ServletRequest ו-ServletResponse ומפעילים את שיטת השרות של ה-JSP.
    7. השמדה – זהו שלב האחרון של מחזור החיים של ה-JSP שבו המחלקה של ה-JSP מוסרת מהזיכרון. לרוב, זה קורה כאשר היישום מוסר או שהשרת נכבה.
  3. מהם שלבי החיים של JSP?

    שלבי החיים של JSP הם:

    1. jspInit(): שיטה זו מוגדרת ב-JspPage ומיושמת על ידי יישומים של מנהלי JSP. שיטה זו נקראת פעם אחת במחזור החיים של JSP לאתחולו עם פרמטרים התצורה שמוגדרים בתיאור ההתקנה. ניתן לדרוס שיטה זו באמצעות אלמנט כתיבת ההכרזה של JSP כדי לאתחל כל משאב שברצוננו להשתמש בו בדף ה-JSP.
    2. _jspService(): זו השיטה של JSP שמתקראת על ידי מנהל JSP לכל בקשת לקוח על ידי מעבירת עצם בקשה ועצם תגובה. שימו לב ששם השיטה מתחיל בקו תחתון כדי להבחין אותה מבין שאר שלבי החיים, מכיוון שאי אפשר לדרוס שיטה זו. כל הקוד של JSP נכנס לתוך שיטה זו והיא מודרכת באופן ברירת מחדל. לא נסתיים לדרוס אותה באמצעות אלמנט כתיבת ההכרזה של JSP. שיטה זו מוגדרת בממשק HttpJspPage.
    3. jspDestroy(): שיטה זו נקראת על ידי התקן כאשר JSP נטען מחדש מהזכר או ממנגנון היישום. שיטה זו נקראת רק פעם אחת במחזור החיים של JSP ועלינו לדרוס שיטה זו כדי לשחרר כל משאב שנוצר בשיטת האתחול של JSP.
  4. אילו שיטות במחזור חיי JSP ניתן לדרוס?

    ניתן לדרוס את השיטות jspInit() ו-jspDestroy() באמצעות אלמנט ההכרזה ב-JSP. יש לדרוס את שיטת jspInit() כדי ליצור משאבים משותפים שנרצה להשתמש בהם בשיטת השרות של JSP ולדרוס את שיטת jspDestroy() כדי לשחרר את המשאבים המשותפים.

  5. איך ניתן למנוע גישה ישירה לדפי JSP מדפדפן הלקוח?

We know that anything inside the WEB-INF directory can't be accessed directly in a web application, so we can place our JSP pages in WEB-INF directory to avoid direct access to JSP page from the client browser. But in this case, we will have to configure it in deployment descriptor just like Servlets. The sample configuration is given below code snippet of web.xml file.

```
<servlet>
  <servlet-name>Test</servlet-name>
  <jsp-file>/WEB-INF/test.jsp</jsp-file>
  <init-param>
    <param-name>test</param-name>
    <param-value>Test Value</param-value>
  </init-param>
</servlet>
   
<servlet-mapping>
  <servlet-name>Test</servlet-name>
  <url-pattern>/Test.do</url-pattern>
</servlet-mapping>
```
  1. מהם סוגי ההערות השונים ב-JSP?

JSP pages provide two types of comments that we can use:
-   **HTML Comments**: Since JSP pages are like HTML, we can use HTML comments like `<!-- HTML Comment -->`. These comments are sent to client also and we can see it in HTML source. So we should avoid any code level comments or debugging comments using HTML comments.
-   **JSP Comments**: JSP Comments are written using scriptlets like `<%-- JSP Comment --%>`. These comments are present in the generated servlet source code and doesn't sent to client. For any code level or debugging information comments we should use JSP comments.
  1. מהם Scriptlet, Expression ו-Declaration ב-JSP?

Scriptlets, Expression and Declaration are scripting elements in JSP page using which we can add java code in the JSP pages. A scriptlet tag starts with `<%` and ends with `%>`. Any code written inside the scriptlet tags go into the `_jspService()` method. For example;

```
<%
Date d = new Date();
System.out.println("Current Date="+d);
%>
```

Since most of the times we print dynamic data in JSP page using _out.print()_ method, there is a shortcut to do this through JSP Expressions. JSP Expression starts with `<%=` and ends with `%>`. `<% out.print("Pankaj"); %>` can be written using JSP Expression as `<%= "Pankaj" %>` Notice that anything between `<%= %>` is sent as parameter to `out.print()` method. Also notice that scriptlets can contain multiple java statements and always ends with semicolon (;) but expression doesn't end with semicolon. JSP Declarations are used to declare member methods and variables of servlet class. JSP Declarations starts with `<%!` and ends with `%>`. For example we can create an int variable in JSP at class level as `<%! public static int count=0; %>`.
  1. מהם האובייקטים הסתומים ב-jsp?

**JSP implicit objects** are created by container while translating JSP page to Servlet source to help developers. We can use these objects directly in **scriptlets** that goes in service method, however we can't use them in JSP Declaration because that code will go at class level. We have 9 implicit objects that we can directly use in JSP page. Seven of them are declared as local variable at the start of _\_jspService()_ method whereas two of them are part of _\_jspService()_ method argument that we can use.
1.  out Object
2.  request Object
3.  response Object
4.  config Object
5.  application Object
6.  session Object
7.  pageContext Object
8.  page Object
9.  exception Object
10.  JSP Implicit Objects Example

קרא בפירוט על כל אחד מהם ב-האובייקטים הסתומים ב-jsp.19. ### האם ניתן להשתמש באובייקטים הסתומים של jsp במתודה המוגדרת בהצהרת jsp?

No we can't because JSP implicit objects are local to service method and added by JSP Container while translating JSP page to servlet source code. JSP Declarations code goes outside the service method and used to create class level variables and methods and hence can't use JSP implicit objects.
  1. איזה אובייקט סתום אינו זמין בדפי jsp רגילים?

JSP exception implicit object is not available in normal JSP pages and it's used in JSP error pages only to catch the exception thrown by the JSP pages and provide useful message to the client.
  1. מהם היתרונות של אובייקט ה-PageContext המשתמש?

JSP pageContext implicit object is instance of javax.servlet.jsp.PageContext abstract class implementation. We can use pageContext to get and set attributes with different scopes and to forward request to other resources. pageContext object also hold reference to other implicit object. This is the only object that is common in both JSP implicit objects and in JSP EL implicit objects.
  1. כיצד אנו מגדירים פרמטרי תחילה (init params) עבור JSP?

We can configure init params for JSP similar to servlet in web.xml file, we need to configure JSP init params with servlet and servlet-mapping element. The only thing differs from servlet is jsp-file element where we need to provide the JSP page location.
  1. למה שימוש באלמנטים סקריפטינג ב-JSP מורד?

JSP pages are mostly used for view purposes and all the business logic should be in the servlet or model classes. We should pass parameters to JSP page through attributes and then use them to create the HTML response in JSP page. Most part of the JSP page contains HTML code and to help web designers to easily understand JSP page and develop them, JSP technology provides action elements, JSP EL, JSP Standard Tag Library and custom tags that we should use rather than scripting elements to bridge the gap between JSP HTML part and JSP java part.
  1. האם אנו יכולים להגדיר מחלקה בדף JSP?

It's not a good practice though, but we can define a class inside a JSP Page. Below is the sample code for this:

```
<%!
private static class NestedClass { //static is better because Servlet is multi-threaded
  private final int num = 0;
  public int getNum() {
    return num;
  }
}
%>
```

Or

```
<%      
    class Person { 
        //זה ייכנס לתוך גוף המתודה, ולכן לא יכול להיות ציבור
    }
%>
```
  1. איך ניתן להשבית קוד ג'אווה או סקריפטינג בדף JSP?

We can disable scripting elements in JSP pages through deployment descriptor configuration like below.

```
<jsp-config>
	<jsp-property-group>
		<url-pattern>*.jsp</url-pattern>
		<scripting-invalid>true</scripting-invalid>
	</jsp-property-group>
</jsp-config>
```

Above URL-pattern will disable scripting for all the JSP pages but if you want to disable it only for a specific page, you can give the JSP file name itself.
  1. הסבר על אלמנטי פעולה של JSP או תגי פעולה?

JSP action elements or action tags are HTML like tags that provide useful functionalities such as working with Java Bean, including a resource, forwarding the request and to generate dynamic XML elements. JSP action elements always starts with jsp: and we can use them in JSP page directly without the need to import any tag libraries or any other configuration changes. Some of the important action elements are jsp:useBean, jsp:getProperty, jsp:setProperty, jsp:include and jsp:forward. Read more in details about these at [**JSP Action Elements**](/community/tutorials/jsp-action-tags-jsp-usebean-include-forward).
  1. מה ההבדל בין הכוונה לכלול ובין פעולת jsp:include?

The difference between JSP include directive and include action is that in include directive the content to other resource is added to the generated servlet code at the time of translation whereas with include action it happens at runtime. Another difference is that in JSP include action, we can pass params to be used in the included resource with `jsp:param` action element but in JSP include directive we can't pass any params. When the included resource is static such as header, footer, image files then we should use include directive for faster performance but if the included resource is dynamic and requires some parameters for processing then we should use include action tag.
  1. מהו שפת הביטוי של JSP ומהם היתרונות שלה?

Most of the times we use JSP for view purposes and all the business logic is present in servlet code or model classes. When we receive client request in the servlet, we process it and then add attributes in request/session/context scope to be retrieved in JSP code. We also use request params, headers, cookies and init params in JSP to create response views. We can use scriptlets and JSP expressions to retrieve attributes and parameters in JSP with java code and use it for view purpose. But for web designers, java code is hard to understand and that’s why JSP Specs 2.0 introduced Expression Language (EL) through which we can get attributes and parameters easily using HTML like tags. Expression language syntax is `${name}` and we can use EL implicit objects and EL operators to retrieve the attributes from different scopes and use them in JSP page. Read more about JSP EL with example program at [**JSP EL Tutorial**](/community/tutorials/jsp-expression-language-el-example-tutorial).
  1. מהם אובייקטים רמז ב-JSP EL וכיצד הם שונים מאובייקטים רמז ב-JSP?

JSP Expression Language provides many implicit objects that we can use to get attributes from different scopes and parameter values. Note that these are different from JSP implicit objects and contains only the attributes in given scope. The only common implicit object in JSP EL and JSP page is pageContext object. Below table provides a list of implicit object in JSP EL.

| JSP EL Implicit Objects | Type | Description |
| --- | --- | --- |
| pageScope | Map | A map that contains the attributes set with page scope. |
| requestScope | Map | Used to get the attribute value with request scope. |
| sessionScope | Map | Used to get the attribute value with session scope. |
| applicationScope | Map | Used to get the attributes value from application scope. |
| param | Map | Used to get the request parameter value, returns a single value |
| paramValues | Map | Used to get the request param values in an array, useful when request parameter contain multiple values. |
| header | Map | Used to get request header information. |
| headerValues | Map | Used to get header values in an array. |
| cookie | Map | Used to get the cookie value in the JSP |
| initParam | Map | Used to get the context init params, we can't use it for servlet init params |
| pageContext | pageContext | Same as JSP implicit pageContext object, used to get the request, session references etc. example usage is getting request HTTP Method name. |
  1. איך להשתמש ב-JSP EL כדי לקבל את שם שיטת ה-HTTP?

We can use pageContext JSP EL implicit object to get the request object reference and use dot operator to get the HTTP method name in JSP page. The JSP EL code for this will be `${pageContext.request.method}`.
  1. מהו ספריית התגיות התקנית של JSP, ונא לספק דוגמאות שימוש?

JSP Standard Tag Library or JSTL is more versatile than JSP EL or Action elements because we can loop through a collection or escape HTML tags to show them like text in response. JSTL is part of the Java EE API and included in most servlet containers. But to use JSTL in our JSP pages, we need to download the JSTL jars for your servlet container. Most of the times, you can find them in the example projects and you can use them. You need to include these libraries in the project WEB-INF/lib directory. These jars are container specific, for example in Tomcat, we need to include jstl.jar and standard.jar jar files in the project build path. Read more about JSTL tags with example program at [**JSTL Tutorial**](/community/tutorials/jstl-tutorial-jstl-tags-example).
  1. מהם סוגי התגיות של JSTL?

Based on the JSTL functions, they are categorized into five types.
1.  Core Tags - Core tags provide support for iteration, conditional logic, catch exception, url, forward or redirect response etc.
2.  Formatting and Localization Tags - These tags are provided for formatting of Numbers, Dates and i18n support through locales and resource bundles.
3.  SQL Tags - JSTL SQL Tags provide support for interaction with relational databases such as Oracle, MySql etc.
4.  XML Tags - XML tags are used to work with XML documents such as parsing XML, transforming XML data and XPath expressions evaluation.
5.  JSTL Functions Tags - JSTL tags provide a number of functions that we can use to perform common operation, most of them are for String manipulation such as String Concatenation, Split String etc.
  1. מהו JSP Custom Tag ומהם הרכיבים שלו?

Sometimes JSP EL, Action Tags and JSTL tags are not enough and we might get tempted to write java code to perform some operations in JSP page. Fortunately JSP is extendable and we can create our own custom tags to perform certain operations. We can create JSP Custom Tags with following components:
-   JSP Custom Tag Handler
-   Creating Tag Library Descriptor (TLD) File
-   Deployment Descriptor Configuration for TLDWe can add custom tag library in JSP page using taglib directive and then use it.
  1. תן דוגמה למקום בו נדרש JSP Custom Tag?

Let’s say we want to show a number with formatting with commas and spaces. This can be very useful for user when the number is really long. So we want some custom tags like below: `<mytags:formatNumber number="123456.789" format="#,###.00"/>` Based on the number and format passed, it should write the formatted number in JSP page, for the above example it should print 123,456.79 We know that JSTL doesn’t provide any inbuilt tags to achieve this, so we will create our own custom tag implementation and use it in the JSP page. Read above example implementation at [**JSP Custom Tag**](/community/tutorials/jsp-custom-tags-example-tutorial).
  1. למה אנחנו לא צריכים להגדיר תגי JSP סטנדרטיים ב- web.xml?

We don't need to configure JSP standard tags in web.xml because the TLD files are inside the META-INF directory of the JSTL jar files. When container loads the web application and finds TLD files inside the META-INF directory of the JAR file, it automatically configures them to be used directly in the application JSP pages. All we need to do it to include it in the JSP page using taglib directive.
  1. כיצד ניתן לטפל בחריגות שמושלכות על ידי שיטת השירות של JSP?

To handle exceptions thrown by the JSP page, all we need is an error page and define the error page in JSP using page directive. To create a JSP error page, we need to set the page directive attribute isErrorPage value to true, then we can access exception implicit object in the JSP and use it to send a customized error message to the client. We need to define exception and error handler JSP pages in the deployment descriptor like below.

```
<error-page>
	<error-code>404</error-code>
	<location>/error.jsp</location>
</error-page>

<error-page>
	<exception-type>java.lang.Throwable</exception-type>
	<location>/error.jsp</location>
</error-page>
```

Read more with example program at [**JSP Exception Handling**](/community/tutorials/jsp-exception-handling-jsp-error-page).
  1. כיצד אנו תופסים חריגה ומעבדים אותה באמצעות JSTL?

We can use JSTL Core tags c:catch and c:if to catch exception inside the JSP service method and process it. c:catch tag catches the exception and wraps it into the exception variable and we can use c:if condition tag to process it. Below code snippet provide sample usage.

```
<c:catch var ="exception">
   <% int x = 5/0;%>
</c:catch>
 
<c:if test = "${exception ne null}">
   <p>Exception is : ${exception} <br />
   Exception Message: ${exception.message}</p>
</c:if>
```

Notice the use of JSP EL in the `c:if` condition.
  1. כיצד אנו מדפיסים "<br> יוצר שורה חדשה ב-HTML" ב-JSP?

We can use c:out escapeXml attribute to escape the HTML elements so that it get's shown as text in the browser, for this scenario we will write code like below.

```
<c:out value="<br> creates a new line in HTML" escapeXml="true"></c:out>
```
  1. מהו jsp-config בתיאור ההפצה?

jsp-config element is used to configure different parameters for JSP pages. Some of it's usage are:
-   Configuring tag libraries for the web application like below.
    
    ```
    <jsp-config>
    		<taglib>
    			<taglib-uri>https://journaldev.com/jsp/tlds/mytags</taglib-uri>
    			<taglib-location>/WEB-INF/numberformatter.tld</taglib-location>
    		</taglib>
    </jsp-config>
    ```
    
-   We can control scripting elements in JSP pages.
-   We can control JSP Expression Language (EL) evaluation in JSP pages.
-   We can define the page encoding for URL pattern.
-   To define the buffer size to be used in JSP page out object.
-   To denote that the group of resources that match the URL pattern are JSP documents, and thus must be interpreted as XML documents.
  1. כיצד להתעלם מהערך של ביטוי ה-EL ב-JSP?

We can ignore EL evaluation in JSP page by two ways.
1.  Using page directive as `<%@ page isELIgnored="true" %>`
2.  Configuring in web.xml - better approach when you want to disable EL evaluation for many JSP pages.
    
    ```
    <jsp-config>
    	<jsp-property-group>
    		<url-pattern>*.jsp</url-pattern>
    		<el-ignored>true</el-ignored>
    	</jsp-property-group>
    </jsp-config>
    ```
  1. מתי תאתחל המיכל מספר אובייקטי JSP/Servlet?

If we have multiple servlet and servlet-mapping elements in deployment descriptor for a single servlet or JSP page, then container will initialize an object for each of the element and all of these instances will have their own ServletConfig object and init params. For example, if we configure a single JSP page in web.xml like below.

```
<servlet>
  <servlet-name>Test</servlet-name>
  <jsp-file>/WEB-INF/test.jsp</jsp-file>
  <init-param>
    <param-name>test</param-name>
    <param-value>Test Value</param-value>
  </init-param>
</servlet>
   
<servlet-mapping>
  <servlet-name>Test</servlet-name>
  <url-pattern>/Test.do</url-pattern>
</servlet-mapping>
   
<servlet>
  <servlet-name>Test1</servlet-name>
  <jsp-file>/WEB-INF/test.jsp</jsp-file>
</servlet>
   
<servlet-mapping>
  <servlet-name>Test1</servlet-name>
  <url-pattern>/Test1.do</url-pattern>
</servlet-mapping>
```

ואז אם נוכל לגשת לאותה עמוד JSP עם שני דפוסי URI וכל אחד יכיל ערכי init params משלו.65. ### ?האם ניתן להשתמש ב-JavaScript עם עמודי JSP

Yes why not, I have seen some developers getting confused with this. Even though JSP is a server-side technology, it's used to generate a client-side response and we can add javascript or CSS code like any other HTML page.
  1. כיצד נוכל למנוע יצירת סשן אמוי ב-JSP?

By default JSP page creates a session but sometimes we don’t need session in JSP page. We can use JSP page directive session attribute to indicate compiler to not create session by default. It’s default value is true and session is created. To disable the session creation, we can use it like below.

```
<%@ page session="false" %>
```
  1. מה ההבדל בין JspWriter ו- Servlet PrintWriter?

PrintWriter is the actual object responsible for writing the content in response. JspWriter uses the PrintWriter object behind the scene and provide buffer support. When the buffer is full or flushed, JspWriter uses the PrintWriter object to write the content into response.
  1. כיצד אפשר להרחיב טכנולוגיית JSP?

We can extend JSP technology with custom tags to avoid scripting elements and java code in JSP pages.
  1. ספק כמה תרגילים מומלצים ל-JSP?

Some of the JSP best practices are:
1.  Avoid scripting elements in JSP pages. If JSP EL, action elements and JSTL not serve your needs then create custom tags.
2.  Use comment properly, use JSP comments for code level or debugging purpose so that it's not sent to client.
3.  Avoid any business logic in JSP page, JSP pages should be used only for response generation for client.
4.  Disable session creation in JSP page where you don't need it for better performance.
5.  Use page, taglib directives at the start of JSP page for better readability.
6.  Proper use of jsp include directive or include action based on your requirements, include directive is good for static content whereas include action is good for dynamic content and including resource at runtime.
7.  Proper exception handling using JSP error pages to avoid sending container generated response incase JSP pages throw exception in service method.
8.  If you are having CSS and JavaScript code in JSP pages, it's best to place them in separate files and include them in JSP page.
9.  Most of the times JSTL is enough for our needs, if you find a scenario where it's not then check your application design and try to put the logic in a servlet that will do the processing and then set attributes to be used in JSP pages.

אנא הודיעו לי אם פספסתי כל שאלת ראיון חשובה בJSP, אני אוסיף עוד לרשימה בעתיד.

Source:
https://www.digitalocean.com/community/tutorials/jsp-interview-questions-and-answers