מהם סרוולטים של Java? בקש טיפול ליישומי אינטרנט של Java

הטיפול בבקשה הוא הלחם והחמאה של פיתוח יישומי אינטרנט בג'אווה. על מנת לענות לבקשות מהרשת, יישום אינטרנט בג'אווה צריך לקבוע תחילה איזה קוד יגיב לכתובת ה- URL של הבקשה, ואז לרשום תגובה. לכל ערימת טכנולוגיה דרך לבצע טיפול בתשובת בקשה. ב- Java, אנו משתמשים ב- servlets (וב- API Servlet API של Java) למטרה זו. חשוב על סרוולט כעל שרת זעיר שתפקידו לקבל בקשות ולהוציא תגובות.

כתובת URL לעומת נקודת קצה

כמשתמש באינטרנט, אתה מכיר כתובות אתרים ככתובת האתר בדפדפן שלך. כמפתח, ייתכן שתדע גם כתובות אתרים כנקודות קצה עבור שירותי אינטרנט. URL (Uniform Resource Locator) הוא דרך סטנדרטית לתאר ולאתר משאבי אינטרנט באמצעות טקסט. המונח נקודת סיום מתייחס לכתובת אתר המציינת שירות אינטרנט. תנאי נקודות הקצה ואת כתובת האתר הם לעתים קרובות לסירוגין, למרות שהם מתייחסים לתחומים שימוש שונים.

תוכנה כשכבות

כפי שהסברתי בהקדמה שלי לסביבת Java Runtime, אנו יכולים לראות בתוכנה סדרה של שכבות. כל שכבה במערכת תוכנה מחזיקה ביכולות מסוימות הנדרשות על ידי השכבות שמעליה. כדוגמה, שכבת החומרה יושבת מתחת לשכבת הקושחה, ותומכת בפונקציונליות שלה. כמו כן, יש צורך בשכבת הקושחה (BIOS במחשב אישי או EFI ב- Mac) להפעלת מערכת ההפעלה. איור 1 מציג את שלושת המרכיבים הללו בתרשים מרובד.

מתיו טייסון

אתה יכול גם להסתכל על מערכת תוכנה כסדרה של מכולות , כאשר השכבות התחתונות משמשות כמכולות עבור הגבוהות יותר. כל שכבה משמשת כהקשר להפעלת הרמה הבאה של פונקציונליות: חומרה מכילה קושחה וקושחה מכילה את מערכת ההפעלה.

Java בצד השרת

Java בצד השרת היישום הוא אחד מעמד רחב של יישומים המשמשים נקודות קצה ברשת, קבלת בקשות HTTP מכתובת URL נתון ושליחת נתונים בחזרה בפורמט מחלף כמו HMTL או JSON. Java בצד השרת מורכב משרתי Java סטנדרטיים ומטכנולוגיות לאינטראקציה עם שרתים אלה. ה- API של Servlet API של Java הוא הסטנדרט המשמש לאינטראקציה עם שרת Java.

שרתי Java ו- JVM

במערכות מבוססות Java, מערכת ההפעלה (OS) מכילה את ה- JVM, המספק סביבה עקבית להפעלת יישומי Java. שרת Java יושב על גבי ה- JVM. בדיוק כמו JVM הוא המתווך בין מערכת ההפעלה ליישום Java שלך, שרת Java מספק גישה עקבית ויעילה ליכולות הרשת והעיבוד של מערכת ההפעלה. יישום Java פועל בתוך השרת ומשתמש ב- API של Servlet API של Java כדי לגשת ליכולות השרת.

איור 2 מציג מחסנית תוכנה עבור Java בצד השרת.

מתיו טייסון

מפרט Java Servlet

מפרט Java Servlet מספק את ההגדרה הבסיסית עבור שרת Java ורכיבים קשורים. הוא מגדיר כיצד השרת ישלח בקשות ותגובות במהלך אינטראקציות ברשת באמצעות HTTP. כל שרתי Java חייבים להיות תואמים למפרט Java Servlet. רוב שרתי Java כיום תואמים ל- Servlet 4.0.

