UserController.java
//分页查询用户信息
@RequestMapping(value="/userlist.html")
public String getUserList(Model model,
@RequestParam(value="queryname",required=false) String queryUserName,
@RequestParam(value="queryUserRole",required=false) String queryUserRole,
@RequestParam(value="pageIndex",required=false) String pageIndex){
//设置页面容量
int pageSize = Constans.pageSize;
//当前页码
int currentPageNo = 1;
if(queryUserName == null){
queryUserName = "";
}
int _queryUserRole = 0;
if(queryUserRole != null && !queryUserRole.equals("")){
_queryUserRole = Integer.parseInt(queryUserRole);
}
//当前页
if(pageIndex != null){
try{
currentPageNo = Integer.valueOf(pageIndex);
}catch(NumberFormatException e){
return "redirect:/user/syserror.html";
//response.sendRedirect("syserror.jsp");
}
}
//获得总记录数,其中涉及到一个问题:两个参数,若是只是传入一个,如何处理?
int totalCount = userService.getUserCount(queryUserName,_queryUserRole);
//总页数
PageSupport pages=new PageSupport();
pages.setCurrentPageNo(currentPageNo);
//通过总记录数除以页面容量达到总页数
pages.setPageSize(pageSize);
pages.setTotalCount(totalCount);
int totalPageCount = pages.getTotalPageCount();
//控制首页和尾页
if(currentPageNo < 1){
currentPageNo = 1;
}else if(currentPageNo > totalPageCount){
currentPageNo = totalPageCount;
}
List<User> userList = null;
//获得用户信息(涉及到一个连表查询,获得用户角色姓名userRoleName)
userList = userService.getUserList(queryUserName,_queryUserRole,currentPageNo,pageSize);
model.addAttribute("userList", userList);
List<Role> roleList = null;
//获得用户角色信息(用于前端页面的下拉列表的显示所有用户角色的选项)
roleList = roleService.getRoleList();
model.addAttribute("roleList", roleList);
model.addAttribute("queryUserName", queryUserName);
model.addAttribute("queryUserRole", queryUserRole);
model.addAttribute("totalPageCount", totalPageCount);
model.addAttribute("totalCount", totalCount);
model.addAttribute("currentPageNo", currentPageNo);
return "userlist";
}
//如果出现一个异常,使用全局异常方法,跳出一个友好提示异常页面(需要在springmvc-servlet文件中事先配置)
@RequestMapping(value="/syserror.html")
public String sysError(){
return "syserror";
}
package cn.kgc.service;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;
import javax.annotation.Resource;
import org.apache.commons.lang.StringUtils;
import org.springframework.stereotype.Service;
import cn.kgc.dao.BaseDao;
import cn.kgc.dao.UserDao;
import cn.kgc.pojo.User;
@Service
public class UserServiceImpl implements UserService {
@Resource
private UserDao userDao;
@Override
public User login(String userCode, String userPassword) {
// TODO Auto-generated method stub
Connection connection=null;
User user=null;
try{
connection=BaseDao.getConnection();
user=userDao.getLoginUser(connection,userCode);
}catch (Exception e){
e.printStackTrace();
}finally{
BaseDao.closeResource(connection, null, null);
}
if(user!=null){
//匹配密码
if(!user.getUserPassword().equals(userPassword)){
user=null;
}
}
return user;
}
@Override
public List<User> getUserList(String queryUserName, int queryUserRole,
int currentPageNo, int pageSize) {
// TODO Auto-generated method stub
Connection connection=null;
List<User> userList=null;
try{
connection=BaseDao.getConnection();
userList=userDao.getUserList(connection,queryUserName,queryUserRole,currentPageNo,pageSize);
}catch (Exception e){
e.printStackTrace();
}finally{
BaseDao.closeResource(connection, null, null);
}
return userList;
}
@Override
public int getUserCount(String queryUserName, int queryUserRole) {
// TODO Auto-generated method stub
Connection connection = null;
int count = 0;
System.out.println("queryUserName ---- > " + queryUserName);
System.out.println("queryUserRole ---- > " + queryUserRole);
try {
//连接数据库对象
connection = BaseDao.getConnection();
count = userDao.getUserCount(connection, queryUserName,queryUserRole);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
BaseDao.closeResource(connection, null, null);
}
return count;
}
}
package cn.kgc.dao;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;
import org.apache.commons.lang.StringUtils;
import org.springframework.stereotype.Repository;
import cn.kgc.pojo.User;
@Repository
public class UserDaoImpl implements UserDao {
@Override
public User getLoginUser(Connection connection, String userCode)
throws Exception {
// TODO Auto-generated method stub
PreparedStatement pstm=null;
ResultSet rs=null;
User user=null;
if(connection!=null){
String sql="select * from smbms_user where userCode=?";
Object[] params={userCode};
rs=BaseDao.execute(connection, pstm, rs, sql, params);
System.out.println(rs);
if(rs.next()){
user=new User();
user.setId(rs.getInt("id"));
user.setUserCode(rs.getString("userCode"));
user.setUserName(rs.getString("userName"));
user.setUserPassword(rs.getString("userPassword"));
user.setGender(rs.getInt("gender"));
user.setBirthday(rs.getDate("birthday"));
user.setPhone(rs.getString("phone"));
user.setAddress(rs.getString("address"));
user.setUserRole(rs.getInt("userRole"));
user.setCreatedBy(rs.getInt("createdBy"));
user.setCreationDate(rs.getTimestamp("creationDate"));
user.setModifyBy(rs.getInt("modifyBy"));
user.setModifyDate(rs.getTimestamp("modifyDate"));
}
BaseDao.closeResource(null, pstm, rs);
}
return user;
}
@Override
public List<User> getUserList(Connection connection, String userName,
int userRole, int currentPageNo, int pageSize) throws Exception {
// TODO Auto-generated method stub
PreparedStatement pstm=null;
ResultSet rs=null;
List<User> userList=new ArrayList<User>();
if(connection!=null){
StringBuffer sql=new StringBuffer();
sql.append("select u.*,r.roleName as userRoleName from smbms_user u,smbms_role r where u.userRole=r.id");
List<Object> list=new ArrayList<Object>();
if(!StringUtils.isEmpty(userName)){
sql.append(" and u.userName like ?");
list.add("%"+userName+"%");
}
if(userRole>0){
sql.append(" and u.userRole=?");
list.add(userRole);
}
sql.append(" order by creationDate DESC limit ?,?");
currentPageNo=(currentPageNo-1)*pageSize;
list.add(currentPageNo);
list.add(pageSize);
Object[] params=list.toArray();
System.out.println(sql.toString());
rs=BaseDao.execute(connection, pstm, rs, sql.toString(), params);
while(rs.next()){
User _user=new User();
_user.setId(rs.getInt("id"));
_user.setUserCode(rs.getString("userCode"));
_user.setUserName(rs.getString("userName"));
_user.setGender(rs.getInt("gender"));
_user.setBirthday(rs.getDate("birthday"));
_user.setPhone(rs.getString("phone"));
_user.setUserRole(rs.getInt("userRole"));
_user.setUserRoleName(rs.getString("userRoleName"));
userList.add(_user);
}
BaseDao.closeResource(null, pstm, rs);
}
return userList;
}
@Override
public int getUserCount(Connection connection, String userName, int userRole)
throws Exception {
PreparedStatement pstm = null;
ResultSet rs = null;
int count = 0;
if(connection != null){
//StringBuffer拼sql语句解决了2个参数,但是不全赋值的情况,2个参数,1个参数,0个参数需要拼接sql语句
StringBuffer sql = new StringBuffer();
sql.append("select count(1) as count from smbms_user u,smbms_role r where u.userRole = r.id");
List<Object> list = new ArrayList<Object>();
if(!StringUtils.isEmpty(userName)){
sql.append(" and u.userName like ?");
list.add("%"+userName+"%");
}
if(userRole > 0){
sql.append(" and u.userRole = ?");
list.add(userRole);
}
Object[] params = list.toArray();
System.out.println("sql ----> " + sql.toString());
rs = BaseDao.execute(connection, pstm, rs, sql.toString(), params);
if(rs.next()){
count = rs.getInt("count");
}
}
BaseDao.closeResource(connection, pstm, rs);
return count;
}
}
jsp页面
<div class="search">
<form method="post" action="${pageContext.request.contextPath }/user/userlist.html">
<input name="method" value="query" class="input-text" type="hidden">
<span>用户名:</span>
<input name="queryname" class="input-text" type="text" value="${queryUserName }">
<span>用户角色:</span>
<select name="queryUserRole">
<c:if test="${roleList != null }">
<option value="0">--请选择--</option>
<c:forEach var="role" items="${roleList}">
<option <c:if test="${role.id == queryUserRole }">selected="selected"</c:if>
value="${role.id}">${role.roleName}</option>
</c:forEach>
</c:if>
</select>
<input type="hidden" name="pageIndex" value="1"/>
<input value="查 询" type="submit" id="searchbutton">
<a href="${pageContext.request.contextPath}/jsp/useradd.jsp" >添加用户</a>
</form>
</div>
<!--用户-->
<table class="providerTable" cellpadding="0" cellspacing="0">
<tr class="firstTr">
<th width="10%">用户编码</th>
<th width="20%">用户名称</th>
<th width="10%">性别</th>
<th width="10%">年龄</th>
<th width="10%">电话</th>
<th width="10%">用户角色</th>
<th width="30%">操作</th>
</tr>
<c:forEach var="user" items="${userList }" varStatus="status">
<tr>
<td>
<span>${user.userCode }</span>
</td>
<td>
<span>${user.userName }</span>
</td>
<td>
<span>
<c:if test="${user.gender==1}">男</c:if>
<c:if test="${user.gender==2}">女</c:if>
</span>
</td>
<td>
<%-- <span>${user.age}</span> --%>
</td>
<td>
<span>${user.phone}</span>
</td>
<td>
<span>${user.userRoleName}</span>
</td>
<td>
<span><a class="viewUser" href="javascript:;" userid=${user.id } username=${user.userName }><img src="${pageContext.request.contextPath }/statics/images/read.png" alt="查看" title="查看"/></a></span>
<span><a class="modifyUser" href="javascript:;" userid=${user.id } username=${user.userName }><img src="${pageContext.request.contextPath }/statics/images/xiugai.png" alt="修改" title="修改"/></a></span>
<span><a class="deleteUser" href="javascript:;" userid=${user.id } username=${user.userName }><img src="${pageContext.request.contextPath }/statics/images/schu.png" alt="删除" title="删除"/></a></span>
</td>
</tr>
</c:forEach>
</table>
<input type="hidden" id="totalPageCount" value="${totalPageCount}"/>
<c:import url="rollpage.jsp">
<c:param name="totalCount" value="${totalCount}"/>
<c:param name="currentPageNo" value="${currentPageNo}"/>
<c:param name="totalPageCount" value="${totalPageCount}"/>
</c:import>
</div>