- Tomcat ตระหนักถึง Javarush
- Tomcat - มันคืออะไร?
- ส่วนประกอบ Tomcat
- การติดตั้ง Tomcat
- วิธีสร้างเว็บแอปพลิเคชัน
- วิธีฝังแอปพลิเคชันลงในเซิร์ฟเวอร์ที่ทำงานอยู่
- ประโยชน์ของ Tomcat เพื่อการพัฒนา
- ลิงค์เพิ่มเติม
Tomcat ตระหนักถึง Javarush
Tomcat ได้รับการศึกษาที่ระดับ 9 ของภารกิจ Java Collections ในหลักสูตร JavaRush ในการบรรยาย 2 ครั้ง Bilaabo จะบอกวิธีดาวน์โหลดและกำหนดค่า Tomcatรวมถึงสร้างเว็บแอปพลิเคชันแรกของคุณTomcat - มันคืออะไร?
Tomcat เป็นคอนเทนเนอร์เซิร์ฟเล็ตโอเพ่นซอร์สที่ทำหน้าที่เป็นเว็บเซิร์ฟเวอร์ด้วย เมื่อมองแวบแรก Tomcat ดูเหมือนเป็นหัวข้อที่ค่อนข้างหนัก แต่ก็ไม่เป็นเช่นนั้น แอปพลิเคชัน Java ส่วนใหญ่เปิดใช้งานโดยใช้บรรทัดคำสั่งและดำเนินการบางอย่าง แอปพลิเคชันดังกล่าวใช้ฟังก์ชันที่กำหนดไว้ล่วงหน้าหนึ่งฟังก์ชัน หลังจากนั้นฟังก์ชันเหล่านั้นจะไม่ถูกดำเนินการอีกต่อไป โปรแกรมดังกล่าวมักจะมีวิธีการmain
ที่สามารถเปิดใช้งานได้ เว็บแอปพลิเคชันได้รับการออกแบบมาเพื่อโต้ตอบกับลูกค้า หากมีคำขอจากลูกค้า คำขอนั้นจะถูกประมวลผลและส่งการตอบกลับไปยังผู้ใช้ ถ้าไม่เช่นนั้น แอปพลิเคชันจะไม่ได้ใช้งาน จะใช้ตรรกะดังกล่าวในแอปพลิเคชันมาตรฐานได้อย่างไร โดยคุณต้องรองรับเซสชัน ยอมรับคำขอ HTTP ฯลฯ วงจรwhile-true
? ไม่ เราต้องการโซลูชันที่เชื่อถือได้ที่นี่ นั่นคือสิ่งที่ Tomcat มีไว้เพื่อ ในความเป็นจริง มันเป็นแอปพลิเคชัน Java ที่ดูแลการเปิดพอร์ตสำหรับการโต้ตอบกับไคลเอนต์ การตั้งค่าเซสชัน จำนวนคำขอ ความยาวส่วนหัว และการดำเนินการอื่น ๆ อีกมากมาย
ส่วนประกอบ Tomcat
Tomcat มีส่วนประกอบที่ทำหน้าที่เฉพาะที่ควรค่าแก่การรู้ มาดูกันดีกว่าคาทาลิน่า
ด้วยองค์ประกอบนี้ นักพัฒนาจึงมีโอกาสที่จะปรับใช้โปรแกรมของตนในคอนเทนเนอร์ Catalina ใช้ข้อกำหนด Servlet API ซึ่งเป็นเทคโนโลยีเว็บหลักในการเขียนโปรแกรมเว็บ Java ในความเป็นจริง Catalina เป็นคอนเทนเนอร์เซิร์ฟเล็ตภายใน Tomcat (เราจะดูแนวคิดนี้โดยละเอียดด้านล่าง)แจสเปอร์
ด้วยส่วนประกอบนี้โปรแกรมเมอร์จึงใช้เทคโนโลยี JSP สิ่งเหล่านี้เหมือนกับไฟล์ HTML มีเพียงโค้ด Java ที่ฝังไว้ซึ่งสามารถดำเนินการได้เมื่อเพจถูกส่งไปยังผู้ใช้ ซึ่งจะทำให้คุณสามารถฝังข้อมูลใดๆ ลงในเพจได้แบบไดนามิก Jasper เปลี่ยนโค้ด Java เป็น HTML และยังติดตามการเปลี่ยนแปลงและอัปเดตโดยอัตโนมัติโคโยตี้
นี่เป็นองค์ประกอบสำคัญที่รับฟังคำขอ HTTP จากไคลเอนต์บนพอร์ตเฉพาะ ให้ข้อมูลนั้นสำหรับการประมวลผลในแอปพลิเคชัน และยังส่งคืนการตอบกลับไปยังผู้ใช้อีกด้วย นั่นคือ Coyote ใช้ฟังก์ชันการทำงานของเซิร์ฟเวอร์ HTTP ส่วนประกอบเหล่านี้สามารถอธิบายเชิงโครงสร้างได้ด้วยแผนภาพต่อไปนี้:![Tomcat ใน Java - 2](https://cdn.javarush.com/images/article/1774872d-ba75-49d0-8ae2-4b1de2212ece/1024.jpeg)
การติดตั้ง Tomcat
หากต้องการใช้ Tomcat ใน Java จำเป็นต้องติดตั้งบนระบบ คุณสามารถอ่านเกี่ยวกับวิธีติดตั้ง Tomcat ได้ในบทความนี้ ซึ่งครอบคลุมถึงแอปพลิเคชันเซิร์ฟเวอร์อื่นๆ ด้วย ดังนั้น การมี Tomcat ที่ใช้งานได้ในตัวใน IDEA คุณสามารถลองเตรียมเซิร์ฟเล็ตแรกของคุณได้วิธีสร้างเว็บแอปพลิเคชัน
หากต้องการสร้างเว็บแอปพลิเคชัน คุณต้องยึดตามโครงสร้างโฟลเดอร์เฉพาะ IntelliJ IDEA มีฟังก์ชันการสร้างแอปพลิเคชันเว็บในเมนูการสร้างโครงการ เมื่อสร้างโปรเจ็กต์ในลักษณะนี้ คุณจะเห็นโครงสร้างที่เรียบง่าย:![Tomcat ใน Java - 3](https://cdn.javarush.com/images/article/1639bd83-7ee4-4a82-9463-803e13da263f/1024.jpeg)
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>$Title$</title>
</head>
<body>
<h1>Hello world!</h1>
</body>
</html>
หากติดตั้ง Tomcat โดยตรงใน IDEA คุณสามารถเริ่มต้นแอปพลิเคชันเซิร์ฟเวอร์ได้: ![Tomcat ใน Java - 4](https://cdn.javarush.com/images/article/9c5316e1-1695-4328-8ba3-6e954b21e1f3/1024.jpeg)
TimeWorker
เรียน มาวางไว้ในโฟลเดอร์ src/ru/javarush/tomcat:
package ru.javarush.tomcat;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.Date;
public class TimeWorker extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
Date date = new Date();
req.setAttribute("date", date.toString());
req.getRequestDispatcher("time.jsp").forward(req, resp);
}
}
TimeWorker
สืบทอดมาจากคลาสHttpServlet
และแทนที่doGet
. ในวิธีนี้เราได้รับพารามิเตอร์สองตัว - request
และresponse
. ตามตัวอย่าง แอ็request
ตทริบิวต์ที่มีชื่อdata
และมีสตริงที่แสดงถึงวันที่ปัจจุบันจะถูกจัดเก็บไว้ จากนั้นจะถูกเรียก และพารามิเตอร์ และrequestDispatcher
ถูกส่งผ่านไป ตัวจัดการได้ถูกสร้างขึ้นแล้ว ตอนนี้คุณต้องส่งคำขอถึงเขาโดยเฉพาะ ให้การเปลี่ยนแปลงใด ๆ นำไปสู่หน้า time.jsp เปิด web.xml แทรกการกำหนดค่าต่อไปนี้ระหว่างแท็ก: request
response
/time
<web-app>
<servlet>
<servlet-name>timeWorker</servlet-name>
<servlet-class>ru.javarush.tomcat.TimeWorker</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>timeWorker</servlet-name>
<url-pattern>/time</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
แท็กแรก - servlet
- กำหนดชื่อของเซิร์ฟเล็ตและระบุพาธไปยังคลาสเซิร์ฟเล็ตที่จะประมวลผลคำร้องขอ แท็กที่สอง - servlet-mapping
- ระบุว่าเซิร์ฟเล็ตที่มีชื่อtimeWorker
จะถูกเรียกเมื่อมีการร้องขอwelcome-file-list
- ระบุไฟล์ที่จะถูกเรียกเมื่อเปลี่ยนเป็น
url /
. จะต้องกำหนดค่านี้หากจำเป็นต้องเปลี่ยนไฟล์เริ่มต้น รวมไว้ที่นี่เป็นตัวอย่าง ตอนนี้เมื่อคุณไปที่ วิธีการ ในคลาส
/time
จะถูกเรียกและส่งคืนเพจ time.jsp... ซึ่งไม่มีอยู่ มาสร้างมันถัดจาก index.jsp:
doGet
TimeWorker
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Hello</title>
</head>
<body>
<h1>Current server time: <%=request.getAttribute("date")%></h1>
</body>
</html>
จุดเริ่มต้นเป็นแบบคลาสสิก แต่แท็ก
h1
มีการดึงดูดวัตถุ
request
ซึ่งถูกล้อมกรอบด้วย
<%=
และ
%>
นี่คือแท็กเทมเพลต รหัสที่อยู่ในแท็กเหล่านี้จะถูกเรียกก่อนที่จะถูกส่งไปยังไคลเอนต์ อ็อบเจ็กต์
request
มี
response
อยู่ในแท็กดังกล่าวในไฟล์ JSP ใด ๆ ในตัวอย่างนี้ เวลาเซิร์ฟเวอร์ปัจจุบันซึ่งส่งโดยเซิร์ฟเล็ต จะถูกแทนที่ที่
TimeWorker
นั่น เพื่อความสะดวก เราสร้างลิงก์ไปยังไฟล์ index.jsp
/time
:
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>$Title$</title>
</head>
<body>
<h1>Hello world!</h1>
<a href="/time">Узнать текущее время serverа</a>
</body>
</html>
มาดูตัวอย่างกัน:
![Tomcat ใน Java - 5](https://cdn.javarush.com/images/article/84d694e5-2a9d-4c49-9590-fd9f957894c1/1024.jpeg)
![Tomcat ใน Java - 6](https://cdn.javarush.com/images/article/688ddc30-994b-4dac-8dd9-9ddf242c9516/1024.jpeg)
วิธีฝังแอปพลิเคชันลงในเซิร์ฟเวอร์ที่ทำงานอยู่
แม้ว่า Tomcat ในตัวใน IDEA จะเป็นคุณสมบัติที่สะดวกสบาย แต่เว็บแอปพลิเคชันสามารถย้ายไปยังเซิร์ฟเวอร์อื่นและไปยังคอนเทนเนอร์อื่นได้ ลองพิจารณาตัวเลือกเมื่อคุณต้องการฝังแอปพลิเคชันของคุณลงในเซิร์ฟเวอร์ที่ทำงานอยู่แล้ว ขั้นแรก จำเป็นต้องเข้าใจ วัตถุประสงค์และหน้าที่ของคอนเทนเนอร์เซิร์ฟเล็ตเพิ่มเติม โปรแกรมที่แสดงในตัวอย่างข้างต้นเป็นโปรแกรมบนเว็บ คลาสTimeWorker
เป็นเซิร์ฟเล็ต ส่วนประกอบดำเนินการประมวลผลคำขอโดยเฉพาะ ส่วนประกอบเหล่านี้ต้องถูกสร้างไว้ในคอนเทนเนอร์เซิร์ฟเล็ตพิเศษ
วัตถุประสงค์ของคอนเทนเนอร์เซิร์ฟเล็ตคือเพื่อรองรับเซิร์ฟเล็ตและรับรองวงจรการใช้งาน ตัวอย่างที่ง่ายที่สุดของการทำงานของ Tomcat คือการสแกนโฟลเดอร์เฉพาะเพื่อดูว่ามีเซิร์ฟเล็ตใหม่ปรากฏขึ้นหรือไม่ หากใช่ ให้เริ่มต้นและเตรียมพร้อมเพื่อรับคำขอจากลูกค้า หากเซิร์ฟเล็ตได้รับการอัพเดต ให้เตรียมใช้งานใหม่เพื่ออัพเดตส่วนประกอบ เมื่อลบเซิร์ฟเล็ต ให้หยุดการประมวลผลคำขอและลบเซิร์ฟเล็ตออกจาก Tomcat
ฟังก์ชั่นคอนเทนเนอร์เซิร์ฟเล็ต
- การแลกเปลี่ยนข้อมูลระหว่างเซิร์ฟเล็ตและไคลเอนต์
- การจัดระเบียบเซสชันของลูกค้า
- การสร้างสภาพแวดล้อมซอฟต์แวร์สำหรับการทำงานของเซิร์ฟเล็ต
- Идентификация и авторизация клиентов;
- В большинстве случаев — управление метаданными (заголовки, методы и прочее).
Установка сервлета
Tomcat принимает для обработки веб-applications на Java, которые имеют расширение .war. Это How jar, только web. Файлы такого типа объединяют в себе JSP-файлы, сервлеты, class-файлы, статические ресурсы и прочее. При установке такого file в Tomcat происходит его распаковка, а затем запуск, поэтому существует строгое требование к структуре файлов в проекте. Если проект был создан в IDEA, вся структура создана автоматически. Файл war можно создать стандартными средствами IDEA. Для этого необходимо зайти в ProjectStructure -> Artifacts -> Нажать “ +” -> WebApplication: Archive. В открывшемся поле задать Name для итогового war-file, например deployed_war. Ниже необходимо нажать на кнопку Create Manifest… Далее необходимо указать way to папке web проекта. В ней будет создана папка META-INF, в которую будет помещен файл MANIFEST.MF. Далее следует нажать Apply и Ok. Whatбы собрать проект в war-файл, следует во вкладке Build выбрать опцию Build Artifact:![Tomcat ใน Java - 7](https://cdn.javarush.com/images/article/149cecfb-7f9d-407a-bee3-e83e0bbee9ee/1024.jpeg)
![Tomcat ใน Java - 8](https://cdn.javarush.com/images/article/19410218-cdc0-4e15-b915-2302b1750b60/1024.jpeg)
Польза Tomcat для разработки
Для разработчиков контейнеры сервлетов имеют огромную роль, так How решают целый спектр проблем. Для программирования на Java Tomcat обеспечивает несколько серьезных преимуществ:-
Самое главное, Tomcat может выполнять роль полноценного web-serverа. Благодаря этому развертывание приложений происходит гораздо быстрее, чем было раньше.Также Tomcat может выступать в роли классического контейнера сервлетов, который можно встроить в более крупный веб-server.
-
Tomcat способствует обмену данными между клиентом и сервлетом, обеспечивает программный контекст для веб-приложений, берет на себя функции идентификации и авторизации клиентов, создание сессий для каждого из них.
-
ให้การจัดการเพจ JSP ที่สะดวกมาก ที่จริงแล้วเว็บเซิร์ฟเวอร์สามารถให้บริการได้เฉพาะ html เท่านั้น Jasper ซึ่งเป็นส่วนประกอบของ Tomcat รวบรวมโค้ดที่อยู่ในแท็กเทมเพลตเพจ JSP ให้เป็นไฟล์ HTML ที่ถูกต้องที่ไคลเอ็นต์ได้รับ ตรรกะการสร้างเทมเพลตทั้งหมดอยู่ภายใน Tomcat ทำให้คุณสามารถเพิ่มแม้แต่ตัวสร้างที่ซับซ้อนให้กับรูปแบบ HTML แบบคลาสสิกได้
main
-method มองแวบแรกถ้าดูตัวอย่างข้างต้นก็เป็นไปได้ เซิร์ฟเล็ตของเราถูกดำเนินการโดยไม่มี
main
. อย่างไรก็ตามมันไม่ใช่ Tomcat มีวิธีการของตัวเอง
main
ซึ่งจะถูกเรียกเมื่อเซิร์ฟเวอร์เริ่มทำงาน คุณอาจถูกจับได้ว่าถามคำถามนี้ในการสัมภาษณ์
GO TO FULL VERSION