Jython Servlets
Java的servlet是最常用的Web开发技术。我们可以使用Jython来编写servlet,这不仅提供了Java本身的优势,还可以利用Python的语言特性。
我们将使用NetBeans IDE来开发一个带有Jython servlet的Java Web应用程序。确保在NetBeans安装中已安装了nbPython插件。通过选择以下路径创建一个新项目来构建Web应用程序: 文件 → 新建项目 → Java Web → 新建Web应用程序 。
提供项目名称和位置。IDE将创建项目文件夹结构。在Projects窗口的源包节点下添加一个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>
构建和运行项目,以获取文本 Servlet Test 出现在浏览器窗口的< h1>标签中。因此,我们在应用程序中添加了一个常规的Java servlet。
现在,我们将添加Jython Servlet。 Jython Servlet通过一个称为PyServlet的中间Java servlet工作。 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>"
)
在浏览器中构建项目并打开以下URL −
http://localhost:8080/jythonwebapp/jythonservlet.py
浏览器会以Java Servlet输出的方式显示 Servlet Test 在<h1>
标签中。