dwr模拟google suggest

本文介绍了一个使用 Direct Web Remoting (DWR) 实现的自动补全功能示例。该示例包括 web.xml 和 dwr.xml 的配置、User 和 AutoSuggest 类的 Java 代码实现以及用于字符集过滤的 CharacterEncodingFilter。通过 DWR,客户端能够以 Ajax 方式请求服务器端的自动补全建议。

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

1 web.xml
<!------ AutoSuggest/WebContent/WEB-INF/web.xml ---->
    <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd">

<web-app id="dwr">

<display-name>Auto Suggest Demo</display-name>
<description>Test for Auto Suggest</description>

<filter>
<filter-name>CharacterEncodingFilter</filter-name>
<filter-class>test.joeyta.CharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF8</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>CharacterEncodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>

<servlet>
<servlet-name>dwr-invoker</servlet-name>
<display-name>DWR Servlet</display-name>
<description>Direct Web Remoter Servlet</description>
<servlet-class>org.directwebremoting.servlet.DwrServlet</servlet-class>
<init-param>
<param-name>debug</param-name>
<param-value>true</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>

<servlet-mapping>
<servlet-name>dwr-invoker</servlet-name>
<url-pattern>/dwr/*</url-pattern>
</servlet-mapping>

</web-app>

2 dwr.xml
<!------ AutoSuggest/WebContent/WEB-INF/dwr.xml ---->
    <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE dwr PUBLIC "-//GetAhead Limited//DTD Direct Web Remoting 2.0//EN" "http://getahead.ltd.uk/dwr/dwr20.dtd">

<dwr>
<allow>
<create creator="new" javascript="AutoSuggest">
<param name="class" value="test.joeyta.AutoSuggest"/>
</create>
<convert match="test.joeyta.User" converter="bean"></convert>
</allow>
</dwr>

3 User.java
/** *//************** User.java ************************/
package test.joeyta;


public class User implements Comparable {
private String name;


private String tel;


public User(){}

public User(String name, String tel){
this.name = name;
this.tel = tel;
}


public String getName() {
return name;
}



public void setName(String name) {
this.name = name;
}



public String getTel() {
return tel;
}



public void setTel(String tel) {
this.tel = tel;
}



public int compareTo(Object object) {
return this.name.compareTo(((User)object).name);
}

}

4 AutoSuggest.java
/** *//************** AutoSuggest.java ************************/
package test.joeyta;


import java.util.ArrayList;
import java.util.Collections;
import java.util.Iterator;
import java.util.List;


public class AutoSuggest {


public List users;

public AutoSuggest(){
users 
= new ArrayList();
users.add(
new User("Joeyta","123456"));
users.add(
new User("陳大強","無電話"));
users.add(
new User("李小強","太多電話"));
users.add(
new User("Peter","23456"));
users.add(
new User("Mary","34567"));
users.add(
new User("Andy","45678"));
users.add(
new User("Andrew","78900"));
users.add(
new User("Anthory","89000"));
users.add(
new User("jane","654321"));
}



public List getSuggestions(String sSuggestValue) {
System.out.println(sSuggestValue);
List returnList 
= new ArrayList();
if (sSuggestValue != null && !sSuggestValue.equals("")) {
for (Iterator iter = users.iterator(); iter.hasNext();) {
User user 
= (User) iter.next();
if(user.getName().toLowerCase().indexOf(sSuggestValue.toLowerCase()) >= 0){
returnList.add(user);
}

}

Collections.sort(returnList);
}

return returnList;
}


}

5 CharacterEncodingFilter.java
/** *//************** CharacterEncodingFilter.java ************/
package test.joeyta;


import java.io.IOException;


import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;


public class CharacterEncodingFilter implements Filter {
protected String encoding = null;


protected FilterConfig filterConfig = null;


protected boolean ignore = true;


public void destroy() {
this.encoding = null;
this.filterConfig = null;
}



public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) 
throws IOException, ServletException {
if (ignore (request.getCharacterEncoding() == null)) {
String encoding 
= selectEncoding(request);
if (encoding != null)
request.setCharacterEncoding(encoding);
}

chain.doFilter(request, response);
}



public void init(FilterConfig filterConfig) throws ServletException {
this.filterConfig = filterConfig;
this.encoding = filterConfig.getInitParameter("encoding");
String value 
= filterConfig.getInitParameter("ignore");
if (value == null)
this.ignore = true;
else if (value.equalsIgnoreCase("true"))
this.ignore = true;
else if (value.equalsIgnoreCase("yes"))
this.ignore = true;
else
this.ignore = false;


}



protected String selectEncoding(ServletRequest request) {
return this.encoding;
}

}

6 autosuggest.css
/**//************** autosuggest.css ************/
div.suggestions 
{}{
background-color
: #ffffff;
-moz-box-sizing
:
内容概要:本文档详细介绍了基于Google Earth Engine (GEE) 构建的阿比让绿地分析仪表盘的设计与实现。首先,定义了研究区域的几何图形并将其可视化。接着,通过云掩膜函数和裁剪操作预处理Sentinel-2遥感影像,筛选出高质量的数据用于后续分析。然后,计算中值图像并提取NDVI(归一化差异植被指数),进而识别绿地及其面积。此外,还实现了多个高级分析功能,如多年变化趋势分析、人口-绿地交叉分析、城市热岛效应分析、生物多样性评估、交通可达性分析、城市扩张分析以及自动生成优化建议等。后,提供了数据导出、移动端适配和报告生成功能,确保系统的实用性和便捷性。 适合人群:具备一定地理信息系统(GIS)和遥感基础知识的专业人士,如城市规划师、环境科学家、生态学家等。 使用场景及目标:①评估城市绿地分布及其变化趋势;②分析绿地与人口的关系,为城市规划提供依据;③研究城市热岛效应及生物多样性,支持环境保护决策;④评估交通可达性,优化城市交通网络;⑤监测城市扩张情况,辅助土地利用管理。 其他说明:该系统不仅提供了丰富的可视化工具,还集成了多种空间分析方法,能够帮助用户深入理解城市绿地的空间特征及其对环境和社会的影响。同时,系统支持移动端适配,方便随时随地进行分析。用户可以根据实际需求选择不同的分析模块,生成定制化的报告,为城市管理提供科学依据。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值