1.在视图层上
<%@ page language="java" contentType="text/html; charset=utf-8"
pageEncoding="utf-8"%>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Insert title here</title>
<%
String path = request.getContextPath();
%>
<script type="text/javascript" src="<%=path%>/user/js/jquery-3.1.1.min.js"></script>
<style type="text/css">
body{text-align: center}
.div{margin: 0 auto;width:600px; height: 300px; border :1px solid #F00}
.t{margin:0 auto; width:600px; height:300px; border:1px solid #F00}
</style>
<script type="text/javascript">
$(document).ready(function(){
$('#search')
.click(function() {
var text = $('#searchText').val();
//alert("text="+text);
window.location.href = "/TestSH/user/user/searchUser.do?name=" + text;
});
});
</script>
</head>
<body>
<div class="div">
<!-- <form action="" name="searchForm"> -->
<input type="text" id="searchText" />
<input type="button" id="search" value="搜索"/>
<!-- </form> -->
<table border="1" class="t">
<tbody>
<tr>
<th>姓名<th>
<th>密码<th>
<tr>
<c:if test="${!empty userList }">
<c:forEach items="${userList }" var="user">
<tr>
<td>${user.name }</td>
<td>${user.pass }</td>
</tr>
</c:forEach>
</c:if>
</tbody>
</table>
</div>
</body>
</html>
2.在控制层上(UserAction类)
//标注此类处于控制层
@Controller
//规定网页访问该控制层模块的url
@RequestMapping(value=Path.USER)
public class UserAction {
//业务接口注入的注解之一,根据类型自动装配对应内容
//1.还可以用@Resource,默认按名字name装配,如果指明type则按类型装配,2.使用@Autowired注释进行byType注入,如果需要byName(byName就是通过id去标识)注入,增加@Qualifier注释
@Autowired
private UserManager userManager;
/**
*
* @param flag网页到后台传参的方法之一,对应从网页传过来的参数,可有多个,但要一一对应
* @param request和response一样,用到什么写什么
* @return 返回此时需要跳转的url
* @throws Exception
*/
//在此模块下的网页的实际url
@RequestMapping(value=Path.INDEX,method=RequestMethod.POST)
public String getAllUsers(String flag, HttpServletRequest request) throws Exception{
System.out.println("flag="+ flag);
if(flag != null && flag.equals("search")){
}
else{
request.setAttribute("userList", userManager.getAllUser());
}
return Path.INDEX;
}
}
3.在持久层上(UserDao)
我这里没有业务逻辑层,如果有的话,则是业务逻辑层调用持久层
//用于标注业务逻辑层,即service层
@Service
public class UserServiceImpl implements UserService {
}
//用于标注数据访问层,即DAO层
@Repository
public class UserDao implements IUserDao{
@Autowired
private SessionFactory sessionFactory;
@Override
public List<User> searchUser(String name) {
// TODO Auto-generated method stub
String hql = "from User";
Session session = sessionFactory.getCurrentSession();
Query query = session.createQuery(hql);
// session.getTransaction().commit();
List<User> list = query.list();
List<User> res = new ArrayList<>();
LuceneUtil lu = new LuceneUtil();
System.out.println("---------------------");
try {
lu.IndexBuilder(list);
TopDocs hits = lu.search(name); // 输入查询内容后,查询
ScoreDoc[] scoreDocs = hits.scoreDocs;
for (int i = 0; i < scoreDocs.length; i++) { // 返回查询后结果
int docId = scoreDocs[i].doc;
Document document = lu.iSearcher.doc(docId);
System.out.println("(" + i + ")" + document.toString());
res.add(new User(Integer.parseInt(document.get("ID")), document.get("Name"), document.get("Pass")));
// System.out.println(document.get("ID"));
// System.out.println(document.get("Name"));
// System.out.println(document.get("Pass"));
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return res;
}
}