使用DWR实现自己主动补全 相似百度搜索框的自己主动显示效果
使用DWR实现自己主动补全
自己主动补全:是指用户在文本框中输入前几个字母或汉字的时候,自己主动在存放数据的文件或数据库中将全部以这些字母或汉字开头的数据提示给用户供用户选择
在日常上网过程中,我们常常使用搜索引擎。当我们输入想要检索的keyword时。搜索引擎会提示我们相关的keyword
训练要点:
掌握使用DWR框架开发Ajax程序
使用MyEclipse 10.0 + MySql5.0
新建数据库:能够手动随便新建一个測试用的
DROP TABLE IF EXISTS `books`;
CREATE TABLE `books` (
`id` varchar(100) NOT NULL,
`isbn` varchar(25) default NULL,
`title` varchar(100) default NULL,
`price` double default NULL,
`pubdate` date default NULL,
`intro` bigint(20) default NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
随便插入几条数据:
INSERT INTO `books` VALUES ('1', 'BH123', 'java编程思想昂', '55', '2014-06-10', '333');
INSERT INTO `books` VALUES ('2', 'BH23', 'JS实战经典', '22', '2014-06-10', '3');
INSERT INTO `books` VALUES ('3', '1231232', 'Java核心技术卷', '66', '2014-06-13', '3');
INSERT INTO `books` VALUES ('4', '2342', 'java开发实战经典', '33', '2014-06-13', '98');
使用myeclipse 切换到database视图。右击新建一个数据连接
新建web project 项目:BookShop,使用MyEclipse加入SSH支持。
先加Spring支持。选择前四个库AOP,Core,Persistence Core,JDBC 选择spring3.0;
加入dwr的jar包到lib下;
加入hibernate支持。
下一步,选择Spring configuration file
下一步,选择Existing Spring configuration file
下一步选择刚刚配置好的JDBC Driver:mysql。
下一步,不选择 创建SessionFactory;
加入Sturts2支持:
选择struts2.1。下一步记得选择Struts2 Spring包;
在web.xml配置spring 和dwr。
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:applicationContext.xml</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener> <servlet>
<servlet-name>dwr</servlet-name>
<servlet-class>org.directwebremoting.servlet.DwrServlet</servlet-class>
<init-param>
<param-name>debug</param-name>
<param-value>true</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>dwr</servlet-name>
<url-pattern>/dwr/*</url-pattern>
</servlet-mapping>
在WEB-INF新建dwr.xml
<? xml version="1.0" encoding="UTF-8"? >
<!DOCTYPE dwr PUBLIC
"-//GetAhead Limited//DTD Direct Web Remoting 3.0//EN"
"http://getahead.org/dwr/dwr30.dtd">
<dwr>
<allow>
<create javascript="BooksBiz" creator="spring" scope="application">
<param name="beanName" value="BooksBiz"></param>
<include method="findTitle" />
</create>
<convert converter="bean" match="com.books.entity.Books" />
<create creator="new" javascript="validator">
<param name="class" value="org.apache.struts2.validators.DWRValidator"></param>
</create>
<convert converter="bean" match="com.opensymphony.xwork2.ValidationAwareSupport" />
</allow>
</dwr>
将books反向project: 切换到Database Explorer模式,选择mysql 的books表右击表选择Hibernate Reverse …
在Java package新建包com.books.eneity
说明上面三部:
创建一个hibernate实体配置文件books.hbm.xml
创建一个实体类Books
创建Spring Dao
下一步:
Id策略选择 assigned。
完毕;
将类BooksDao移到com.books.dao;
新建接口BooksBiz在com.books.biz下,加入例如以下方法:
public List<Books> findTitle(String title);
新建实现类BooksBizImpl implements BooksBiz 在com.books.biz.impl下
private BooksDAO booksDAO; public List<Books> findTitle(String title) {
List<Books> list = booksDAO.findTitle(title);
return list;
} public void setBooksDAO(BooksDAO booksDAO) {
this.booksDAO = booksDAO;
}
在BooksDAO下新建 findTitle方法:
public List<Books> findTitle(String title2) {
Query query = this.getSession().createQuery("from Books b where b.title like :title order by b.pubdate desc");
query.setParameter("title", title2 + "%");
return query.list();
}
配置 applicationContext:
头部加入tx和aop支持
xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:p="http://www.springframework.org/schema/p"
xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:aop="http://www.springframework.org/schema/aop"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx-3.0.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-3.0.xsd
">
在</beans>前加入:
<bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory" ref="sessionFactory"></property>
</bean>
<tx:advice transaction-manager="transactionManager" id="txAdvice">
<tx:attributes>
<tx:method name="find*" propagation="SUPPORTS" read-only="true" />
<tx:method name="get*" propagation="SUPPORTS" read-only="true" />
<tx:method name="*" propagation="REQUIRED" read-only="false" />
</tx:attributes>
</tx:advice> <aop:config>
<aop:pointcut expression="execution( * com.books.biz.*.*(..))" id="pointcut" />
<aop:advisor advice-ref="txAdvice" pointcut-ref="pointcut" />
</aop:config> <bean id="BooksBiz" class="com.books.biz.impl.BooksBizImpl">
<property name="booksDAO" ref="BooksDAO"></property>
</bean>
Index.jsp页面
在head以下加:
<script type='text/javascript' src='dwr/engine.js'></script>
<script type='text/javascript' src='dwr/interface/BooksBiz.js'></script>
<script type='text/javascript' src='dwr/util.js'></script>
<style type="text/css">
#sel{
position: absolute;
top: 34px;
left:90px;
visibility: hidden; }
</style>
<script type="text/javascript">
function getTitle(){
var title=dwr.util.getValue('title');
if(title==''){
$('sel').style.visibility="hidden";
return ;
}
BooksBiz.findTitle(title,callback);
}
function callback(list){
if(list.length==0){
$('sel').style.visibility="hidden";
return ;
}else{
$('sel').style.visibility="visible";
}
$('sel').size=list.length;
dwr.util.removeAllOptions('sel');
dwr.util.addOptions('sel',list,"title","title");
}
function getValue(){
$('title').value=$('sel').options[$('sel').selectedIndex].innerHTML;
$('sel').style.visibility="hidden";
}
</script> <body>
图书搜索:<input type="text" id="title" onkeyup="getTitle()">
<select id="sel" ondblclick="getValue()" multiple="multiple"></select>
<input type="button" value="搜 索">
</body>
</html>
部署执行的时候,会有包冲突。
打开部署的文件夹F:\Java\apache-tomcat-6.0.37\webapps\BookShop\WEB-INF\lib,将里面的jar包拷贝出来 反复的antlr删掉最低版本号的。然后将项目停掉吧我们之前工具导入的jar库都remove。再将拷贝出来的jar们拷贝到lib下;
部署,訪问主页,输入数据库数据 的首个字就有相应数据显示;
源代码下载:
http://pan.baidu.com/s/1eQtJhiq
dwr jar下载:http://pan.baidu.com/s/1o61Auee
使用DWR实现自己主动补全 相似百度搜索框的自己主动显示效果的更多相关文章
- 使用DWR实现自动补全 类似百度搜索框的自动显示效果
使用DWR实现自动补全 自动补全:是指用户在文本框中输入前几个字母或汉字的时候,自动在存放数据的文件或数据库中将所有以这些字母或汉字开头的数据提示给用户供用户选择 在日常上网过程中,我们经常使用搜索引 ...
- 你知道为什么Xcode6中Swift没有智能提示和自己主动补全功能吗 ?
你知道为什么Xcode6中Swift没有智能提示和自己主动补全功能吗 ? 长沙戴维营教育将为你解开这个巨大的谜团大BUG! http://www.ubuntucollege.cn/course/29/ ...
- Archlinux YouCompleteMe+syntastic vim自己主动补全插件,显示缩进和状态栏美化,爽心悦目的vim
Archlinux 安装和配置vim补全插件YouCompleteMe的过程. 參考: https://github.com/Valloric/YouCompleteMe https://github ...
- 辛星深入分析vim的自己主动补全功能以及vim的映射
曾经对于vim的自己主动补全功能,都是须要的时候从网上下载点配置项,然后复制到自己的vimrc上去,自己也不知道是什么意思.结果发现搜索到的非常多自己主动补全的方式都非常另类,有的喜欢在补全大括号的时 ...
- linux下让irb实现代码自己主动补全的功能
我不知道其它系统上irb是否有此功能,可是在ubuntu上ruby2.1.2自带的irb默认是没有代码自己主动补全功能的,这多少让人认为有所不便.事实上加上也非常easy,就是在irb里载入一个模块: ...
- jquery autocomplete文本自己主动补全
文本自己主动补全功能确实非常有用. 先看下简单的效果:(样式不咋会写) 以下介绍几种: 1:jqery-actocomplete.js 这个网上有个写好的实例,上面挺具体的,能够下来执行下就清楚了就不 ...
- Linux下新手怎样将VIM配置成C++编程环境(能够STL自己主动补全)
~ 弄拉老半天,最终弄的几乎相同啦,果然程序猿还是须要有点折腾精神啊. 首先你要安装vim,命令:sudo apt-get install vim vim它仅仅是一个编辑器,它不是IDE(比方code ...
- 更改Scala的代码自己主动补全快捷键code completion
使用Eclipse的代码补全快捷键alt+/已经习惯了.可是IntelJIDEA中这个快捷键组合没有效果,那么我们来改动之,按ctrl+alt+s打开设置界面 之后在keymaps中选择Eclipse ...
- [Android] AutoCompleteTextView:自己主动完毕输入内容的控件(自己主动补全)
AutoCompleteTextView是EditText的直接子类,与普通EditText的最大不同就是.在用户输入的过程中,能够列出可供选择的输入项.方便使用者. AutoCompleteText ...
随机推荐
- xfce-OpenVAS自动化安全风险评估指南
1. 登录系统 在客户端,打开浏览器,在地址栏输入https://IP:9392/ 看到如下界面: 我们要信任此网站,点击继续浏览此网站,进入系统登录界面,如下图: 输入我提供的通用登录账号:wdl ...
- 大数据学习——sqoop导出数据
把数据从hadoop导出到关系型数据库 将数据从HDFS导出到RDBMS数据库 导出前,目标表必须存在于目标数据库中. u 默认操作是从将文件中的数据使用INSERT语句插入到表中 u 更新模式下 ...
- Leetcode 413.等差数列划分
等差数列划分 如果一个数列至少有三个元素,并且任意两个相邻元素之差相同,则称该数列为等差数列. 例如,以下数列为等差数列: 1, 3, 5, 7, 9 7, 7, 7, 7 3, -1, -5, -9 ...
- 自动化运维之shell通配符,转义符,和元字符(二)
1 shell通配符 通配符看起来有点象正则表达式语句,但是它与正则表达式不同的,不能相互混淆.把通配符理解为shell特殊代号字符就可. 二.shell元字符 shell除了有通配符之外,由shel ...
- Tomcat基础配置(一)
详情请看散尽浮华的tomcat相关配置技巧梳理 本次只用于自己的查看,谢谢作者的谅解. tomcat常用架构:1)nginx+tomcat:即前端放一台nginx,然后通过nginx反向代理到tomc ...
- 推荐两个不错的flink项目
最近flink真是风生水起,但是浪院长看来这不过是阿里错过了创造spark影响力之后,想要在flink领域创建绝对的影响力.但是,不可否认flink在实时领域确实目前来看独树一帜,当然也有它不适合的地 ...
- 2013 Dhaka 区域赛
A.uva 12709 Falling ANTS 首先按照H排序,然后按照L*H*W排序 #include<iostream> #include<cstdio> #includ ...
- 刷题总结——谈笑风生(主席树+dfs序的应用)
题目: Description 设T 为一棵有根树,我们做如下的定义:• 设a和b为T 中的两个不同节点.如果a是b的祖先,那么称“a比b不知道高明到哪里去了”.• 设a 和 b 为 T 中的两个不同 ...
- 常州模拟赛d4t2 陶陶摘苹果
题目描述 陶陶家的院子里有一棵苹果树,每到秋天树上就会结出 n 个苹果.苹果成熟的时候,陶陶就会 跑去摘苹果. 陶陶的手不能弯 (他仅能把手伸直),当且仅当陶陶达到的高度与苹果的高度相等的时候,陶陶 ...
- spring经典配置
1.annotation方式 <?xml version="1.0" encoding="UTF-8"?><beans xmlns=" ...