DXL_xiaoli 发表于 2013-1-29 10:44:53

s2sh整合中模糊查询功能实现

s2sh整合中模糊查询功能实现
 
上一篇文章我介绍了精确查询的操作实现,这篇文章我继续介绍模糊查询,其实精确查询与模糊查询大同小异,基本思路是一致的,只是操作语句有所改变。但在这里我并没有用到上篇中的form表单提交,而是使用的Jquery的ajax请求操作。下面我还是以实例案例来介绍。

misty to search.jsp<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%><%@taglib uri="/struts-tags" prefix="s"%><%String path = request.getContextPath();String basePath = request.getScheme() + "://"+ request.getServerName() + ":" + request.getServerPort()+ path + "/";%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html><head><base href="<%=basePath%>"><title>My JSP 'list.jsp' starting page</title><meta http-equiv="pragma" content="no-cache"><meta http-equiv="cache-control" content="no-cache"><meta http-equiv="expires" content="0"><meta http-equiv="keywords" content="keyword1,keyword2,keyword3"><meta http-equiv="description" content="This is my page"><!--<link rel="stylesheet" type="text/css" href="styles.css">--><script type="text/javascript"src="${pageContext.request.contextPath}/js/jquery-1.6.js"></script><script type="text/javascript"><!--Jquery的Ajax请求处理-->function mistyByName(){var name=$("#uname").val();$.ajax({    type:"post",    url:"csdn/user_mistyByName",    data:"user.name="+name,    dataType:"json",    success:function(data){       $.each(data.users,function(i,entity){         $("#susers").append("<tr style='border:2px'></tr>")         .append("<td>"+entity.id+"</td>")         .append("<td>"+entity.name+"</td>")         .append("<td>"+entity.pass+"</td>")         .append("<td><input type='button' value='修改' id='up' onclick='uclick()'/></td>");         });             },    error:function(data){    }});}</script></head><body><div><div><h1>根据某个名称实现模糊查询</h1><!-- 是含有|还是以什么开头 --><input type="text" name="user.name" id="uname" /><input type="button" value="模糊查询"/></div><table><thead><tr><th>序号</th><th>用户名</th><th>密码</th><th>操作</th></tr></thead><tbody id="susers"></tbody></table></div></body></html> 
解析:在此页面中主要是看Jquery的ajax处理过程。当执行onclick="mistyByName()"事件 时执行Jquery的ajax请求,同样需要获取页面中文本框输入的值,将该值以post方法提交到action中执行mistyByName()方法。返回类型为json类型,再到底层实现类中执行模糊查询的操作。

UserAction.javapublic class UserAction extends ActionSupport {/** **/private static final long serialVersionUID = 1L;private UserServiceImpl userServiceImpl;public UserServiceImpl getUserServiceImpl() {return userServiceImpl;}/* 依赖注入方式 */public void setUserServiceImpl(UserServiceImpl userServiceImpl) {this.userServiceImpl = userServiceImpl;}private List<User> users;private User user;public User getUser() {return user;}public void setUser(User user) {this.user = user;}public List<User> getUsers() {return users;}public void setUsers(List<User> users) {this.users = users;}/* 模糊查询 */public String mistyByName(){users=userServiceImpl.mistyByName(user.getName());return "mistyByName";}} 
struts-user.xml<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE struts PUBLIC"-//Apache Software Foundation//DTD Struts Configuration 2.1.7//EN""http://struts.apache.org/dtds/struts-2.1.7.dtd"><struts><package name="dxl" extends="json-default" namespace="/csdn"><global-results><result name="input">/index.jsp</result></global-results><action name="user_*" class="userAction" method="{1}"><result name="mistyByName" type="json"><param name="includeProperties">pagination\.nowpage,pagination\.countpage, users\[\d+\]\.id, users\[\d+\]\.name, users\[\d+\]\.pass,users\[\d+\]\.rdate</param></result></action></package></struts>    
解析:includeProperties 参数:输出结果中需要包含的属性值,这里正则表达式和属性名匹配,可以用“,”分割填充多个正则表达式。

UserServiceImpl.javapublic class UserServiceImpl implements UserService {private UserDaoImpl userDaoImpl;   /*依赖注入*/public void setUserDaoImpl(UserDaoImpl userDaoImpl) {this.userDaoImpl = userDaoImpl;}public List<User> mistyByName(String name) {return userDaoImpl.mistyByName(name);}}UserDaoImpl.javapublic class UserDaoImpl extends HibernateDaoSupport implements UserDao {   /*根据姓名的匹配进行模糊查询*/public List<User> mistyByName(String name) { List list = getHibernateTemplate().find("from User where name like ? ","%"+name+"%");return list;}} 
解析:注:该实现类返回的是一个list集合,注意该查询语句。
总结:既然查询结果返回的是一个集合,则在数据有很多时需要进行分页显示,在此文章中并没有介绍分页显示,下篇文章将继续介绍模糊查询分页显示的操作
 
页: [1]
查看完整版本: s2sh整合中模糊查询功能实现