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="模糊查询" onclick="mistyByName()" /> </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.java public 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.java public 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.java public 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集合,注意该查询语句。
总结:既然查询结果返回的是一个集合,则在数据有很多时需要进行分页显示,在此文章中并没有介绍分页显示,下篇文章将继续介绍模糊查询分页显示的操作