传智播客java学习--ajax小项目笔记

今天佟老师教我们使用ajax技术来完成数据库级联查询的一个小项目,课下我对这个项目做了以下笔记:

 

 Ajax小项目:使用的技术:c3p0连接池、struts,jquery及其插件、dbutil

a)       步骤:配置c3p0的数据库连接池,导入jar包,导入oracle驱动,

b)      添加c3p0的配置文件,c3p0-config.xml;

 

<?xml version="1.0" encoding="UTF-8"?>

<c3p0-config>

   <named-config name="ajaxDataSource">

      <property name="acquireIncrement">2</property>

      <property name="initialPoolSize">5</property>

      <property name="minPoolSize">6</property>

      <property name="maxPoolSize">10</property>

 

      <property name="maxStatements">5</property>

      <property name="maxStatementsPerConnection">5</property>

     

      <property name="user">system</property>

      <property name="password">hy</property>

      <property name="jdbcUrl">jdbc:oracle:thin:@localhost:1521:itcast</property>

      <property name="driverClass">oracle.jdbc.driver.OracleDriver</property>

     

   </named-config>

c)       </c3p0-config>

d)      写一个测试类:junit测试配置文件,

e)       ……………………….

f)        导入struts的jar包:

g)       导入struts的config文件到web-inf,

二、         此项目的重点:

a)       第一次页面显示时,已经将城市列表显示出来了,所以第一次打开页面时,已经自动到后台数据库查找城市了,

b)      当点击城市下拉列表选择城市时,使用$("#city").change事件,将选择的城市发送给后台,后台根据城市查找部门,

c)       由于使用ajax技术,可以不刷新页面而更新数据,所以这里我们在后台使用JSON数据格式将数据传送到前台,所以,当后台(Action)要将查找到的部门转化为JSON数组的格式传送给前台,

d)      如果返回的是List集合,可以用这种方法转换:

private String convertObject2Josn(List<?> objs){

      StringBuffer result=new StringBuffer("[");

      for(Object obj:objs){

        JSONObject jsonObject=new JSONObject(obj);

        result.append(jsonObject.toString()).append(",");

      }

      if(objs!=null&&objs.size()>0){

        result.replace(result.length()-1, result.length(), "");

      }

      result.append("]");

      return result.toString();

e)          }

f)        如果返回的是对象类型,可以这样转换:

private String convertObject2Josn(Employee employee) {

      JSONObject jsonObject = new JSONObject(employee);

      return jsonObject.toString();

g)          }

h)       转换好之后,还需要设置发送的格式,再发送给前台,JSON数据类型这样设置格式:

response.setContentType("text/javascript");

i)                 response.getWriter().print(result);

j)         这样,后台就搞定了,在前台jsp页面,接收JSON数据后,再将数据添加到部门下拉框里面,代码如下:

$("#city").change(function(){

   if(this.value!=""){

   var url="${pageContext.request.contextPath}/employeeaction.do?method=listDepts";

   var args={time: new Date(),cityId:this.value};

   $.getJSON(url,args,function(data){

      if(data.length>0){

        for(var i=0;i<data.length;i++){

           var dept=data[i];

           var deptName=dept.departmentName;

           var deptId=dept.departmentId;

k)                  $("<option value='"+deptId+"'>"+deptName+"</option>").appendTo($("#dept"));

l)         当点击员工下拉框后,要将员工的信息显示到页面隐藏的表格中,只有选择员工后,表格才会显示,再将员工的信息添加到表格:代码如下:

$("#employee").change(function(){

        if(this.value != ""){

           var url = "${pageContext.request.contextPath }/employeeaction.do?method=employeeDetail";

           var args = {time: new Date(), empId: this.value};

          

           $.getJSON(url, args, function(data){

              if(data != null){

                    $("#empDetail").show();

                

                    var emp = data;

                    var empName = emp.employeeName;

                    var email = emp.email;

                    var salary = emp.salary;

                   

                    $("#name").text(empName);

                    $("#email").text(email);

m)                        $("#salary").text(salary);

n)       表格在点击城市和部门时都是隐藏的:

<table border="1" cellpadding="5"

      cellspacing="0" style="display:none"

o)            id="empDetail">

p)      此项目还运用了这样的技术:当点击城市、部门、员工,在查询数据的过程中(即ajax开始),页面变得半透明,中间有动态的图片显示,查询完之后(即ajax结束),页面又恢复。这是jquery的jquery.blockUI.js插件的功劳,我们可以这样使用它:导入jquery.blockUI.js插件:将此特效代码放到单独的一个jsp文件中:在前台页面导入此jsp代码:

<script type="text/javascript"

src="${pageContext.request.contextPath}/scripts/jquery-1.3.1.js">

</script>

q)      <%@ include file="/commons/ajax.jsp" %>

 

 

 

总结:这个项目是使用ajax技术,实现了不用刷新页面就可以更新页面的数据,利用jquery更加简化了JavaScript的操作,使用jquery插件完成了页面特效,使用JSON格式传输数据。这里需要注意:服务器查询到的数据需要转换为JSON格式的数组,发送的页面时,还要设置发送的格式,这样页面才能取到数据。

 

自己写完这个项目后,感觉有点小的成就感,我要在以后的学习中更加努力的学习。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值