**************************************Service层方法****************************
public PageModel getSearch(String key, int articletypeid,int pageNo, int pageSize) //分页--搜索
{
PageModel pagemodel = artircleDao.getSearch(key , articletypeid , pageNo , pageSize);
List keys = SubString.getInstance().splitKey(key);
if(pagemodel.getList()!=null)
{
ListArticle.getInstance().color(pagemodel.getList() , keys);
ListArticle.getInstance().listDeal(pagemodel.getList() , 1 , 50);
}
return pagemodel;
}
*******************************************Dao层方法**************************************
public PageModel getSearch(String key ,final int articletypeid,final int pageNo, final int pageSize) //分页--搜索
{
final List keys=SubString.getInstance().splitKey(key); //方法将在后面给出
PageModel pageModel = new PageModel();
List itemList = new ArrayList();
if(keys.size()>0)
{
itemList=(List)this.getHibernateTemplate().execute(
new HibernateCallback()
{
public Object doInHibernate(org.hibernate.Session session)
{
String hql="from Article a where a.title like ? "; //对标题的搜索
for(int i=0;i<keys.size()-1;i++)//如果只有一个关键字 则不加
{
hql=hql+"or a.title like ?";
}
hql= hql+"or a.content like ?"; //添加内容的搜索
for(int i=0;i<keys.size()-1;i++)//如果只有一个关键字 则不加
{
hql=hql+"or a.content like ?";
}
Query q = session.createQuery(hql+" order by a.id");
for(int i= 0 ;i<keys.size();i++) //添加对标题的参数 从i开始
{
q.setParameter(i, "%"+keys.get(i) + "%");
}
for(int i= 0 ;i<keys.size();i++) //添加对内容的参数 从keys.size()+i开始
{
q.setParameter(keys.size()+i, "%"+keys.get(i) + "%");
}
q.setFirstResult((pageNo - 1) * pageSize)
.setMaxResults(pageSize);
List result = q.list();
return result;
}
}
);
List itemList_2=(List)this.getHibernateTemplate().execute( //用于总记录数
new HibernateCallback()
{
public Object doInHibernate(org.hibernate.Session session)
{
String hql="from Article a where a.title like ? "; //对标题的搜索
for(int i=0;i<keys.size()-1;i++)//如果只有一个关键字 则不加
{
hql=hql+"or a.title like ?";
}
hql= hql+"or a.content like ?"; //添加内容的搜索
for(int i=0;i<keys.size()-1;i++)//如果只有一个关键字 则不加
{
hql=hql+"or a.content like ?";
}
Query q = session.createQuery(hql+" order by a.id");
for(int i= 0 ;i<keys.size();i++) //添加对标题的参数 从i开始
{
q.setParameter(i, "%"+keys.get(i) + "%");
}
for(int i= 0 ;i<keys.size();i++) //添加对内容的参数 从keys.size()+i开始
{
q.setParameter(keys.size()+i, "%"+keys.get(i) + "%");
}
List result = q.list();
return result;
}
}
);
pageModel.setList(itemList);
pageModel.setPageNo(pageNo);
pageModel.setPageSize(pageSize);
pageModel.setTotalRecords(itemList_2.size());//-----------
}
return pageModel;
}
******************************* splitKey()*************************************************
public List splitKey(String key)//格式化关键字 去除多余的空格
{
key = key.trim();
String[] keys = key.split(" ");
List keyList= new ArrayList();
for(String k : keys)
{
if(k.equals("")||k.equals(" ")||k==null)
continue;
else
{
//System.out.println("kkkkkkkkkkkkkkk==:"+k);
keyList.add(k);
}
}
return keyList;
}
*********************************PageModel类*****************************************
package com.bcm.util;
import java.util.List;
import com.bcm.model.ArticleType;
public class PageModel
{
// 总记录数
private int totalRecords;
// 结果集
private List list;
// 当前页
private int pageNo;
// 每页显示多少条
private int pageSize;
private int getTotalPages; //总页数
private ArticleType articletype;
public int getTotalRecords()
{
return totalRecords;
}
public void setTotalRecords(int totalRecords)
{
this.totalRecords = totalRecords;
}
public List getList()
{
return list;
}
public void setList(List list)
{
this.list = list;
}
public int getPageNo()
{
return pageNo;
}
public void setPageNo(int pageNo)
{
if(pageNo==0)
this.pageNo = 1;
else
this.pageNo = pageNo;
}
public int getPageSize()
{
return pageSize;
}
public void setPageSize(int pageSize)
{
this.pageSize = pageSize;
}
/**
* 取得总页数
* @return
*/
public int getTotalPages()
{
return (totalRecords + pageSize - 1) / pageSize;
}
/**
* 取得第一页
* @return
*/
public int getTopPageNo()
{
return 1;
}
/**
* 取得上一页
* @return
*/
public int getPreviousPageNo()
{
if (pageNo <= 1)
{
return 1;
}
return pageNo - 1;
}
/**
* 取得下一页
* @return
*/
public int getNextPageNo()
{
if (pageNo >= getTotalPages())
{
return getTotalPages() == 0 ? 1 : getTotalPages();
}
return pageNo + 1;
}
/**
* 取得最后一页
* @return
*/
public int getBottomPageNo()
{
return getTotalPages() == 0 ? 1 : getTotalPages();
}
public ArticleType getArticletype()
{
return articletype;
}
public void setArticletype(ArticleType articletype)
{
this.articletype = articletype;
}
}
********************************前台调用分页************************************************
<table width="926" height="21" border="0" class="title1">
<tr>
<form action="article_search.action" ><!-- 只用于手动跳转到XX页 -->
<td height="25" align="center" valign="bottom" class="titlep">
<s:url id="url_top" value="article_search.action">
<s:param name="pageNo" value="1"></s:param>
<s:param name="key" value="#session.key"></s:param>
</s:url>
<s:url id="url_pre" value="article_search.action">
<s:param name="pageNo" value="pagemodel.getPreviousPageNo()"></s:param>
<s:param name="key" value="#session.key"></s:param>
</s:url>
<s:url id="url_next" value="article_search.action">
<s:param name="pageNo" value="pagemodel.getNextPageNo()"></s:param>
<s:param name="key" value="#session.key"></s:param>
</s:url>
<s:url id="url_buttom" value="article_search.action">
<s:param name="pageNo" value="pagemodel.getBottomPageNo()"></s:param>
<s:param name="key" value="#session.key"></s:param>
</s:url>
共<font color="#CC3333"><s:property value="pagemodel.totalRecords"/></font>条
每页<font color="#CC3333"><s:property value="pagemodel.pageSize"/></font>条
第<font color="#CC3333"><s:property value="pagemodel.pageNo"/>/<s:property value="pagemodel.getTotalPages()"/></font>页
<s:if test="pagemodel.pageNo==1&&pagemodel.getTotalPages()==1">
<font color="#999999"> 首页</font>
<font color="#999999"> 上一页</font>
<font color="#999999">下一页</font>
<font color="#999999">尾页</font>
</s:if>
<s:elseif test="pagemodel.pageNo==1&&pagemodel.getTotalPages()!=1">
<font color="#999999"> 首页</font>
<font color="#999999"> 上一页</font>
<s:a href="%{url_next}">下一页</s:a>
<s:a href="%{url_buttom}">尾页</s:a>
</s:elseif>
<s:elseif test="pagemodel.pageNo==pagemodel.getBottomPageNo()">
<s:a href="%{url_top}">首页</s:a>
<s:a href="%{url_pre}">上一页</s:a>
<font color="#999999">下一页</font>
<font color="#999999">尾页</font>
</s:elseif>
<s:else>
<s:a href="%{url_top}">首页</s:a>
<s:a href="%{url_pre}">上一页</s:a>
<s:a href="%{url_next}">下一页</s:a>
<s:a href="%{url_buttom}">尾页</s:a>
</s:else>
转到<input type="hidden" name="key" value="<s:property value="#session.key"/>"/>
<input type="text" name="pageNo" size="2"/>页
<input type="submit" value="go"/>
</td>
</form>
</tr>
</table>
相关推荐
总结来说,SSH框架的模糊查询和分页功能涉及到了前端请求处理、后端业务逻辑、数据库操作等多个层面,通过合理的代码设计和组织,能够实现高效且灵活的数据检索和展示。在实际开发中,还需要考虑性能优化、异常处理...
在这个场景中,我们将深入探讨如何利用SSH框架实现模糊查询、分页以及增删改查(CRUD)功能,并与Oracle 10g数据库进行交互。 **一、SSH框架简介** SSH框架由三个主要部分组成: 1. **Struts2**:这是一个基于MVC...
在SSH框架中,我们可以利用Hibernate的HQL(Hibernate Query Language)或JPA(Java Persistence API)的 Criteria API 来实现模糊查询。例如,我们可能在用户搜索时,使用LIKE关键字配合通配符%来找到包含特定字串...
本文将深入探讨如何在SSH框架下实现增删改查(CRUD)功能,以及分页和模糊查询的技术细节。 首先,Spring框架是整个应用的中枢,它负责依赖注入(DI)和面向切面编程(AOP),提供了事务管理和其他企业级服务。...
在不连接数据库的情况下,通过缓存或预加载数据实现查询结果的分页展示。这可以提高查询效率,减少数据库负载。 4. **模糊查询**: 允许用户输入部分关键字,系统根据关键字匹配数据库中的数据。比如,用户可以...
在本项目"SSH整合练习增删改查"中,开发者使用了Struts2.1.8、Hibernate3.5.5和Spring3.0.2这三个特定版本的框架,以及MySQL5.1数据库和JDK1.6作为运行环境,实现了对数据对象的完整生命周期管理,包括添加(Add)、...
在SSH框架中实现模糊查询,通常可以在Hibernate的查询语句中使用`like`操作符,配合通配符来完成。例如,如果查询字段是`name`,模糊查询的HQL可能是`from Entity where name like :keyword`,这里的`:keyword`是...
(3)商品搜索(搜索内容进行分词,提取关键字,模糊查询)。(4) QQ在线咨询功能。本项目基本实现完整的B2C网站的功能。二,项目部署:本项目使用Eclipse_EE + Tomcat7.0 + MySql5.6的开发环境。1,安装Eclipse_EE...
文章搜索模块支持按关键字进行模糊查询。 系统流程: 用户首先访问首页,可以选择注册或登录。登录后,用户可以搜索文章、回复、查看自己的文章、按类别查看文章、查看特定作者的文章,以及对文章进行回复和留言。 ...
- 模糊查询:利用`LIKE`关键字结合通配符`%`实现。 - 参数查询:通过`setString`等方法传递参数值,避免SQL注入问题。 **11. 分页查询** - 使用`setFirstResult`和`setMaxResults`方法实现。 **12. HQL简介** ...
然而,这个标题有些模糊,没有提供足够的具体信息来深入讨论SSH在源码管理中的实际应用。因此,我将基于SSH的一般知识和它在开发中的常见用途来展开讨论。 SSH是一种网络协议,用于在不安全的网络上安全地执行命令...
3. 搜索与检索:提供关键字搜索、高级搜索等功能,支持模糊匹配和分类检索。 4. 文献分类与标签:对文献进行分类管理,用户可以根据标签快速找到相关文献。 5. 权限控制:根据用户角色设置不同级别的访问权限,如...
商品搜索:用户可以搜索自己感兴趣的体育商品,该搜索栏支持模糊查询,只需输入关键字就可以查到。 会员注册:用户填写自己的基本信息,可以成为该商城的会员用户。 用户登录:注册成功后,可以登录该商城的网站。 ...
在SSH框架中,可以利用Struts2的拦截器或者自定义插件实现分页逻辑,而Hibernate可以通过HQL(Hibernate Query Language)或者SQL配合LIMIT关键字实现数据库的分页查询。 贸易Demo(tradeDemo)这个项目可能包含了...
(3)商品搜索(搜索内容进行分词,提取关键字,模糊查询)。(4)QQ在线咨询功能。本项目基本实现完整的B2C网站的功能。 二、项目部署: 本项目使用Eclipse_EE + Tomcat7.0+ MySql5.6的开发环境。 1、安装 Eclipse_...
7. **子查询**:HQL允许在查询语句中嵌套查询,以实现复杂的数据过滤。例如,`select c from Cat c where c.mate in (select m from Mate m where m.age > 3)`,这个查询会找出所有配偶年龄大于3岁的猫。 8. **投影...
【学生信息管理系统】是一个基于Java SSH框架开发的项目,它主要涵盖了使用EasyUI、JDK1.6等技术实现的学生信息的增删改查、文件上传、数据排序、模糊查询、表单验证以及分页显示等多种功能。在这个系统中,SSH...
4. **搜索模块**:提供关键字搜索功能,可能需要实现全文检索或者模糊匹配。 5. **权限模块**:对用户进行角色划分,设置不同权限,如普通用户、管理员等,控制用户访问和操作的范围。 6. **通知模块**:实现用户...