Java-сервлет является наиболее широко используемой техникой веб-разработки. Мы можем использовать Jython для написания сервлетов, и это добавляет гораздо больше преимуществ помимо того, что может предложить Java, потому что теперь мы можем также использовать возможности языка Python.
Мы будем использовать IDE NetBeans для разработки веб-приложения Java с сервлетом Jython. Убедитесь, что плагин nbPython установлен в установке NetBeans. Запустите новый проект для создания веб-приложения, выбрав следующий путь — Файл → Новый проект → Java web → Новое веб-приложение .
Укажите название проекта и местоположение. В среде IDE будет создана структура папок проекта. Добавьте файл сервлета Java (ServletTest.java) под узлом исходных пакетов в окне «Проекты». Это добавит servlet-api.jar в папку lib проекта. Также позвольте IDE создать файл дескриптора web.xml. Добавьте следующий код в ServletTest.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>" ); } }
Файл web.xml, созданный NetBeans, будет выглядеть так, как показано ниже:
<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>
Создайте и запустите проект, чтобы получить текстовый тест сервлета, отображаемый в теге <h1> в окне браузера. Таким образом, мы добавили в приложение обычный Java-сервлет.
Теперь мы добавим сервлет Jython. Сервлеты Jython работают с помощью промежуточного сервлета Java, также известного как PyServlet. PyServlet.class присутствует в jython standalone.jar . Добавьте его в папку WEB-INF / lib .
Следующим шагом является настройка файла web.xml для вызова PyServlet при каждом запросе любого файла * .py . Это должно быть сделано путем добавления следующего XML-кода.
<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>
Полный код web.xml будет выглядеть так, как показано ниже.
<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>
Поместите следующий код Jython в папку WEB-INF внутри папки проекта как JythonServlet.py, что эквивалентно предыдущему ServletTest.java.
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>" )
Создайте проект и в браузере откройте следующий URL —
HTTP: // локальный: 8080 / jythonwebapp / jythonservlet.py
Браузер покажет тест сервлета в теге <h1>, как в случае вывода сервлета Java.