Jython – Servlets

Jython – Servlets

Java servlet是最广泛使用的Web开发技术。我们可以使用Jython来编写servlet,这在Java所提供的功能之外又增加了许多优势,因为现在我们也可以利用Python语言的特性。

我们将使用NetBeans IDE来开发一个带有Jython servlet的Java Web应用程序。确保在NetBeans中安装了 nbPython插件 。通过选择以下路径启动一个新的项目来建立一个Web应用程序 – 文件→新项目→Java web→新Web应用程序。

提供项目名称和位置。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测试 文本。这样,我们已经在应用程序中添加了一个普通的Java servlet。

现在,我们将添加Jython Servlet。Jython servlet通过一个中间的Java servlet工作,也被称为PyServlet。PyServlet.class存在于 jython standalone.jar中。WEB-INF/lib 文件夹中添加它。

下一步是配置web.xml,以便在对任何 *****. py文件 的请求被提出时调用PyServlet。这应该通过在其中添加以下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>"
      )

建立该项目,并在浏览器中打开以下网址 –

h ttp://localhost:8080/jythonwebapp/jythonservlet.py

浏览器将在<h1>标签中显示 Servlet测试 ,如同Java Servlet的输出。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程