Java servlet是使用最广泛的Web开发技术.我们可以使用Jython编写servlet,除了Java提供的功能之外,还增加了许多优点,因为现在我们也可以使用Python语言功能.
我们将使用NetBeans IDE使用Jython servlet开发Java Web应用程序.确保在NetBeans安装中安装了 nbPython插件.通过选择以下路径启动一个新项目来构建Web应用程序 - File → 新项目 → 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以在每次请求任何
<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://本地host:8080/jythonwebapp/jythonservlet.py
浏览器将在< h1>中显示 Servlet测试标记,如Java Servlet输出.