dwr根据输入中文得到拼音和简拼

本文介绍如何在项目中集成DWR实现远程调用,并提供一种利用Pinyin4j库将中文转换为拼音及简拼的方法。此外,还展示了如何在前端通过JavaScript调用这些方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

首先下载最新的dwr包:dwr.jar

在web.xml中配置如下

<servlet>
  <servlet-name>dwr-invoker</servlet-name>
  <servlet-class>uk.ltd.getahead.dwr.DWRServlet</servlet-class>
  <init-param>
   <param-name>config-recruit</param-name>
   <param-value>WEB-INF/search-dwr.xml</param-value>
  </init-param>
  <init-param>
   <param-name>debug</param-name>
   <param-value>true</param-value>
  </init-param>
 </servlet>

其中search-dwr.xml放置自己写的配置文件

由中文得到拼音和简拼的方法如下

 

import net.sourceforge.pinyin4j.PinyinHelper;
import net.sourceforge.pinyin4j.format.HanyuPinyinCaseType;
import net.sourceforge.pinyin4j.format.HanyuPinyinOutputFormat;
import net.sourceforge.pinyin4j.format.HanyuPinyinToneType;
import net.sourceforge.pinyin4j.format.exception.BadHanyuPinyinOutputFormatCombination;

/**
 * 汉字转换位汉语拼音,英文字符不变
 *
 * @author xuke
 *
 */
public class SearchKeySpell {

 /**
  * 汉字转换位汉语拼音首字母,英文字符不变
  *
  * @param chines
  * 汉字
  * @return 拼音
  */
 public static String converterToFirstSpell(String chines) {
  String pinyinName = "";
  char[] nameChar = chines.toCharArray();
  HanyuPinyinOutputFormat defaultFormat = new HanyuPinyinOutputFormat();
  defaultFormat.setCaseType(HanyuPinyinCaseType.LOWERCASE);
  defaultFormat.setToneType(HanyuPinyinToneType.WITHOUT_TONE);
  for (int i = 0; i < nameChar.length; i++) {
   if (nameChar[i] > 128) {
    try {
     pinyinName += PinyinHelper.toHanyuPinyinStringArray(
       nameChar[i], defaultFormat)[0].charAt(0);
    } catch (BadHanyuPinyinOutputFormatCombination e) {
     e.printStackTrace();
    }
   } else {
    pinyinName += nameChar[i];
   }
  }
  return pinyinName;
 }

 /**
  * 汉字转换位汉语拼音,英文字符不变
  *
  * @param chines
  * 汉字
  * @return 拼音
  */
 public static String converterToSpell(String chines) {
  String pinyinName = "";
  char[] nameChar = chines.toCharArray();
  HanyuPinyinOutputFormat defaultFormat = new HanyuPinyinOutputFormat();
  defaultFormat.setCaseType(HanyuPinyinCaseType.LOWERCASE);
  defaultFormat.setToneType(HanyuPinyinToneType.WITHOUT_TONE);
  for (int i = 0; i < nameChar.length; i++) {
   if (nameChar[i] > 128) {
    try {
     pinyinName += PinyinHelper.toHanyuPinyinStringArray(
       nameChar[i], defaultFormat)[0];
    } catch (BadHanyuPinyinOutputFormatCombination e) {
     e.printStackTrace();
    }
   } else {
    pinyinName += nameChar[i];
   }
  }
  return pinyinName;
 }
 /*
  * 注:下面的main函数在执行的时候,会出现版本错误。 解决方法:把该项目的配置设为jdk1.5即可。如果不用main函数,则不需要改配置。
  * public static void main(String[] args) {
  * System.out.println(converterToSpell("欢迎来到中国"));
  * System.out.println(converterToFirstSpell("欢迎来到中国")); }
  */

 

search-dwr.xml文件如下

<!DOCTYPE dwr PUBLIC
    "-//GetAhead Limited//DTD Direct Web Remoting 1.0//EN"
    "http://www.getahead.ltd.uk/dwr/dwr10.dtd">
<dwr>
  <allow>    
    <!-- 得到关键字的拼音和简拼 -->
 <create javascript="searchKeySpell" creator="new">
  <param name="class" value="com.hys.medicaldb.struts.action.system.searchKey.SearchKeySpell"></param>
 </create>
 <convert converter="bean" match="com.hys.medicaldb.struts.action.system.searchKey.SearchKeySpell"></convert>
  </allow>
</dwr>

下面是jsp页面中要引用的js

其中${ctx} == /medicaldb 是我的项目名称路径,你可以改为自己的项目名

<script type="text/javascript" src="${ctx}/dwr/util.js"></script>
  <script type="text/javascript" src="${ctx}/dwr/engine.js"></script>
  <script type="text/javascript"
   src='/medicaldb/dwr/interface/searchKeySpell.js' /></script>
  <style>

searchKeySpell.js'的名字searchKeySpell一定要和search-dwr.xml中的相同。

下面在简拼和拼音中定义用于显示结果的id,在关键词中定义id和onchange或者onblur事件。

<tr>
     <td width="100" class="td1">
      关键词:
     </td>
     <td class="td1">
      <input type="text" name="keyWord" size="20" id="keyWord"
       maxlength="50" elname="关键字" required="1" pattern="String"
       onchange="trans()" class="input_style"
       value="${searchKey.keyWord}" />
      <span id="red">*</span>请输入关键词
     </td>
    </tr>
    <tr>
     <td width="100" class="td1">
      简拼:
     </td>
     <td class="td1">
      <input type="text" name="jianpin" size="20" id="jianpin"
       maxlength="50" class="input_style" value="${searchKey.jianpin}" />
     </td>
    </tr>
    <tr>
     <td width="100" class="td1">
      拼音:
     </td>
     <td class="td1">
      <input type="text" name="pinyin" size="20" id="pinyin"
       maxlength="50" class="input_style" value="${searchKey.pinyin}" />
     </td>
    </tr>

下面是js文件

//转换
 function trans(){
  var keyWord = document.getElementById("keyWord").value;
  searchKeySpell.converterToFirstSpell(keyWord,setJianpin);
  searchKeySpell.converterToSpell(keyWord,setPinyin);
 }
 //转换为拼音
 function setPinyin(data){
  DWRUtil.setValue("pinyin",data);
 }
 //转换为简拼
 function setJianpin(data){
  DWRUtil.setValue("jianpin",data);
 }

 

以上代码完全通过调试。如果哪位读者有疑问,请发邮件361570665@qq.com给我,我会详细解答。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值