PageInfo
package com. zhongruan. bean;
import java. util. List;
public class PageInfo < T> {
private List< T> list;
private int totalPage;
private int size;
private int totalCount;
private int currentPage;
public List< T> getList ( ) {
return list;
}
public void setList ( List< T> list) {
this . list = list;
}
public int getTotalPage ( ) {
return totalPage;
}
public void setTotalPage ( int totalPage) {
this . totalPage = totalPage;
}
public int getSize ( ) {
return size;
}
public void setSize ( int size) {
this . size = size;
}
public int getTotalCount ( ) {
return totalCount;
}
public void setTotalCount ( int totalCount) {
this . totalCount = totalCount;
}
public int getCurrentPage ( ) {
return currentPage;
}
public void setCurrentPage ( int currentPage) {
this . currentPage = currentPage;
}
@Override
public String toString ( ) {
return "PageInfo{" +
"list=" + list +
", totalPage=" + totalPage +
", size=" + size +
", totalCount=" + totalCount +
", currentPage=" + currentPage +
'}' ;
}
}
User
package com. zhongruan. bean;
public class User {
public User ( ) {
}
public User ( int id, String username, String password) {
this . id = id;
this . username = username;
this . password = password;
}
public User ( String username, String password) {
this . username = username;
this . password = password;
}
private int id;
private String username;
private String password;
public int getId ( ) {
return id;
}
public void setId ( int id) {
this . id = id;
}
public String getUsername ( ) {
return username;
}
public void setUsername ( String username) {
this . username = username;
}
public String getPassword ( ) {
return password;
}
public void setPassword ( String password) {
this . password = password;
}
@Override
public String toString ( ) {
return "User{" +
"id=" + id +
", username='" + username + '\'' +
", password='" + password + '\'' +
'}' ;
}
}
controller
package com. zhongruan. controller;
import com. zhongruan. bean. PageInfo;
import com. zhongruan. bean. User;
import com. zhongruan. service. IUserService;
import org. springframework. beans. factory. annotation. Autowired;
import org. springframework. stereotype. Controller;
import org. springframework. web. bind. annotation. RequestMapping;
import org. springframework. web. bind. annotation. RequestParam;
import org. springframework. web. servlet. ModelAndView;
import javax. servlet. http. HttpSession;
import java. util. ArrayList;
import java. util. List;
@Controller
@RequestMapping ( "/user" )
public class UserController {
@Autowired
private IUserService userService;
@RequestMapping ( "/login.do" )
public ModelAndView login ( User user, HttpSession session) {
boolean flag = userService. login ( user. getUsername ( ) , user. getPassword ( ) ) ;
ModelAndView modelAndView = new ModelAndView ( ) ;
if ( flag) {
session. setAttribute ( "user" , user) ;
modelAndView. setViewName ( "main" ) ;
} else {
modelAndView. setViewName ( "../failer" ) ;
}
return modelAndView;
}
@RequestMapping ( "/findAll.do" )
public ModelAndView findAll ( @RequestParam ( defaultValue = "1" ) int currentPage, String username, @RequestParam ( defaultValue = "1" ) int type, HttpSession session) {
if ( type== 1 ) {
session. setAttribute ( "searchname" , username) ;
} else {
username= ( String) session. getAttribute ( "searchname" ) ;
}
PageInfo< User> pageInfo= userService. findAll ( currentPage, username) ;
ModelAndView modelAndView = new ModelAndView ( ) ;
modelAndView. addObject ( "pageInfo" , pageInfo) ;
modelAndView. setViewName ( "user-list" ) ;
return modelAndView;
}
@RequestMapping ( "/deleteById.do" )
public String delete ( int id) {
userService. deleteById ( id) ;
return "redirect:findAll.do" ;
}
@RequestMapping ( "/add.do" )
public String add ( User user) {
userService. add ( user) ;
return "redirect:findAll.do" ;
}
@RequestMapping ( "/toUpdate.do" )
public ModelAndView toUpdate ( int id) {
User user = userService. selectUserById ( id) ;
ModelAndView modelAndView = new ModelAndView ( ) ;
modelAndView. setViewName ( "user-update" ) ;
modelAndView. addObject ( "user" , user) ;
return modelAndView;
}
@RequestMapping ( "/update.do" )
public String update ( User user) {
userService. update ( user) ;
return "redirect:findAll.do" ;
}
@RequestMapping ( "/deleteAll.do" )
public String deleteAll ( String userList) {
String[ ] strs= userList. split ( "," ) ;
List< Integer> ids= new ArrayList < > ( ) ;
for ( String s: strs) {
ids. add ( Integer. parseInt ( s) ) ;
}
userService. deleteAll ( ids) ;
return "redirect:findAll.do" ;
}
}
userdao
package com. zhongruan. dao;
import com. zhongruan. bean. User;
import org. apache. ibatis. annotations. Param;
import java. util. List;
public interface UserDao {
User findUserByUserName ( String username) ;
List< User> findAll ( @Param ( "start" ) int start, @Param ( "username" ) String username) ;
void deleteById ( int id) ;
void add ( User user) ;
User selectUserId ( int id) ;
void update ( User user) ;
int getTotalCount ( @Param ( "username" ) String username) ;
void deleteAll ( @Param ( "ids" ) List< Integer> ids) ;
}
userfilter
package com. zhongruan. filter;
import com. zhongruan. bean. User;
import javax. servlet. *;
import javax. servlet. http. HttpServletRequest;
import javax. servlet. http. HttpServletResponse;
import javax. servlet. http. HttpSession;
import java. io. IOException;
public class LoginFilter implements Filter {
@Override
public void init ( FilterConfig filterConfig) throws ServletException {
}
@Override
public void doFilter ( ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
HttpServletRequest request= ( HttpServletRequest) servletRequest;
HttpServletResponse response= ( HttpServletResponse) servletResponse;
HttpSession session= request. getSession ( ) ;
User user= ( User) session. getAttribute ( "user" ) ;
String uri= request. getRequestURI ( ) ;
if ( user== null&& uri. indexOf ( "login.do" ) == - 1 ) {
response. sendRedirect ( request. getContextPath ( ) + "../login.jsp" ) ;
} else {
filterChain. doFilter ( request, response) ;
}
}
@Override
public void destroy ( ) {
}
}
userService接口
package com. zhongruan. service;
import com. zhongruan. bean. PageInfo;
import com. zhongruan. bean. User;
import java. util. List;
public interface IUserService {
boolean login ( String username, String password) ;
PageInfo< User> findAll ( int currentPage, String username) ;
void deleteById ( int id) ;
void add ( User user) ;
User selectUserById ( int id) ;
void update ( User user) ;
void deleteAll ( List< Integer> ids) ;
}
userService实现类
package com. zhongruan. service. impl;
import com. zhongruan. bean. PageInfo;
import com. zhongruan. bean. User;
import com. zhongruan. dao. UserDao;
import com. zhongruan. service. IUserService;
import org. springframework. beans. factory. annotation. Autowired;
import org. springframework. stereotype. Service;
import java. util. List;
@Service
public class UserService implements IUserService {
@Autowired
private UserDao userDao;
@Override
public boolean login ( String username, String password) {
User user = userDao. findUserByUserName ( username) ;
if ( user!= null && user. getPassword ( ) . equals ( password) ) {
return true ;
} else {
return false ;
}
}
@Override
public PageInfo< User> findAll ( int currentPage, String username) {
PageInfo< User> pageInfo = new PageInfo < > ( ) ;
pageInfo. setSize ( 5 ) ;
int tc= userDao. getTotalCount ( username) ;
pageInfo. setTotalCount ( tc) ;
int tp= ( int ) Math. ceil ( tc/ 5.0 ) ;
pageInfo. setTotalPage ( tp) ;
if ( currentPage< 1 ) {
pageInfo. setCurrentPage ( 1 ) ;
} else if ( currentPage> tp) {
pageInfo. setCurrentPage ( tp) ;
} else {
pageInfo. setCurrentPage ( currentPage) ;
}
int start= ( pageInfo. getCurrentPage ( ) - 1 ) * 5 ;
List< User> userList = userDao. findAll ( start, username) ;
pageInfo. setList ( userList) ;
return pageInfo;
}
@Override
public void deleteById ( int id) {
userDao. deleteById ( id) ;
}
@Override
public void add ( User user) {
userDao. add ( user) ;
}
@Override
public User selectUserById ( int id) {
return userDao. selectUserId ( id) ;
}
@Override
public void update ( User user) {
userDao. update ( user) ;
}
@Override
public void deleteAll ( List< Integer> ids) {
userDao. deleteAll ( ids) ;
}
}
usermapper
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
< mapper namespace = " com.zhongruan.dao.UserDao" >
< select id = " findUserByUserName" parameterType = " string" resultType = " com.zhongruan.bean.User" >
select * from tb_user where username=#{username}
</ select>
< select id = " findAll" resultType = " com.zhongruan.bean.User" >
select * from tb_user
< if test = " username!=null and username!=' ' " >
where username LIKE concat("%",#{username},"%")
</ if>
limit #{start},5
</ select>
< delete id = " deleteById" parameterType = " int" >
delete from tb_user where id = #{id}
</ delete>
< insert id = " add" parameterType = " user" >
insert into tb_user(username,password) values(#{username},#{password})
</ insert>
< select id = " selectUserId" parameterType = " int" resultType = " com.zhongruan.bean.User" >
select * from tb_user where id=#{id}
</ select>
< update id = " update" parameterType = " user" >
update tb_user set username=#{username}, password=#{password} where id=#{id}
</ update>
< select id = " getTotalCount" resultType = " int" >
select count(*) from tb_user
< if test = " username!=null and username!=' ' " >
where username LIKE concat("%",#{username},"%")
</ if>
</ select>
< delete id = " deleteAll" parameterType = " list" >
delete from tb_user where id in
< foreach collection = " ids" item = " id" open = " (" close = " )" separator = " ," >
#{id}
</ foreach>
</ delete>
</ mapper>
user-list.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8" isELIgnored="false"%>
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<!-- 页面meta -->
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<title>数据 - AdminLTE2定制版</title>
<meta name="description" content="AdminLTE2定制版">
<meta name="keywords" content="AdminLTE2定制版">
<!-- Tell the browser to be responsive to screen width -->
<meta
content="width=device-width,initial-scale=1,maximum-scale=1,user-scalable=no"
name="viewport">
<link rel="stylesheet"
href="${pageContext.request.contextPath}/plugins/bootstrap/css/bootstrap.min.css">
<link rel="stylesheet"
href="${pageContext.request.contextPath}/plugins/font-awesome/css/font-awesome.min.css">
<link rel="stylesheet"
href="${pageContext.request.contextPath}/plugins/ionicons/css/ionicons.min.css">
<link rel="stylesheet"
href="${pageContext.request.contextPath}/plugins/iCheck/square/blue.css">
<link rel="stylesheet"
href="${pageContext.request.contextPath}/plugins/morris/morris.css">
<link rel="stylesheet"
href="${pageContext.request.contextPath}/plugins/jvectormap/jquery-jvectormap-1.2.2.css">
<link rel="stylesheet"
href="${pageContext.request.contextPath}/plugins/datepicker/datepicker3.css">
<link rel="stylesheet"
href="${pageContext.request.contextPath}/plugins/daterangepicker/daterangepicker.css">
<link rel="stylesheet"
href="${pageContext.request.contextPath}/plugins/bootstrap-wysihtml5/bootstrap3-wysihtml5.min.css">
<link rel="stylesheet"
href="${pageContext.request.contextPath}/plugins/datatables/dataTables.bootstrap.css">
<link rel="stylesheet"
href="${pageContext.request.contextPath}/plugins/treeTable/jquery.treetable.css">
<link rel="stylesheet"
href="${pageContext.request.contextPath}/plugins/treeTable/jquery.treetable.theme.default.css">
<link rel="stylesheet"
href="${pageContext.request.contextPath}/plugins/select2/select2.css">
<link rel="stylesheet"
href="${pageContext.request.contextPath}/plugins/colorpicker/bootstrap-colorpicker.min.css">
<link rel="stylesheet"
href="${pageContext.request.contextPath}/plugins/bootstrap-markdown/css/bootstrap-markdown.min.css">
<link rel="stylesheet"
href="${pageContext.request.contextPath}/plugins/adminLTE/css/AdminLTE.css">
<link rel="stylesheet"
href="${pageContext.request.contextPath}/plugins/adminLTE/css/skins/_all-skins.min.css">
<link rel="stylesheet"
href="${pageContext.request.contextPath}/css/style.css">
<link rel="stylesheet"
href="${pageContext.request.contextPath}/plugins/ionslider/ion.rangeSlider.css">
<link rel="stylesheet"
href="${pageContext.request.contextPath}/plugins/ionslider/ion.rangeSlider.skinNice.css">
<link rel="stylesheet"
href="${pageContext.request.contextPath}/plugins/bootstrap-slider/slider.css">
</head>
<body class="hold-transition skin-blue sidebar-mini">
<div class="wrapper">
<!-- 页面头部 -->
<jsp:include page="header.jsp"></jsp:include>
<!-- 页面头部 /-->
<!-- 导航侧栏 -->
<jsp:include page="aside.jsp"></jsp:include>
<!-- 导航侧栏 /-->
<!-- 内容区域 -->
<div class="content-wrapper">
<!-- 内容头部 -->
<section class="content-header">
<h1>
用户管理 <small>全部用户</small>
</h1>
<ol class="breadcrumb">
<li><a href="#"><i
class="fa fa-dashboard"></i> 首页</a></li>
<li><a
href="#">用户管理</a></li>
<li class="active">全部用户</li>
</ol>
</section>
<!-- 内容头部 /-->
<!-- 正文区域 -->
<section class="content"> <!-- .box-body -->
<div class="box box-primary">
<div class="box-header with-border">
<h3 class="box-title">列表</h3>
</div>
<div class="box-body">
<!-- 数据表格 -->
<div class="table-box">
<!--工具栏-->
<div class="pull-left">
<div class="form-group form-inline">
<div class="btn-group">
<button type="button" class="btn btn-default" title="新建"
οnclick="location.href='${pageContext.request.contextPath}/pages/user-add.jsp'" >
<i class="fa fa-file-o"></i> 新建
</button>
<button type="button" class="btn btn-default" title="删除" οnclick="deleteAll()">
<i class="fa fa-refresh"></i> 删除
</button>
</div>
</div>
</div>
<form action="${pageContext.request.contextPath}/user/findAll.do?type=1"
method="post">
<div class="col-md-4 data1">
<input type="text" class="form-control" name="username"
placeholder="username" value="">
</div>
<button type="submit" class="btn bg-maroon">搜索</button>
</form>
<!--工具栏/-->
<!--数据列表-->
<table id="dataList"
class="table table-bordered table-striped table-hover dataTable">
<thead>
<tr>
<th class="" style="padding-right: 0px"><input
id="selall" type="checkbox" class="icheckbox_square-blue">
</th>
<th class="sorting_asc">ID</th>
<th class="sorting_desc">用户名</th>
<th class="sorting_asc sorting_asc_disabled">密码</th>
<th class="text-center">操作</th>
</tr>
</thead>
<tbody>
<c:forEach items="${pageInfo.list}" var="user">
<tr>
<td><input id="ids" name="ids" type="checkbox" value="${user.id}"></td>
<td>${user.id}</td>
<td>${user.username}</td>
<td>${user.password}</td>
<td class="text-center">
<a href="${pageContext.request.contextPath}/user/toUpdate.do?id=${user.id}" class="btn bg-olive btn-xs">更新</a>
<a href="${pageContext.request.contextPath}/user/deleteById.do?id=${user.id}" class="btn bg-olive btn-xs">删除</a>
<a href="#" class="btn bg-olive btn-xs">添加角色</a>
</td>
</tr>
</c:forEach>
</tbody>
<!--
<tfoot>
<tr>
<th>Rendering engine</th>
<th>Browser</th>
<th>Platform(s)</th>
<th>Engine version</th>
<th>CSS grade</th>
</tr>
</tfoot>-->
</table>
<!--数据列表/-->
</div>
<!-- 数据表格 /-->
</div>
<!-- /.box-body -->
<div class="box-tools pull-right">
<ul class="pagination">
<li><a href="${pageContext.request.contextPath}/user/findAll.do" aria-label="Previous">首页</a></li>
<li><a href="${pageContext.request.contextPath}/user/findAll.do?currentPage=${pageInfo.currentPage-1}">上一页</a></li>
<c:forEach begin="1" end="${pageInfo.totalPage}" var="pageNum">
<li><a href="${pageContext.request.contextPath}/user/findAll.do?currentPage=${pageNum}">${pageNum}</a></li>
</c:forEach>
<li><a href="${pageContext.request.contextPath}/user/findAll.do?currentPage=${pageInfo.currentPage+1}">下一页</a></li>
<li><a href="${pageContext.request.contextPath}/user/findAll.do?currentPage=${pageInfo.totalPage}" aria-label="Next">尾页</a></li>
</ul>
</div>
</div>
<!-- /.box-footer-->
</div>
</section>
<!-- 正文区域 /-->
</div>
<!-- @@close -->
<!-- 内容区域 /-->
<!-- 底部导航 -->
<footer class="main-footer">
<div class="pull-right hidden-xs">
<b>Version</b> 1.0.8
</div>
<strong>Copyright © 2014-2017 <a
href="http://www.itcast.cn">研究院研发部</a>.
</strong> All rights reserved. </footer>
<!-- 底部导航 /-->
</div>
<script src="../plugins/jQuery/jquery-2.2.3.min.js"></script>
<script src="../plugins/jQueryUI/jquery-ui.min.js"></script>
<script>
$.widget.bridge('uibutton', $.ui.button);
</script>
<script src="../plugins/bootstrap/js/bootstrap.min.js"></script>
<script src="../plugins/raphael/raphael-min.js"></script>
<script src="../plugins/morris/morris.min.js"></script>
<script src="../plugins/sparkline/jquery.sparkline.min.js"></script>
<script src="../plugins/jvectormap/jquery-jvectormap-1.2.2.min.js"></script>
<script src="../plugins/jvectormap/jquery-jvectormap-world-mill-en.js"></script>
<script src="../plugins/knob/jquery.knob.js"></script>
<script src="../plugins/daterangepicker/moment.min.js"></script>
<script src="../plugins/daterangepicker/daterangepicker.js"></script>
<script src="../plugins/daterangepicker/daterangepicker.zh-CN.js"></script>
<script src="../plugins/datepicker/bootstrap-datepicker.js"></script>
<script
src="../plugins/datepicker/locales/bootstrap-datepicker.zh-CN.js"></script>
<script
src="../plugins/bootstrap-wysihtml5/bootstrap3-wysihtml5.all.min.js"></script>
<script src="../plugins/slimScroll/jquery.slimscroll.min.js"></script>
<script src="../plugins/fastclick/fastclick.js"></script>
<script src="../plugins/iCheck/icheck.min.js"></script>
<script src="../plugins/adminLTE/js/app.min.js"></script>
<script src="../plugins/treeTable/jquery.treetable.js"></script>
<script src="../plugins/select2/select2.full.min.js"></script>
<script src="../plugins/colorpicker/bootstrap-colorpicker.min.js"></script>
<script
src="../plugins/bootstrap-wysihtml5/bootstrap-wysihtml5.zh-CN.js"></script>
<script src="../plugins/bootstrap-markdown/js/bootstrap-markdown.js"></script>
<script
src="../plugins/bootstrap-markdown/locale/bootstrap-markdown.zh.js"></script>
<script src="../plugins/bootstrap-markdown/js/markdown.js"></script>
<script src="../plugins/bootstrap-markdown/js/to-markdown.js"></script>
<script src="../plugins/ckeditor/ckeditor.js"></script>
<script src="../plugins/input-mask/jquery.inputmask.js"></script>
<script
src="../plugins/input-mask/jquery.inputmask.date.extensions.js"></script>
<script src="../plugins/input-mask/jquery.inputmask.extensions.js"></script>
<script src="../plugins/datatables/jquery.dataTables.min.js"></script>
<script src="../plugins/datatables/dataTables.bootstrap.min.js"></script>
<script src="../plugins/chartjs/Chart.min.js"></script>
<script src="../plugins/flot/jquery.flot.min.js"></script>
<script src="../plugins/flot/jquery.flot.resize.min.js"></script>
<script src="../plugins/flot/jquery.flot.pie.min.js"></script>
<script src="../plugins/flot/jquery.flot.categories.min.js"></script>
<script src="../plugins/ionslider/ion.rangeSlider.min.js"></script>
<script src="../plugins/bootstrap-slider/bootstrap-slider.js"></script>
<script>
$(document).ready(function() {
// 选择框
$(".select2").select2();
// WYSIHTML5编辑器
$(".textarea").wysihtml5({
locale : 'zh-CN'
});
});
// 设置激活菜单
function setSidebarActive(tagUri) {
var liObj = $("#" + tagUri);
if (liObj.length > 0) {
liObj.parent().parent().addClass("active");
liObj.addClass("active");
}
}
$(document)
.ready(
function() {
// 激活导航位置
setSidebarActive("admin-datalist");
// 列表按钮
$("#dataList td input[type='checkbox']")
.iCheck(
{
checkboxClass : 'icheckbox_square-blue',
increaseArea : '20%'
});
// 全选操作
$("#selall")
.click(
function() {
var clicks = $(this).is(
':checked');
if (!clicks) {
$(
"#dataList td input[type='checkbox']")
.iCheck(
"uncheck");
} else {
$(
"#dataList td input[type='checkbox']")
.iCheck("check");
}
$(this).data("clicks",
!clicks);
});
});
function deleteAll() {
var checkedNum=$("input[name='ids']:checked").length
if (checkedNum==0){
alert("请至少选择一个进行删除!!!");
return;
}
if(confirm("确认要删除这些用户吗?")){
var userList=new Array();
$("input[name='ids']:checked").each(
function(){
userList.push($(this).val())
}
);
// alert(userList);
$.ajax({
type:"post",
url:"${pageContext.request.contextPath}/user/deleteAll.do",
data:{userList:userList.toString()},
success:function(){
alert("删除成功!");
location.reload();
},
error:function () {
alert("删除失败!");
}
});
}
}
</script>
</body>
</html>