当前位置: 首页 > 文档资料 > Jython 中文教程 >

Servlets(Servlets)

优质
小牛编辑
140浏览
2023-12-01

Java servlet是使用最广泛的Web开发技术。 我们可以使用Jython编写servlet,除了Java提供的功能外,还增加了许多优点,因为现在我们也可以使用Python语言功能。

我们将使用NetBeans IDE开发带有Jython servlet的Java Web应用程序。 确保在NetBeans安装中安装了nbPython plugin 。 通过选择以下路径启动新项目以构建Web应用程序 - File → New Project → Java web → New Web Application

提供项目名称和位置。 IDE将创建项目文件夹结构。 在“项目”窗口的源包节点下添加Java servlet文件(ServletTest.java)。 这将在项目的lib文件夹中添加servlet-api.jar 。 另外,让IDE创建web.xml descriptor 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>"
      );
   }
}

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 servlet通过中间Java servlet工作也称为PyServlet。 PyServlet.class存在于jython standalone.jar 。 将其添加到WEB-INF/lib文件夹中。

下一步是配置web.xml以在每次引发任何*.py file的请求时调用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

浏览器将在“h1”标记中显示Servlet Test ,就像Java Servlet输出一样。