zoukankan      html  css  js  c++  java
  • 超市管理系统总结篇四用户信息展示

    在这里插入图片描述

    1. 导入分页的工具类-PageSupport
    2. 用户列表页面导入-userlist.jsp

    1、获取用户数量

    1. UserDao
    //根据用户名或者角色查询用户总数
    public int getUserCount(Connection connection,String username ,int userRole)throws SQLException, Exception;
    
    1. UserDaoImpl
    @Override
    	public int getUserCount(Connection connection, String userName, int userRole)
    			throws Exception {
    		// TODO Auto-generated method stub
    		PreparedStatement pstm = null;
    		ResultSet rs = null;
    		int count = 0;
    		if(connection != null){
    			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.isNullOrEmpty(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(null, pstm, rs);
    		}
    		return count;
    	}
    1234567891011121314151617181920212223242526272829
    
    1. UserService
    //查询记录数
    	public int getUserCount(String username, int userRole);
    12
    
    1. UserServiceImpl
    //查询记录数
    	@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);
    		}
    		//System.out.println("count"+count);
    		return count;
    	}
    1234567891011121314151617181920
    

    2、获取用户列表

    1.UserDao

    //通过条件查询-userList
    	public List<User> getUserList(Connection connection, String userName, int userRole, int currentPageNo, int pageSize)throws Exception;
    12
    
    1. UserDaoImpl
    @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.isNullOrEmpty(userName)){
    				sql.append(" and u.userName like ?");
    				list.add("%"+userName+"%");
    			}
    			if(userRole > 0){
    				sql.append(" and u.userRole = ?");
    				list.add(userRole);
    			}
    			//在数据库中,分页显示 limit startIndex,pageSize;总数
    			//当前页  (当前页-1)*页面大小
    			//0,5	1,0	 01234
    			//5,5	5,0	 56789
    			//10,5	10,0 10~
    			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 ----> " + 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;
    	}
    
    1. UserService
    //根据条件查询用户列表
    	public List<User> getUserList(String queryUserName, int queryUserRole, int currentPageNo, int pageSize);
    12
    
    1. UserServiceImpl
    @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;
    		System.out.println("queryUserName ---- > " + queryUserName);
    		System.out.println("queryUserRole ---- > " + queryUserRole);
    		System.out.println("currentPageNo ---- > " + currentPageNo);
    		System.out.println("pageSize ---- > " + pageSize);
    		try {
    			connection = BaseDao.getConnection();
    			userList = userDao.getUserList(connection, queryUserName,queryUserRole,currentPageNo,pageSize);
    		} catch (Exception e) {
    			// TODO Auto-generated catch block 
    			e.printStackTrace();
    		}finally{
    			BaseDao.closeResource(connection, null, null);
    		}
    		return userList;
    	}
    1234567891011121314151617181920
    

    3、获取角色操作

    为了我们的职责统一,我们可以把角色的操作单独放在一个包中,和pojo类对应。。。

    1. RoleDao
    //获取角色列表
    		public List<Role> getRoleList(Connection connection)throws Exception;
    12
    
    1. RoleDaoIpml
    public class RoleDaoImpl implements RoleDao {
    
    	@Override
    	public List<Role> getRoleList(Connection connection) throws Exception {
    		PreparedStatement pstm = null;
    		ResultSet rs = null;
    		List<Role> roleList = new ArrayList<Role>();
    		if (connection != null) {
    			String sql = "select * from smbms_role";
    			Object[] params = {};
    			rs = BaseDao.execute(connection, pstm, rs, sql, params);
    			while (rs.next()) {
    				Role _role = new Role();
    				_role.setId(rs.getInt("id"));
    				_role.setRoleCode(rs.getString("roleCode"));
    				_role.setRoleName(rs.getString("roleName"));
    				roleList.add(_role);
    			}
    			BaseDao.closeResource(null, pstm, rs);
    		}
    
    		return roleList;
    	}
    }
    123456789101112131415161718192021222324
    
    1. RoleService
    public interface RoleService {
    	//角色列表查询
    	public List<Role> getRoleList();  
    	
    }
    
    1. RoleServiceIpml
    public class RoleServiceImpl implements RoleService{
    	
    	private RoleDao roleDao;
    	
    	public RoleServiceImpl(){
    		roleDao = new RoleDaoImpl();
    	}
    	
    	@Override
    	public List<Role> getRoleList() {
    		Connection connection = null;
    		List<Role> roleList = null;
    		try {
    			connection = BaseDao.getConnection();
    			roleList = roleDao.getRoleList(connection);
    		} catch (Exception e) {
    			e.printStackTrace();
    		}finally{
    			BaseDao.closeResource(connection, null, null);
    		}
    		return roleList;
    	}
    	
    }
    

    4、用户显示的Servlet

    1. 获取用户前端的数据(查询)
    2. 判断请求是否需要执行,看参数的值判断
    3. 为了实现分页,需要计算出当前页面和总页面,页面大小…
    4. 用户列表展示
    5. 返回前端
    //重点、难点
    	private void query(HttpServletRequest req, HttpServletResponse resp) {
    		// TODO 自动生成的方法存根
    		//查询用户列表
    		//从前端获取数据
    		//查询用户列表
    		String queryUserName = req.getParameter("queryname");
    		String temp = req.getParameter("queryUserRole");
    		String pageIndex = req.getParameter("pageIndex");
    		int queryUserRole = 0;
    		
    		//获取用户列表
    		UserServiceImpl userService = new UserServiceImpl();
    		List<User> userList = null;
    		
    		//第一此请求肯定是走第一页,页面大小固定的
    		//设置页面容量
        	int pageSize = 5;//把它设置在配置文件里,后面方便修改
        	//当前页码
        	int currentPageNo = 1;
    		
    		if(queryUserName == null){
    			queryUserName = "";
    		}
    		if(temp != null && !temp.equals("")){
    			queryUserRole = Integer.parseInt(temp);
    		}
    		if(pageIndex != null) {
    			currentPageNo = Integer.parseInt(pageIndex);
    		}
    		//获取用户总数(分页	上一页:下一页的情况)
    		//总数量(表)	
        	int totalCount	= userService.getUserCount(queryUserName,queryUserRole);
    			
    		//总页数支持
    		PageSupport pageSupport = new PageSupport();
    		pageSupport.setCurrentPageNo(currentPageNo);
    		pageSupport.setPageSize(pageSize);
    		pageSupport.setTotalCount(totalCount);
    		
    		int totalPageCount =pageSupport.getTotalPageCount();//总共有几页
    		//(totalCount+pageSize-1/pageSize)取整
    		// pageSupport.getTotalCount()
    		
    		//System.out.println("totalCount ="+totalCount);
    		//System.out.println("pageSize ="+pageSize);
    		//System.out.println("totalPageCount ="+totalPageCount);
    		//控制首页和尾页
    		//如果页面小于 1 就显示第一页的东西
    		if(currentPageNo < 1) {
    			currentPageNo = 1;
    		}else if(currentPageNo > totalPageCount) {//如果页面大于了最后一页就显示最后一页
    			currentPageNo =totalPageCount;
    		}
    		
    		userList = userService.getUserList(queryUserName, queryUserRole, currentPageNo, pageSize);
    		req.setAttribute("userList", userList);
    		
    		RoleServiceImpl roleService = new RoleServiceImpl();
    		List<Role> roleList = roleService.getRoleList();
    		req.setAttribute("roleList", roleList);
    		req.setAttribute("totalCount", totalCount); 
    		req.setAttribute("currentPageNo", currentPageNo);
    		req.setAttribute("totalPageCount", totalPageCount);
    		req.setAttribute("queryUserName", queryUserName);
    		req.setAttribute("queryUserRole", queryUserRole);
    		
    		//返回前端
    		try {
    			req.getRequestDispatcher("userlist.jsp").forward(req, resp);
    		} catch (ServletException e) {
    			// TODO 自动生成的 catch 块
    			e.printStackTrace();
    		} catch (IOException e) {
    			// TODO 自动生成的 catch 块
    			e.printStackTrace();
    		}
    
    	}
    
  • 相关阅读:
    HTML5智能表单
    HTML表单
    CSS文档统筹
    二分查找/折半查找(C++实现)
    实验6:Problem H: 字符串类(II)
    实验6:Problem G: 字符串类(I)
    实验6:Problem F: 时间和日期类(IV)
    实验6:Problem E: 时间和日期类(III)
    实验6:Problem D: 时间和日期类(II)
    实验6:Problem C: 时间和日期类(I)
  • 原文地址:https://www.cnblogs.com/xiaxiaopi/p/14429501.html
Copyright © 2011-2022 走看看