Jython - Servlets

Một Java servlet là kỹ thuật phát triển web được sử dụng rộng rãi nhất. Chúng ta có thể sử dụng Jython để viết các servlet và điều này bổ sung thêm nhiều lợi thế hơn ngoài những gì Java phải cung cấp vì bây giờ chúng ta cũng có thể sử dụng các tính năng của ngôn ngữ Python.

Chúng tôi sẽ sử dụng NetBeans IDE để phát triển một ứng dụng web Java với một servlet Jython. Đảm bảo rằngnbPython pluginđược cài đặt trong cài đặt NetBeans. Bắt đầu một dự án mới để xây dựng một ứng dụng web bằng cách chọn đường dẫn sau:File → New Project → Java web → New Web Application.

Cung cấp tên và vị trí của Dự án. IDE sẽ tạo cấu trúc thư mục dự án. Thêm một tệp Java servlet (ServletTest.java) bên dưới nút gói nguồn trong cửa sổ Dự án. Điều này sẽ thêmservlet-api.jartrong thư mục lib của dự án. Ngoài ra, hãy để IDE tạo web.xmldescriptor file. Thêm mã sau vàoServletTest.java.

import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;

public class ServletTest extends HttpServlet {
   
   public void doGet (HttpServletRequest request, HttpServletResponse response)
      throws ServletException, IOException {
      doPost(request, response);
   }
   
   public void doPost (HttpServletRequest request, HttpServletResponse response)
      throws ServletException, IOException {
      response.setContentType ("text/html");
      PrintWriter toClient = response.getWriter();
      
      toClient.println (
         "<html>
            <head>
               <title>Servlet Test</title>" + "
            </head>
            <body>
               <h1>Servlet Test</h1>
            </body>
         </html>"
      );
   }
}

Tệp web.xml do NetBeans tạo ra sẽ như hình dưới đây:

<web-app>
   <servlet>
      <servlet-name>ServletTest</servlet-name>
      <servlet-class>ServletTest</servlet-class>
   </servlet>
   
   <servlet-mapping>
      <servlet-name>ServletTest</servlet-name>
      <url-pattern>/ServletTest</url-pattern>
   </servlet-mapping>
</web-app>

Xây dựng và chạy dự án để lấy văn bản Servlet Testxuất hiện trong thẻ <h1> trong cửa sổ trình duyệt. Vì vậy, chúng tôi đã thêm một Java servlet thông thường trong ứng dụng.

Bây giờ, chúng ta sẽ thêm Jython Servlet. Các servlet Jython hoạt động nhờ một servlet Java trung gian còn được gọi là PyServlet. Lớp PyServlet. có trongjython standalone.jar. Thêm nó vàoWEB-INF/lib thư mục.

Bước tiếp theo là định cấu hình web.xml để gọi PyServlet, bất cứ khi nào có yêu cầu cho bất kỳ *.py fileđược nuôi dưỡng. Điều này sẽ được thực hiện bằng cách thêm mã xml sau vào đó.

<servlet>
   <servlet-name>PyServlet</servlet-name>
   <servlet-class>org.python.util.PyServlet</servlet-class>
   <load-on-startup>1</load-on-startup>
</servlet>

<servlet-mapping>
   <servlet-name>PyServlet</servlet-name>
   <url-pattern>*.py</url-pattern>
</servlet-mapping>

Mã web.xml đầy đủ sẽ như hình dưới đây.

<web-app>
   <servlet>
      <servlet-name>ServletTest</servlet-name>
      <servlet-class>ServletTest</servlet-class>
   </servlet>
   
   <servlet>
      <servlet-name>PyServlet</servlet-name>
      <servlet-class>org.python.util.PyServlet</servlet-class>
      <load-on-startup>1</load-on-startup>
   </servlet>
   
   <servlet-mapping>
      <servlet-name>ServletTest</servlet-name>
      <url-pattern>/ServletTest</url-pattern>
   </servlet-mapping>
   
   <servlet-mapping>
      <servlet-name>PyServlet</servlet-name>
      <url-pattern>*.py</url-pattern>
   </servlet-mapping>
</web-app>

Đặt mã Jython sau vào thư mục WEB-INF bên trong thư mục dự án là JythonServlet.py, tương đương với ServletTest.java trước đó.

from javax.servlet.http import HttpServlet
class JythonServlet1 (HttpServlet):
   def doGet(self,request,response):
      self.doPost (request,response)
   def doPost(self,request,response):
      toClient = response.getWriter()
      response.setContentType ("text/html")
      
      toClient.println (
         "<html>
            <head>
               <title>Servlet Test</title>" + "
            </head>
            <body>
               <h1>Servlet Test</h1>
            </body>
         </html>"
      )

Xây dựng dự án và trong trình duyệt, hãy mở URL sau:

http://localhost:8080/jythonwebapp/jythonservlet.py

Trình duyệt sẽ hiển thị Servlet Test trong thẻ <h1> như trong trường hợp đầu ra Java Servlet.