סרוולט 4.0

כל גרסה של מפרט Java Servlet מביאה תכונות חדשות. Servlet 4.0 כולל תמיכה בפרוטוקול HTTP / 2 ובמנגנון דחיפת השרת שלו. דחיפת שרת מאפשרת לשרת לטעון מראש נכסים הנדרשים על ידי דף אינטרנט, במקום להמתין לבקשה ספציפית. המפרט Servlet 4.0 משלב גם את היכולת לגלות מיפושי כתובות אתרים בזמן ריצה, תכונה המכונה גילוי זמן ריצה .

Eclipse Enterprise עבור Java

Servlet 4.0 הוא חלק מיוזמת קוד הפתוח EE4J (Eclipse Enterprise for Java), הכוללת החלפה מוצעת ל- JCP.

להבנה מעשית של אופן הפעולה של מפרט Servlet, שקול את המאמר שאתה קורא כרגע. אי שם בתוך מעי התשתית של JavaWorld, מאמר זה עוצב והוגש לפרסום. הוקצה לו כתובת אתר, הנותב דרך הרשת והגיע לשרת. השרת חיבר את החפץ (מאמר) עם ה- URL וקבע שכאשר תגיע בקשת GET עבור אותה URL, הוא ישמש מאמר זה כ- HTML.

כשאתה יוצר יישום אינטרנט של Java, אתה יוצר תוכנה שפועלת בתוך שרת Java. היישום מנצל את המתקנים שמספק הקשר השרת, ואחד מאותם מתקנים הוא Servlet API. מסיבה זו, שרת Java המיישם את מפרט Servlet נקרא לפעמים מיכל servlet .

כדי ליצור סרוולט, אתה מיישם את Servletהממשק ופורס אותו בתוך מיכל סרוולט. איור 3 מראה כיצד היישום שלך מסתמך על סרוולט.

מתיו טייסון

כתיבת סרוולטים עם Tomcat

עכשיו שיש לכם סקירה רעיונית, בואו נלך לענייני כתיבת סרוולט ג'אווה.

הדבר הראשון שתצטרך הוא מיכל סרוולט, הידוע גם בשם שרת יישומי Java. Tomcat ו- Jetty הם שניים ממיכלי השרת הנפוצים ביותר. נשתמש ב- Tomcat מכיוון שהוא אחד משרתי היישומים הוותיקים ביותר עבור Java. Tomcat הוא בחינם ומכיל פעמונים ושריקות מינימליות, מה שישמור על הדברים פשוטים לדוגמא שלנו. ("פעמונים ושריקות" הוא מונח טכני, אגב.)

הורד והתקן את Tomcat

אם עדיין אין לך את Tomcat, התחל בפתיחת דף ההורדה של Tomcat. שם, אתה יכול לבחור את מתקין Windows או את הורדת ה- ZIP המתאימה ביותר למחשב שלך (לדוגמה, אני מוריד את ה- zip של 64 סיביות של Windows).

זהו: הרגע הוספת את שכבת שרת Java למערכת ההפעלה שלך!

ודא ש- Tomcat פועל

לפני שנמשיך הלאה, בואו נוודא שתוכלו להריץ את Tomcat. התחל את שירות Windows או הפעל startup.shאו startup.batהקובץ משורת הפקודה.

אם אתה פותח כעת דפדפן אינטרנט ועובר אליו localhost:8080, עליך לקבל את פני המסך הבא:

מתיו טייסון

אם אתה נתקל בבעיות בהפעלת Tomcat, תוכל לבקר בתיעוד Tomcat לפתרון בעיות.

הפעל את דוגמת servlet של Tomcat

עכשיו בואו נסתכל על סרוולט של ג'אווה. באופן נוח, Tomcat כלל כמה דוגמאות פשוטות.

