Jython - сервлеты
Сервлет Java - это наиболее широко используемый метод веб-разработки. Мы можем использовать Jython для написания сервлетов, и это добавляет гораздо больше преимуществ помимо того, что может предложить Java, потому что теперь мы также можем использовать функции языка Python.
Мы будем использовать IDE NetBeans для разработки веб-приложения Java с сервлетом Jython. Убедитесь, чтоnbPython pluginустановлен в установке NetBeans. Запустите новый проект для создания веб-приложения, выбрав следующий путь -File → New Project → Java web → New Web Application.
Укажите название и местоположение проекта. IDE создаст структуру папок проекта. Добавьте файл сервлета Java (ServletTest.java) в узел исходных пакетов в окне "Проекты". Это добавитservlet-api.jarв папке lib проекта. Кроме того, пусть IDE создаст файл web.xmldescriptor file. Добавьте следующий код в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>
Скомпилируйте и запустите проект, чтобы получить текст Servlet Testпоявляется в теге <h1> в окне браузера. Таким образом, мы добавили в приложение обычный сервлет Java.
Теперь мы добавим сервлет Jython. Сервлеты Jython работают с помощью промежуточного сервлета Java, также известного как PyServlet. PyServlet.class присутствует вjython standalone.jar. Добавьте его вWEB-INF/lib папка.
Следующим шагом является настройка web.xml для вызова PyServlet при каждом запросе любого *.py fileПоднялся. Это нужно сделать, добавив в него следующий 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://localhost:8080/jythonwebapp/jythonservlet.py
Браузер покажет Servlet Test в теге <h1>, как в случае вывода Java Servlet.