`
DXL_xiaoli
  • 浏览: 69834 次
  • 性别: Icon_minigender_2
  • 来自: 北京
社区版块
存档分类
最新评论

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

阅读更多

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

 

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

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>

 

解析:在此页面中主要是看Jqueryajax处理过程。当执行onclick="mistyByName()"事件 时执行Jqueryajax请求,同样需要获取页面中文本框输入的值,将该值以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集合,注意该查询语句。

总结:既然查询结果返回的是一个集合,则在数据有很多时需要进行分页显示,在此文章中并没有介绍分页显示,下篇文章将继续介绍模糊查询分页显示的操作

 

4
3
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics