JavaRush /จาวาบล็อก /Random-TH /Tomcat ในภาษาชวา

Tomcat ในภาษาชวา

เผยแพร่ในกลุ่ม
เมื่อถึงจุดหนึ่ง นักพัฒนาทุกคนจะได้รับทักษะเพียงพอที่จะคิดเกี่ยวกับการสร้างโครงการของตัวเองเพื่อนำความรู้ไปปฏิบัติ ง่ายที่สุดในการทำโปรเจ็กต์เว็บ เนื่องจากการใช้งานเว็บแอปพลิเคชันไม่ได้ถูกจำกัดด้วยข้อจำกัดใดๆ เช่น แอปพลิเคชันเดสก์ท็อป ไคลเอนต์ต้องการเพียงเบราว์เซอร์และสามารถโต้ตอบกับแอปพลิเคชันโดยไม่ต้องดาวน์โหลดการแจกจ่ายใด ๆ โดยไม่ต้องลงทะเบียนและ SMS อย่างที่พวกเขาพูด (แม้ว่าจะขึ้นอยู่กับแอปพลิเคชันนั้นก็ตาม) Tomcat ใน Java - 1ดังนั้น เพื่อใช้งานเว็บแอปพลิเคชันที่ดีใน Java คุณไม่สามารถทำได้หากไม่มีเครื่องมือชื่อ 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แผนภาพโดยประมาณของการโต้ตอบของส่วนประกอบต่างๆ จะแสดง "บนนิ้ว" ในความเป็นจริง วิธีการทำงานของ Tomcat นั้นซับซ้อนกว่ามาก แต่ก็เพียงพอแล้วสำหรับความเข้าใจพื้นฐาน

การติดตั้ง Tomcat

หากต้องการใช้ Tomcat ใน Java จำเป็นต้องติดตั้งบนระบบ คุณสามารถอ่านเกี่ยวกับวิธีติดตั้ง Tomcat ได้ในบทความนี้ ซึ่งครอบคลุมถึงแอปพลิเคชันเซิร์ฟเวอร์อื่นๆ ด้วย ดังนั้น การมี Tomcat ที่ใช้งานได้ในตัวใน IDEA คุณสามารถลองเตรียมเซิร์ฟเล็ตแรกของคุณได้

วิธีสร้างเว็บแอปพลิเคชัน

หากต้องการสร้างเว็บแอปพลิเคชัน คุณต้องยึดตามโครงสร้างโฟลเดอร์เฉพาะ IntelliJ IDEA มีฟังก์ชันการสร้างแอปพลิเคชันเว็บในเมนูการสร้างโครงการ เมื่อสร้างโปรเจ็กต์ในลักษณะนี้ คุณจะเห็นโครงสร้างที่เรียบง่าย: Tomcat ใน Java - 3ใน src มีแหล่งที่มาเช่นเคย และในโฟลเดอร์เว็บ web.xml และ index.jsp จะถูกสร้างขึ้น web.xml เป็นคำสั่งสำหรับ Tomcat ที่จะค้นหาตัวจัดการคำขอและข้อมูลอื่นๆ index.jsp คือหน้าหลักของเว็บแอปพลิเคชันที่ผู้ใช้ควรไปก่อน (นี่คือการกำหนดค่าเริ่มต้น) ในการรันครั้งแรก คุณสามารถแก้ไขไฟล์ index.jsp ได้:
<%@ 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ไคลเอนต์ได้รับเนื้อหาของไฟล์ index.jsp ในเบราว์เซอร์เมื่อนำทางไปที่ '/' นั่นคือไปยังหน้าหลัก ตอนนี้เรามาเพิ่มลิงค์ไปยังหน้าที่จะแสดงเวลาเซิร์ฟเวอร์ปัจจุบัน หากต้องการสร้างเซิร์ฟเล็ตแรก คุณต้องใช้ไลบรารี servlet-api.jar ที่มาพร้อมกับ Tomcat (สามารถพบได้ในโฟลเดอร์ lib) มาสร้างเซิร์ฟเล็ตที่จะแสดงเวลาเซิร์ฟเวอร์ปัจจุบันบนเพจกัน เมื่อต้องการทำเช่นนี้ คุณต้องสร้างชั้น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 แทรกการกำหนดค่าต่อไปนี้ระหว่างแท็ก: requestresponse/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จะถูกเรียกเมื่อมีการร้องขอ URL/เวลา แท็กที่สาม - 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ตามลิงค์: Tomcat ใน Java - 6เยี่ยมมาก ทุกอย่างใช้งานได้ ในตัวอย่าง เราใช้การเปลี่ยนจากหน้าหลักไปเป็นหน้าเสริม ซึ่งมีการส่งพารามิเตอร์และแสดงให้ผู้ใช้เห็น หากคุณมีปัญหาในการใช้งานเซิร์ฟเล็ต ฉันขอแนะนำให้อ่าน โพสต์นี้ซึ่งจะให้คำแนะนำในการแก้ปัญหานี้ สำหรับการแนะนำเซิร์ฟเล็ตที่สมบูรณ์ยิ่งขึ้น เราขอแนะนำให้อ่านบทความ ( ตอนที่ 1 , ตอนที่ 2 ) ซึ่งผู้เขียนอธิบายรายละเอียดเกี่ยวกับการสร้างแอปพลิเคชันอย่างง่ายโดยใช้เซิร์ฟเล็ตและ jsp

วิธีฝังแอปพลิเคชันลงในเซิร์ฟเวอร์ที่ทำงานอยู่

