- 浏览: 43659 次
- 性别:
- 来自: 北京
最新评论
-
yxl2005play:
不支持多个文件(多个<input type=" ...
JAVA上传文件进度条的实现 -
clarck_913:
您好,我看了你附件里的代码
有点疑问。
第一,web.xm ...
JAVA上传文件进度条的实现
最近搞的一个通讯录想要加一个Ajax的自动完成功能,看起来功能虽小,可给用户的体验会改进不少。在一个介绍了几十种java的Ajax框架的网页里面,我找到了AjaxTags这个小东西,开始了我的第一次Ajax之旅。
从AjaxTags的官方网站上面http://ajaxtags.sourceforge.net/可以下载到其最新的版本,目前是AjaxTags1.3顺便下载了一个官方的小例子看了看,确实很好阿,例子中使用Ajax完成了11种功能,然而我需要的是自动完成(autocomplete)部分的代码,所以重点研究这一部分
jsp页面中,首先当然是要添加AjaxTags的标签支持,需要如下语句
Code
<!--<br /> <br /> Code highlighting produced by Actipro CodeHighlighter (freeware)<br /> http://www.CodeHighlighter.com/<br /> <br /> --><%@ taglib uri="http://ajaxtags.org/tags/ajax" prefix="ajax"%>
然后在页面中加入如下的标签
Code
<!--<br /> <br /> Code highlighting produced by Actipro CodeHighlighter (freeware)<br /> http://www.CodeHighlighter.com/<br /> <br /> --><ajax:autocomplete
source="model"//从控件"model"中获得输入的字符
target="make"//通过Ajax自动完成控件"make"的内容
baseUrl="${contextPath}/autocomplete.view"//Ajax执行时调用的请求路径
className="autocomplete"//css类名
indicator="indicator"
minimumCharacters="1"//Ajax执行需要输入的最小字符数
/>
在官方的例子中使用的是Servlet来完成Ajax,而对于使用struts就不适用了,后面说这个问题。
在 autocomplete.view对应的Servlet类中需要建立xml来供页面调取,代码如下
<!--<br /> <br /> Code highlighting produced by Actipro CodeHighlighter (freeware)<br /> http://www.CodeHighlighter.com/<br /> <br /> -->public class AutocompleteServlet extends BaseAjaxServlet {
public String getXmlContent(HttpServletRequest request, HttpServletResponse response)
throws Exception {
String model = request.getParameter("model");//从页面获取控件"model"的输入值
CarService service = new CarService();
List<Car> list = service.getModelsByName(model);//调用CarService的方法获得汽车的List
// Create xml schema
return new AjaxXmlBuilder().addItems(list, "model", "make",true).toString();//生成xml
}
}
<!--<br /> <br /> Code highlighting produced by Actipro CodeHighlighter (freeware)<br /> http://www.CodeHighlighter.com/<br /> <br /> -->public class CarService {
private static List<Car> cars = new ArrayList<Car>();
static {
cars.add(new Car("Ford", "Escape"));
cars.add(new Car("Ford", "Expedition"));
cars.add(new Car("Ford", "Explorer"));
cars.add(new Car("Ford", "Focus"));
cars.add(new Car("Ford", "Mustang"));
cars.add(new Car("Ford", "Thunderbird"));
cars.add(new Car("Honda", "Accord"));
cars.add(new Car("Honda", "Civic"));
cars.add(new Car("Honda", "Element"));
cars.add(new Car("Honda", "Ridgeline"));
cars.add(new Car("Mazda", "Mazda 3"));
cars.add(new Car("Mazda", "Mazda 6"));
cars.add(new Car("Mazda", "RX-8"));
}//其实把上面这个地方改为数据库查询就可以从数据库中得到List来供页面显示
public CarService() {
super();
}
public List<Car> getModelsByMake(String make) {
.
}
public List<Car> getModelsByName(String name) {
..
}
public List<Car> getAllCars() {
return cars;
}
}
例子看完了,开始实际操作吧,在我的页面中,需要通过一个名为"name"的文本框输入要查询的人的姓名
<!--<br /> <br /> Code highlighting produced by Actipro CodeHighlighter (freeware)<br /> http://www.CodeHighlighter.com/<br /> <br /> --><ajax:autocomplete
source="name"
target="name"
baseUrl="ajaxfinduser.do"
className="autocomplete"
indicator="indicator"
minimumCharacters="1"
/>
接下来是我的Action,在写Action的时候,我以为只需要把原来Servlet继承的BaseAjaxServlet改为BaseAjaxAction就可以了,可后来才发现,jar包中根本就没有BaseAjaxAction这个类,无语,去官方网站上看了后才知道,在1.2更新到1.3的时候,把对Struts的支持去掉了,如果想支持Struts的话需要建立自己的BaseAjaxAction
(Struts removed, to use it create your own BaseAjaxAction.java and implement BaseAjaxXmlAction then just call xml = AjaxActionHelper.invoke(this, request, response);)
下载了一份AjaxTags的源码来看,原来AjaxActionHelper.invoke();这个方法需要调用Action中的getXmlContent方法来完成xml的写入,那就好说了,代码如下:
<!--<br /> <br /> Code highlighting produced by Actipro CodeHighlighter (freeware)<br /> http://www.CodeHighlighter.com/<br /> <br /> -->package com.txl.action;
import java.io.IOException;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.ajaxtags.servlets.BaseAjaxXmlAction;
import org.ajaxtags.xml.AjaxXmlBuilder;
import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.ajaxtags.servlets.AjaxActionHelper;
import org.springframework.context.ApplicationContext;
import org.springframework.web.context.support.WebApplicationContextUtils;
import com.txl.service.AjaxFindUserService;
import com.vo.User;
public class AjaxFindUserAction extends Action implements BaseAjaxXmlAction {
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws IOException, Exception {
response.setCharacterEncoding("utf-8");
response.getOutputStream().print(new String(AjaxActionHelper.invoke(this, request, response).getBytes("UTF-8"),"ISO-8859-1"));//这里需要转换编码,不然无法支持中文查询
response.getOutputStream().flush();
return null;
}
public String getXmlContent(HttpServletRequest request,
HttpServletResponse response) throws Exception {
String realname = request.getParameter("name");
ApplicationContext ctx = WebApplicationContextUtils
.getRequiredWebApplicationContext(servlet.getServletContext());//用ssh时需要在这里引入spring的配置文件,不然会在调用dao的时候报空指针异常
AjaxFindUserService service = (AjaxFindUserService) ctx
.getBean("AjaxFindUserService");
List<User> list = service.getUsersByRealname(realname);
return new AjaxXmlBuilder()
.addItems(list, "realname", "realname", true).toString();
}
}
发表评论
-
Hibernate主键生成方式(转)
2008-01-29 22:05 5401) assigned 主键由外部程序负责生成,无需Hibe ... -
实现JSP页面自动跳转
2008-01-30 22:01 837HTML里增加: <meta http-e ... -
JAVA中的接口和抽象类(转)
2008-03-11 17:31 650在面向对象的概念中, ... -
JAVA错误处理大集合
2008-03-15 17:19 7690、 需要标识符 a) 不在 ... -
强!!!
2008-04-01 17:51 686Java视频教程 孙鑫Java无难事 (全12CD) http ... -
字符转换 dos 命令 JDK自带的native2ascii工具完全揭密
2008-07-14 17:27 854背景:在做Java开发的时 ... -
Acegi安全系统的配置
2008-07-17 00:42 682Acegi 的配置看起来非常复杂,但事实上在实际项目的安全应用 ... -
ACEGI配置总结(1)
2008-07-18 18:39 730Acegi配置总结 1、 在web.xml中配置conte ... -
关于Struts处理异常框架的小例子
2008-07-30 17:15 750下午搞了一下Struts处理异常的框架,不错,确实很 ... -
利用commons upload+ffmpeg+mencoder完成视频的上传与转换
2008-07-31 16:41 699前一段时间朱哥一直在搞视频转换这个东东,我也一直很有 ... -
关于Struts的Token
2008-08-01 12:07 681请求有效性处理,使用令牌可以有效的防止重复提交。 protec ... -
六大代码问题检验你的JAVA知识(转)
2008-08-01 15:57 733你觉得自己是一个Java专家吗?是否肯定自己已经全面掌握了J ... -
Spring Security连接数据库查询实例
2008-08-04 00:46 897经过若干天断断续续地研究,终于做出了第一个sprin ... -
JAVA md5、SHA加密类
2008-08-04 20:25 861Code<!--<br /><br ... -
Hibernate获取数据方式与缓存使用
2008-08-16 11:03 671Hibernate获取数据的方式有不同的几种,其与缓存结合使用 ... -
Struts2&Jquery 新闻发布
2009-03-16 17:48 1009又一个新闻发布......比以前的更加人性化了,用到了Stru ... -
JAVA实现精确的加减乘除
2009-05-20 17:13 1130package lc.util; import java.ma ... -
JAVA上传文件进度条的实现
2009-08-03 19:46 5197很久不在这里发帖子了,最近在家闲来无事,想到转视频的那东西又要 ... -
利用commonsfileupload+ffmpeg+mencoder完成视频的上传与转换(2)
2009-08-04 17:45 955这两天完善了一下视频 ... -
利用commons upload+ffmpeg+mencoder完成视频的上传与转换
2008-07-31 16:41 916前一段时间朱哥一直在搞视频转换这个东东,我也一直很有 ...
相关推荐
这是一个项目,import到MyEclipse就可以运行啊. 使用AjaxTags甚至不需要编写回调函数,不需要解析服务器响应,不需要程序员手动更新HTML页面显示,整个过程完全由AjaxTags完成,应用开发者只需要编写服务器响应...
使用Maven或Gradle等构建工具可以帮助自动化这个过程,确保所有依赖项都被适当地管理和引用。 总的来说,Ajaxtags.jar是一个强大的工具,它通过提供预定义的JSP标签简化了Java Web应用中的Ajax开发。理解并熟练运用...
- **简单易用**:AjaxTags通过JSP标签的形式,使得Ajax功能的实现对开发者来说变得直观且易于理解。 - **可定制化**:每个Ajax标签都有丰富的属性,允许开发者根据需求进行配置,如设置请求类型、URL、更新的目标...
逻辑处理类可以使用Java语言编写,利用Java的String类和ArrayList类等实现自动提示的逻辑。 SERVLET类 SERVLET类是用于处理输入条件的类,负责将输入条件传递给逻辑处理类,并将自动提示的结果返回给前台页面。...
《AjaxTags 1.2 Beta1 源码解析:实现DisplayTag的无刷新功能》 AjaxTags 1.2 Beta1 是一个专门用于增强Java Web应用中DisplayTag功能的库,它使得开发者能够实现分页、查询和导出等功能的无刷新效果,极大地提升了...
**Ajaxtags**是一个Java开发的项目,主要用于演示和实现AJAX(Asynchronous JavaScript and XML)技术。在Web应用中,AJAX允许页面部分更新,无需整个页面刷新,从而提供了更流畅、更快捷的用户体验。本项目是为...
AjaxTags项目是在现有的Struts ... AjaxTags改写了Struts标签类org.apache.struts.taglib.html.FormTag和org.apache.struts.taglib.html.BaseHandlerTag,并使用Struts的plugin技术,使得Struts提供了对AJAX的支持。
ajaxtags框架是ajax框架之一,对一些常用的功能如自动完成等提供了非常便捷的操作。几乎不用写js代码。采用jsp标签格式。压缩包包含一个完整的web项目,拷贝在tomcat的webapps下即可运行。包含一个word文档和李刚...
ajaxtags-1.1.5.jar 版本比较古老,不过,用于学习练习还是不错的
API文档通常会详细介绍各种函数、方法、类和对象,以及它们的参数、返回值和使用示例,帮助开发者更好地理解和使用Ajaxtags。 “最近版本”可能指的是Ajaxtags的最新更新或发行版,这通常包含了错误修复、性能提升...
AjaxTags 1.5.1 是一个专门用于Web开发的Java库,它提供了一系列的JSP标签,能够帮助开发者轻松实现Ajax功能,无需深入理解底层JavaScript或XMLHttpRequest的工作原理。这个jar.zip包包含了核心的`ajaxtags-1.5.1....
4. **使用标签**:在JSP页面中使用AjaxTags提供的标签,如`<ajax:form>`、`<ajax:include>`等,实现异步交互。 5. **处理后端逻辑**:在服务器端编写相应的Servlet或Controller来处理由AjaxTags发送的AJAX请求,并...
1. 考虑兼容性:尽管AjaxTags使用了jQuery,但仍然需要确保目标浏览器支持JavaScript。 2. 错误处理:不要忘记处理Ajax请求可能抛出的错误,例如网络问题或服务器端异常。 3. 安全性:由于Ajax请求可以绕过页面重载...
开发者无需深入JavaScript和XML的具体实现,只需要在JSP页面中像使用普通HTML标签一样使用AjaxTags,就能实现异步请求和动态内容更新。 以下是一些关键的AjaxTags知识点: 1. **AjaxFormTag**: 这个标签允许用户...
例如,可以使用`<%@ taglib prefix="ajax" uri="http://ajaxtags.sourceforge.net/ajaxtags" %>`来导入AjaxTags的标签库,然后在表格中使用`<ajax:displayTag>`标签,通过配置`pageUrl`、`itemsPerPage`等属性来指定...
3. **事件处理**:AJAX Tags可以方便地绑定到不同的DOM事件上,如`onSuccess`、`onError`,这样可以在AJAX请求完成后执行相应的回调函数。 4. **简化编码**:通过封装复杂的JavaScript逻辑,AJAX Tags降低了开发...
3. 下拉联动:在多级下拉菜单中,用户选择一项后,下级菜单会根据选择自动填充,实现数据的联动。 4. 数据检索:通过AJAX发送异步请求,后台处理后返回结果,更新前端展示,常见于搜索框的实时检索功能。 三、使用...
做软件开发的可以下在这个包,别忘记添加评论哦!
6. **依赖包**:使用AjaxTags Resources 1.5.5.jar时,可能需要其他的依赖库,如JSTL、Servlet API等。在部署项目时,确保这些依赖包已正确配置到Web应用的类路径中。 总的来说,AjaxTags Resources 1.5.5.jar.zip ...