Jython - Servlets
Java servlet 是使用最广泛的网络开发技术。 我们可以使用 Jython 来编写 servlet,这增加了许多 Java 所不能提供的优势,因为现在我们也可以利用 Python 语言的特性。
我们将使用 NetBeans IDE 开发带有 Jython servlet 的 Java Web 应用程序。 确保在 NetBeans 安装中安装了 nbPython 插件。 通过选择以下路径启动一个新项目来构建一个Web应用程序 - File → New Project → Java web → New Web Application。
提供项目名称和位置。 IDE 将创建项目文件夹结构。 在"项目"窗口的源包节点下添加一个 Java servlet 文件 (ServletTest.java)。 这将在项目的 lib 文件夹中添加 servlet-api.jar。此外,让 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>" ); } }
NetBeans 创建的 web.xml 文件将如下所示 −
<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> 标签中出现的文本Servlet Test。 因此,我们在应用程序中添加了一个常规的 Java servlet。
现在,我们将添加 Jython Servlet。 Jython servlets 通过中间 Java servlet 工作,也称为 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://localhost:8080/jythonwebapp/jythonservlet.py
浏览器将在 <h1> 标签中显示 Servlet Test,就像 Java Servlet 输出一样。