搞定J2EE核心技术与企业应用
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

8.4 关于Ajax的经典框架——jQuery

在Java Web项目中为了方便用户实现Ajax技术的应用,经常会使用到Ajax的各种框架。Ajax框架出现的目标就是使烦琐的Ajax开发变得更加容易,让程序员不用重复地构造JavaScript的底层。本章将详细介绍关于Ajax的经典框架——jQuery的使用。

8.4.1 jQuery框架的下载和配置

JQuery框架由John Resig于2006年初创建,主要用来简化JavaScript和Ajax的编程。使用该框架可以非常方便地在网页上实现操作文档、处理事件、实现特效,并为Web页面添加Ajax方面的交互。

目前JQuery框架比较稳定的版本为1.6.2,具体的下载步骤如下:

01 首先访问下载JQuery组件的官方网站(http://jquery.com),如图8.16所示。

图8.16 JQuery组件首页

02 在Jquery首页中,首先选择“DEVELOPMENT”选项,然后单击“Download(jQuery)”链接就可以实现关于JQuery组件的下载,具体过程如图8.17所示。

图8.17 JQuery组件下载

至此,就完成了对JQuery组件的下载。由于该组件是一个javascript文件,所以在具体使用时,可以通过直接引入外部javascript文件的方式来调用该组件。

8.4.2 jQuery框架的简单使用

为了能够清楚地理解JQuery框架,本节将详细介绍实现用户名验证的功能。虽然通过Ajax技术也可以实现该功能,但是使用JQuery框架却可以更简单,具体步骤如下:

01 新建一个名Jqueryajax的Web Project,在目录Jqueryajax\WebRoot下创建一个名为javascript的文件夹用来存放该项目的JavaScript类型文件。

02 复制JQuery框架中的jquery.js文件到javascript文件夹中,完整项目的目录结构如图8.18所示。

图8.18 目录结构

03 在目录Jqueryajax\WebRoot下,首先创建一个名为ajax.html的页面,接着在Jqueryajax\Src目录下创建一个名为ajaxservlet的Servlet程序。

关于ajax.html页面的内容如下所示:

              //******* ajax.html **************
              <head>
                  <title>用户名校验</title>
                  <script type="text/javascript" src="javascript/jquery.js"></script>
                  <script type="text/javascript" src="javascript/verify.js"></script>
              </head>
              <body>
                  请输入用户名:
                  <br />
                  <input type="text" id="userName" />
                  <input type="button" value="校验" onclick="verify()" />
                  <div id="result"></div>
              </body>
              …

关于ajaxservlet程序的内容如下所示:

              //******* ajaxservlet.java **************
              public class ajaxservlet extends HttpServlet {
              protected void doPost(HttpServletRequest httpServletRequest,
            HttpServletResponse httpServletResponse) throws ServletException,
            IOException {
                  doGet(httpServletRequest, httpServletResponse);
              }
              //编写doGet方法
              protected void doGet(HttpServletRequest httpServletRequest,
            HttpServletResponse httpServletResponse) throws ServletException,
            IOException {
                  try {
            //设置编码格式
            httpServletResponse.setContentType("text/html;charset=utf-8");
            PrintWriter out = httpServletResponse.getWriter();
            //获取参数
            String old = httpServletRequest.getParameter("name");
            String name = URLDecoder.decode(old, "UTF-8");
            if(old==null||old.length()==0){               //判断参数
                              out.println("用户名不能为空");
            } else {
                              if (name.equals("cjgong")) {
                    out.println("用户名[" + name + "]已经存在,请使用其他用户名");
                              } else {
                    out.println("用户名[" + name + "]尚未存在,可以使用该用户名注册
  ");
                            }
                        }
                    } catch (Exception e) {
                        e.printStackTrace();
                    }
                }
              }

接着在web.xml文件中配置Servlet程序,具体内容如下:

                  <!--配置ajaxservlet类路径-->
                  <servlet>
                      <servlet-name>ajaxservlet</servlet-name>
                      <servlet-class>ajaxservlet</servlet-class>
              </servlet>
                  <!--配置ajaxservlet映射路径-->
                  <servlet-mapping>
                      <servlet-name>ajaxservlet</servlet-name>
                      <url-pattern>/ajaxservlet</url-pattern>
                  </servlet-mapping>

04 创建好客户端和服务器端程序后,接着就需要通过创建一个javascript文件来实现两者的相互交互,该javascript文件的具体内容如下:

              //定义用户名校验的方法
              function verify() {
                var jqueryObj = $("#userName");
                var userName = jqueryObj.val();
                $.get("ajaxservlet?name=" + userName, null, callback);
              }
              //回调函数
              function callback(data) {
                var resultObj = $("#result");
                resultObj.html(data);
              }

代码说明:

● 由于上述代码需要使用JQuery框架的方法,所以必须要把JQuery框架中名为jquery.js的文件引入该项目。

● 在具体实现客户端与服务器端相互交互时,首先要获取客户端文本框中的内容。查看JQuery帮助文档可以发现,通过$()查找节点的方式可以实现该功能。在表达式$()中,参数必须为#加上id属性值,同时该表达式返回的是jquery的对象。接着通过jquery的对象的val()方法获取该节点的值。

● 获取客户端的内容后,就需要把该内容传送给服务器中的Servlet程序。通过使用JQuery框架中XMLHTTPrequest对象的get方法把请求封装后发送给服务器,即$.get()。在该方法中存在3个参数,其中第一个参数表示处理请求的url地址;第二个参数表示发送请求中的key/value值对,由于使用Get方法来发送请求,所以该值一般会直接写在url地址的后面,于是该值一般为null;第三个参数表示回调函数,注意这里只需要函数名称,没有括号。

● 当与服务器交互成功后,就需要调用回掉函数callback()。在该方法中首先通过参数data获取服务器返回的数据,然后再把该数据显示在客户端。在具体显示时,首先获取显示内容节点的jquery对象,然后通过该对象的html()方法在相应的节点上显示出参数的内容。

启动服务器。最后打开浏览器,在地址栏目中输入地址http://localhost:8080/Jqueryajax/ajax.html,出现如图8.19所示的页面。在该页面中如果填写“cjgong”字符串,单击“校验”按钮该页面就会变成如图8.20所示的内容。

图8.19 登录首页

图8.20 校验结果