首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

利用 Jython 与 Ajax 技术构建一个简单的 Web 应用程序 (2)

利用 Jython 与 Ajax 技术构建一个简单的 Web 应用程序 (2)

利用 Jython 写服务器端 Servlet 处理程序服务器端 Servlet 原理在网上浏览任何资源,服务方需要提供一个 Web 服务器,浏览网页的过程就是浏览器通过 HTTP 协议与 Web 服务器进行交互的过程。如今随着应用的发展,客户需要动态地与服务器进行交互,为了实现这一目标,就需要开发一个遵循 HTTP 协议的服务器端应用组件来处理 HTTP 请求。Servlet 是一个基于 Java 技术的运行在服务器端的 Web 组件,利用 Sevlet 可以很轻松的扩展 Web 服务的功能,使它满足特定的应用需要。Servlet 由 Servlet 容器管理,也就是 Servlet 的运行环境(Servlet Runtime Environment),它负责接收请求和提供响应等服务。
例如 Tomcat 就是一个常用的 Servlet 容器,其接收客户端请求并做出响应的步骤如下:
1、客户访问 Web 服务器,发送 HTTP 请求。
2、Web 服务器接收到请求后,传递给 Servlet 容器。
3、Servlet 容器加载 Servlet,请求信息被封装为 HttpServletRequest 对象。
4、Servlet 逻辑代码处理请求,POST 请求由 doPost 方法处理,GET 请求由 doGet 方法处理。
5、Servlet 实例把处理结果封装为 HttpServletResponse 对象,然后发送回浏览器。
下面的代码是专为上述应用场景用 Java 写的服务器端 Servlet 处理程序,这里已经注册过的用户名分别为“neoremind”,“jack”,“simeon”,“victor”,实际的应用中这些数据是需要从数据库中读取出来的,这里为了简化说明,暂且简单处理。
清单 1. 服务器端的 Java 实现的用于验证用户名合法性的 Servlet
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class RegisterServlet extends HttpServlet{

   // HTTP POST 请求处理方法
   public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException
   {
       // 已经注册的用户名列表
       String[] username_list = {"neoremind", "jack", "simeon", "victor"};
       // 得到用户提交请求欲申请注册的用户名
       String req_username = request.getParameter("username");
       if (req_username == null)
       {
   req_username = "";
       }
       // 设置 HTTP 响应类型信息
       response.setContentType("text/html;charset=utf-8");
       // 遍历所有已经注册的用户名,如果发现有重名的,则提示“用户名已经存在,请另外选择一个”
       for (int i = 0; i < username_list.length; i++)
       {
           if (req_username.equals(username_list))
           {
               response.getWriter().print("Username has existed,
               please choose another one.");
           }
       }
       // 检查过所有的用户名后,发现没有重名,则提示“用户名合法。检查成功!”
       response.getWriter().print("Valid username. OK!");
   }

   // HTTP GET 请求处理方法,同 POST 请求处理方法
   public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException
   {
       doPost(request,response);
   }
}




Jython 也能胜任 Servlet 工作Jython 是两种广泛流行语言 Java 和 Python 的组合,它是 Python 的纯 Java 实现。Java 现如今已被广泛地接受,Java 拥有庞大的可利用的类库,并有很详尽的文档。Python 则具有很好的灵活性,开发快速,容易使用。Jython 能够实现在 Java 或 Python 中实现的任何类、算法。Jython 无缝地结合了 Java 与 Python,使用户能以 Python 语言的语法编写在 Java 虚拟机(JVM,Java Virtual Machine)上运行的软件。也即体现了 Jython 对于 Java 的兼容性。所以既然在 3.1 小节能用 Java 编写 Servlet,那么 Jython 也完全可以胜任此项工作,与 Java 程序相比,Jython 可以极大的的减少编程代码量,而且使用语法简洁,不失为服务器端解决方案的一种新的思路。
下面的代码是 3.1 小节中 Java Servlet 处理程序的 Jython 语言实现。见清单 2。
清单 2. 服务器端的 Jython 实现的用于验证用户名合法性的 Servlet
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
from javax.servlet.http import HttpServlet
class RegisterServlet(HttpServlet):
   # HTTP POST 请求处理函数
   def doPost(self, req, res):
       # 得到用户提交请求欲申请注册的用户名
       searchterm = req.getParameter("username")
       if not searchterm:
           searchterm = ""
       # 已经注册的用户名列表
       usernameList = ['neoremind', 'jack', 'simeon', 'victor']
       # 设置 HTTP 响应类型信息
       res.setContentType("text/html;charset=utf-8")
       out = res.getWriter()
       # 遍历所有已经注册的用户名,如果发现有重名的,则提示“用户名已经存在,请另外选择一个”
       if searchterm in usernameList:
           print>>out,"Username has existed, please choose another one."
       # 检查过所有的用户名后,发现没有重名,则提示“用户名合法。检查成功!”
       else:
           print>>out,"Valid username. OK!"

   # HTTP GET 请求处理函数,同 POST 请求处理函数
   def doGet(self, req, res):
       pass

返回列表