แม้ว่า Tomcat ในตัวใน IDEA จะเป็นคุณสมบัติที่สะดวกสบาย แต่เว็บแอปพลิเคชันสามารถย้ายไปยังเซิร์ฟเวอร์อื่นและไปยังคอนเทนเนอร์อื่นได้ ลองพิจารณาตัวเลือกเมื่อคุณต้องการฝังแอปพลิเคชันของคุณลงในเซิร์ฟเวอร์ที่ทำงานอยู่แล้ว ขั้นแรก จำเป็นต้องเข้าใจ วัตถุประสงค์และหน้าที่ของคอนเทนเนอร์เซิร์ฟเล็ตเพิ่มเติม โปรแกรมที่แสดงในตัวอย่างข้างต้นเป็นโปรแกรมบนเว็บ คลาส TimeWorkerเป็นเซิร์ฟเล็ต ส่วนประกอบดำเนินการประมวลผลคำขอโดยเฉพาะ ส่วนประกอบเหล่านี้ต้องถูกสร้างไว้ในคอนเทนเนอร์เซิร์ฟเล็ตพิเศษ วัตถุประสงค์ของคอนเทนเนอร์เซิร์ฟเล็ตคือเพื่อรองรับเซิร์ฟเล็ตและรับรองวงจรการใช้งาน ตัวอย่างที่ง่ายที่สุดของการทำงานของ Tomcat คือการสแกนโฟลเดอร์เฉพาะเพื่อดูว่ามีเซิร์ฟเล็ตใหม่ปรากฏขึ้นหรือไม่ หากใช่ ให้เริ่มต้นและเตรียมพร้อมเพื่อรับคำขอจากลูกค้า หากเซิร์ฟเล็ตได้รับการอัพเดต ให้เตรียมใช้งานใหม่เพื่ออัพเดตส่วนประกอบ เมื่อลบเซิร์ฟเล็ต ให้หยุดการประมวลผลคำขอและลบเซิร์ฟเล็ตออกจาก Tomcat

ฟังก์ชั่นคอนเทนเนอร์เซิร์ฟเล็ต

  1. การแลกเปลี่ยนข้อมูลระหว่างเซิร์ฟเล็ตและไคลเอนต์
  2. การจัดระเบียบเซสชันของลูกค้า
  3. การสร้างสภาพแวดล้อมซอฟต์แวร์สำหรับการทำงานของเซิร์ฟเล็ต
  4. Идентификация и авторизация клиентов;
  5. В большинстве случаев — управление метаданными (заголовки, методы и прочее).
Во-вторых, необходимо разобраться, How установить свой сервлет.

Установка сервлета

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В появившемся поле нужно нажать на deployed_war. Затем начнется сборка проекта и Intellij IDEA создаст папку out, в которой появится папка artifacts с именем нашего артефакта. В этой папке будет лежать файл deployed_war.war: Tomcat ใน Java - 8Теперь можно деплоить этот файл в Tomcat. Деплой applications проще всего выполнить из веб-интерфейса Tomcat. Просто нажмите кнопку выбора file на вкладке Deploy, перейдите к местоположению file WAR и выберите его, затем нажмите кнопку развертывания. В обоих случаях, если все пойдет хорошо, консоль Tomcat сообщит нам, что развертывание прошло успешно примерно таким выводом в консоль: INFO: Deployment of web application archive \path\to\deployed_war has finished in 4,833 ms

Польза Tomcat для разработки

Для разработчиков контейнеры сервлетов имеют огромную роль, так How решают целый спектр проблем. Для программирования на Java Tomcat обеспечивает несколько серьезных преимуществ:
  1. Самое главное, Tomcat может выполнять роль полноценного web-serverа. Благодаря этому развертывание приложений происходит гораздо быстрее, чем было раньше.Также Tomcat может выступать в роли классического контейнера сервлетов, который можно встроить в более крупный веб-server.

  2. Tomcat способствует обмену данными между клиентом и сервлетом, обеспечивает программный контекст для веб-приложений, берет на себя функции идентификации и авторизации клиентов, создание сессий для каждого из них.

  3. ให้การจัดการเพจ JSP ที่สะดวกมาก ที่จริงแล้วเว็บเซิร์ฟเวอร์สามารถให้บริการได้เฉพาะ html เท่านั้น Jasper ซึ่งเป็นส่วนประกอบของ Tomcat รวบรวมโค้ดที่อยู่ในแท็กเทมเพลตเพจ JSP ให้เป็นไฟล์ HTML ที่ถูกต้องที่ไคลเอ็นต์ได้รับ ตรรกะการสร้างเทมเพลตทั้งหมดอยู่ภายใน Tomcat ทำให้คุณสามารถเพิ่มแม้แต่ตัวสร้างที่ซับซ้อนให้กับรูปแบบ HTML แบบคลาสสิกได้

และสุดท้าย:บ่อยครั้งที่นักพัฒนามือใหม่มักถูกถามคำถาม: เป็นไปได้ไหมที่จะรันแอปพลิเคชัน Java โดยไม่ต้องใช้ main-method มองแวบแรกถ้าดูตัวอย่างข้างต้นก็เป็นไปได้ เซิร์ฟเล็ตของเราถูกดำเนินการโดยไม่มี main. อย่างไรก็ตามมันไม่ใช่ Tomcat มีวิธีการของตัวเอง mainซึ่งจะถูกเรียกเมื่อเซิร์ฟเวอร์เริ่มทำงาน คุณอาจถูกจับได้ว่าถามคำถามนี้ในการสัมภาษณ์

ลิงค์เพิ่มเติม:

ความคิดเห็น
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION