HBuilder+Ecplise开发:使用AJAX异步传值生成首字母索引

本文介绍了如何结合HBuilder和Servlet利用AJAX异步技术生成首字母索引。首先,服务器端通过Servlet从数据库提取数据;接着,使用首字母工具类处理数据获取首字母;然后,将首字母与数据存入JSON数组并返回客户端;最后,HBuilder的HTML页面接收数据动态展示。在实现过程中解决了动态添加数据时的替换问题。
摘要由CSDN通过智能技术生成

使用ajax异步传值生成首字母索引大致有以下几个步骤:
  1、服务器端使用servlet提取出数据库里的数据;
  2、使用首字母工具类对数据进处理得到首字母;
  3、再将首字母和数据一一对应存入json数组,并返回到客户端;
  4、HBuilder中的html文件使用ajax接受传值并动态添加数据显示。
四点详细阐释如下:
  1、用servlet提取数据库的数据应该不是什么问题,sql server、mysql等之类的数据库语句都是通用的,只是驱动和使用的jar包有所不同。

public List<baike> loadAll() throws SQLException
{
        List<baike> list=new ArrayList<>();
        Connection connection=null;
        connection = GBUtil.get();
        Statement stmt=connection.createStatement();
        ResultSet rs=stmt.executeQuery("SELECT * FROM HotWord");
        String name;
        String content;
        String type;
        String num;
        while(rs.next())
        {
            name=rs.getString("name").trim();
            content=rs.getString("content").trim();
            type=rs.getString("type").trim();
            num=rs.getString("num").trim();
            baike baike=new baike();
            baike.setName(name);
            baike.setContent(content);
            baike.setType(type);
            baike.setNum(num);
            list.add(baike);
        }    
        stmt.close();
        connection.close();
        return list;
}

在自定义的类里自定义一个调取全部数据的方法,来打包成一个集合,方便在servlet里调用。
  2、对数据进行处理得到首字母:
  首字母工具类(HeadUtil.java):

package com.gb.util;
import java.util.Random;
public class HeadUtil 
{
       public static String getPYIndexStr(String strChinese, boolean bUpCase)
       {
           try
           {
               StringBuffer buffer = new StringBuffer();
               byte b[] = strChinese.getBytes("GBK");//把中文转化成byte数组
               for(int i = 0; i < b.length; i++){
                   if((b[i] & 255) > 128)
                   {
                       int char1 = b[i++] & 255;
                       char1 <<= 8;
                       int chart = char1 + (b[i] & 255);
                       buffer.append(getPYIndexChar((char)chart, bUpCase));
                       continue;
                   }
                   char c = (char)b[i];
                   if(!Character.isJavaIdentifierPart(c))
                       c = 'A';
                   buffer.append(c);
               }
               return buffer.toString().toUpperCase();
           }
               catch(Exception e)
               {
                   System.out.println((new StringBuilder()).append("\u53D6\u4E2D\u6587\u62FC\u97F3\u6709\u9519").append(e.getMessage()).toString());

               }
           return null;
       }
       private static char getPYIndexChar(char strChinese, boolean bUpCase){
           int charGBK = strChinese;
           char result;
           if(charGBK >= 45217 && charGBK <= 45252)
               result = 'A';
           else
           if(charGBK >= 45253 && charGBK <= 45760)
               result = 'B';
           else
           if(charGBK >= 45761 && charGBK <= 46317)
               result = 'C';
           else
           if(charGBK >= 46318 && charGBK <= 46825)
               result = 'D';
           else
           if(charGBK >= 46826 && charGBK <= 47009)
               result = 'E';
           else
           if(charGBK >= 47010 && charGBK <= 47296)
               result = 'F';
           else
           if(charGBK >= 47297 && charGBK <= 47613)
               result = 'G';
           else
           if(charGBK >= 47614 && charGBK <= 48118)
               result = 'H';
           else
           if(charGBK >= 48119 && charGBK <= 49061)
               result = 'J';
           else
           if(charGBK >= 49062 && charGBK <= 49323)
               result = 'K';
           else
           if(charGBK >= 49324 && charGBK <= 49895)
               result = 'L';
           else
           if(charGBK >= 49896 && charGBK <= 50370)
               result = 'M'
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值