לחץ על קישור הדוגמאות שאתה רואה בקטע התחלה מהירה למפתחים בדף הפתיחה של Tomcat. ברגע שאתה שם, לחץ על הקישור דוגמאות Servlet .

כעת תוכל לראות סרוולט פשוט בפעולה על ידי לחיצה על קישור Hello Worldהדוגמה Execute. זה יביא את הדפדפן שלך אל // localhost: 8080 / דוגמאות / servlets / servlet / HelloWorldExample URL, שם תראה את ההצדעה של המתכנת הרב שנתי.

הצגת קוד המקור של ה- servlet

לחץ על החץ לאחור בדפדפן שלך, ואז לחץ על קישור המקור לאפליקציית HelloWorld. המקור מוצג ברשימה 1.

רישום 1. קוד מקור לדוגמא HelloWorld

 import java.io.*; import javax.servlet.*; import javax.servlet.http.*; public class HelloWorld extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { response.setContentType("text/html"); PrintWriter out = response.getWriter(); out.println(""); out.println(""); out.println("Hello World!"); out.println(""); out.println(""); out.println(""); out.println(""); out.println(""); } } 

רישום קוד פשוט מאוד זה מכיל את המרכיבים הבסיסיים של סרוולט של Java. בואו ניקח את זה שלב אחר שלב.

The first line calls the standard Java imports. After that, the program defines a new class, which extends the HttpServlet class. This is critical because servlets must implement the Servlet interface in order to run inside a servlet container.

Next, the HelloWorld class defines a method called doGet(). This is a standard method on servlets: it tells the server to route HTTP GET requests to this method. Other HTTP methods, like POST, are handled by similarly named methods, like doPost.

Notice that that doGet() has two parameters: (HttpServletRequest request, HttpServletResponse response). These two objects represent the request and response. They provide access to everything your code needs to deal with the request and issue a response. In the HelloWorld.doGet servlet method, for example, the response object is used to inform the server what content type header to issue. In this case, it's response.setContentType("text/html");.

Finally, the program obtains a Java Writer object from the response response.getWriter(). The Writer is then used to create a simple HTML response to return to the browser.

URL mapping

The structure and code flow in Listing 1 are fairly intuitive, but there is a glaring omission. How does the server know to associate the //localhost:8080/examples/servlets/servlet/HelloWorldExample URL to the HelloWorld.doGet method?

You will find the answer to this mystery in the application meta-data. Every Java web application includes a standard meta-data file, called web.xml, which tells the server how to map URLs to servlets.

What is meta-data?

Meta-data is any information that is used to control the operation of software from outside the software itself.

In the Tomcat example apps, the web.xml is found at \apache-tomcat-9.0.11\webapps\examples\WEB-INF\web.xml. The \WEB-INF\web.xml is the standard location of the meta-data file for servlets. If you open this file, you'll see how the server is configured.

The abbreviated web.xml in Listing 2 has just the information we need for our discussion.

Listing 2. Source code for the Tomcat HelloWorld example

     HelloWorldExample HelloWorldExample   HelloWorldExample /servlets/servlet/HelloWorldExample    

Listing 2 shows a typical XML file header referencing the schema for a Java web application descriptor. This is followed by two entries: and.

The call to assigns a logical name, HelloWorldExample, to the HelloWorldExample class, via the and fields.

The call to assigns that logical name to the value, thereby associating the code to the URL.

Note that the field supports wild cards in order to handle a variety of flexible URL mappings.

Other servlet capabilities

בנוסף למיפוי כתובות אתרים, סרוולטים מספקים יכולות נוספות לסינון ואימות. מסננים משמשים לעיבוד בקשות, ואימות משמש להקצאת משתמשים ותפקידים פשוטים לדפוסי URL. המפרט של דפי JavaServer (JSP) מספק תמיכה ביצירת HTML בצורה הרבה יותר חזקה.

סיכום

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

סיפור זה, "מהם סרוולטים של Java? בקשת טיפול ליישומי אינטרנט של Java" פורסם במקור על ידי JavaWorld.