上回说到前台怎么用jQuery选出搜索类别, jQuery调用idOfXxxFrom.submit()提交到后台action.
这回说搜索的后台怎么用QBC实现
一:hotSearch
这个功能昨天给忘了 就是提供一个推荐的字串, 然后后台搜索它
<a href="#" οnclick="seartchHot('java web')">java web</a>
首页中包含的js
function seartchHot(content) {
$('#searchStr').val(content);
doSearchForm.submit();
}
jQuery通过选择器去选到搜索框输入内容的地方, 然后把传入的字段输入进去 ,再提交去搜索
二:action
经过struts的配置,把要搜索的信息提交到action上
public String doSearch() {
if (searchStr != null) {
searchStr = searchStr.trim();
}
String type = this.article == null ? null : this.article
.getArticleTypeName();
this.searchArticles = this.articleDao.doSearch(type, searchStr, this
.getFirstResult(), this.getMaxResults());
return "searchResult";
}
先校验是否为空 ,然后去掉里边的空格
校验之前hidden传过来的类别,没有就传空下去, 有的话就从网页传值中取出来
然后传给Dao去检索
三:DaoImpl
实现用了QBC,
创建好Criteria对象后 在里边add检索约束,在Restrictions中添加搜索条件
public List<Article> doSearch(String type, String str, String firstResult,
String maxResults) {
int first = new Integer(firstResult).intValue();
int max = new Integer(maxResults).intValue();
Criteria criteria = this.getCriteria(Article.class);
if (type != null && !type.equals("")) {
criteria.add(Restrictions.eq("articleTypeName", type));
}
criteria.add(
Restrictions.or(Restrictions.like("title", str,
MatchMode.ANYWHERE), Restrictions.like("content", str,
MatchMode.ANYWHERE))).addOrder(
Order.desc("lastUpdateTime")).setFirstResult(first)
.setMaxResults(max);
List<Article> list = criteria.list();
return list;
}
QBC的好处是用面向对象的方式检索数据库,据说比较安全 不怕注入