JavaWeb 案例——访问权限控制

来源:互联网 发布:java 通过ip获取地址 编辑:程序博客网 时间:2024/06/05 17:19


一、功能介绍

       每个网站都涉及到访问权限的控制。每个站点资源都需要被管理起来,用户只有具有访问某个资源的特定权限,才能够访问,否则拒绝访问。

二、项目分析

       我们要实现网站的访问权限控制,就应该从 URI 入手,站点的每个资源都用唯一的 URI 描述,我们为想要管理起来的 URI 增加上权限属性,当用户访问资源时我们要先检查用户是否具有权限。这个项目我采用过滤器技术实现权限拦截,下一个项目我将采用注解+动态代理实现权限的拦截。

        我们需要编写一个过滤器,拦截用户的每个访问请求。再依据 URI 判断是否需要权限。这个是比较简单的,关键就是我们如何将这种权限关系描述出来,如果使用过滤器技术,我们就不得不使用数据库来将每个权限、资源等保存起来。一个资源需要一个权限,一个权限对应多个角色,一个角色可以拥有多个权限,一个用户拥有多个角色,一个角色又可以被多个用户引用。所以资源与权限是一对一关系,权限与角色是多对多关系,角色与用户也是多对多关系。因此在数据库我们需要6张表来保存关系。

 


  1. 一、对象关系  资源、权限、角色、用户  
  2.   
  3.     资源      ------>      权限      一对多  
  4.     权限      <----->       角色      多对多  
  5.     角色      <----->       用户      多对多  
  6.       
  7.     资源:  
  8.         String id   编号  
  9.         String uri  资源uri  
  10.         String description  描述  
  11.         Permission permission   该资源需要的权限  
  12.           
  13.     权限:  
  14.         String id   编号  
  15.         String name 权限名  
  16.         String description 权限描述  
  17.           
  18.     角色:  
  19.         String id   编号  
  20.         String name 角色名  
  21.         String description 角色描述  
  22.         Set<Permission> set 该角色具有的权限  
  23.           
  24.     用户:  
  25.         String id   编号  
  26.         String username 用户名  
  27.         String password 密码  
  28.         Set<Role> set 该用户都具有的角色  
  29.           
  30. 二、数据库实现  
  31.   
  32. create database if not exists sys_permission;  
  33. use sys_permission;  
  34.   
  35. create table if not exists resource(  
  36.     id varchar(40) primary key,  
  37.     uri varchar(255) unique,  
  38.     description varchar(255),  
  39.     permission_id varchar(40),  
  40.     constraint rPermission_id_FK foreign key(permission_id) references permission(id)  
  41. );  
  42.   
  43. create table if not exists permission(  
  44.     id varchar(40) primary key,  
  45.     name varchar(40) unique,  
  46.     description varchar(255)  
  47. );  
  48.   
  49. create table if not exists role(  
  50.     id varchar(40) primary key,  
  51.     name varchar(40) unique,  
  52.     description varchar(255)  
  53. );  
  54.   
  55. create table if not exists user(  
  56.     id varchar(40) primary key,  
  57.     username varchar(40) not null unique,  
  58.     password varchar(40) not null  
  59. );  
  60.   
  61. create table if not exists permission_role(  
  62.     permission_id varchar(40) not null,  
  63.     role_id varchar(40) not null,  
  64.     constraint permission_id_FK foreign key(permission_id) references permission(id),  
  65.     constraint role_id_FK foreign key(role_id) references role(id),  
  66.     constraint primary key(permission_id,role_id)  
  67. );  
  68.   
  69. create table if not exists user_role(  
  70.     user_id varchar(40) not null,  
  71.     role_id varchar(40) not null,  
  72.     constraint user_id_FK foreign key(user_id) references user(id),  
  73.     constraint uRole_id_FK foreign key(role_id) references role(id),  
  74.     constraint primary key(user_id,role_id)  
  75. );  


三、项目新技术

       1、采用 sitemesh 框架为每个页面动态增加模版。原理:sitemesh 实际上也是一个过滤器,当用户访问一个页面时,sitemesh 将请求拦截下来,在服务器以后使用 response 写出数据的时候,实际上是写到了代理对象的缓存中,当数据读写完,sitemesh 再对数据进行包装之后再打给浏览器。

         2、采用 windows 命令初始化数据库。我们将数据库的初始化信息写在文件中,当在浏览器访问初始化 Servlet 时,将使用 windows 命令将文件中的数据导入到 MySQL 



  1. package cn.dk.domain;  
  2.   
  3. public class Permission {  
  4.   
  5.     private String id;  
  6.     private String name;  
  7.     private String description;  
  8.   
  9.     public String getId() {  
  10.         return id;  
  11.     }  
  12.   
  13.     public void setId(String id) {  
  14.         this.id = id;  
  15.     }  
  16.   
  17.     public String getName() {  
  18.         return name;  
  19.     }  
  20.   
  21.     public void setName(String name) {  
  22.         this.name = name;  
  23.     }  
  24.   
  25.     public String getDescription() {  
  26.         return description;  
  27.     }  
  28.   
  29.     public void setDescription(String description) {  
  30.         this.description = description;  
  31.     }  
  32.   
  33.     @Override  
  34.     public int hashCode() {  
  35.         final int prime = 31;  
  36.         int result = 1;  
  37.         result = prime * result + ((id == null) ? 0 : id.hashCode());  
  38.         return result;  
  39.     }  
  40.   
  41.     @Override  
  42.     public boolean equals(Object obj) {  
  43.         if (this == obj)  
  44.             return true;  
  45.         if (obj == null)  
  46.             return false;  
  47.         if (getClass() != obj.getClass())  
  48.             return false;  
  49.         final Permission other = (Permission) obj;  
  50.         if (id == null) {  
  51.             if (other.id != null)  
  52.                 return false;  
  53.         } else if (!id.equals(other.id))  
  54.             return false;  
  55.         return true;  
  56.     }  
  57.   
  58. }  

[java] view plain copy


 print?

  1. package cn.dk.domain;  
  2.   
  3. public class Resource {  
  4.   
  5.     private String id;  
  6.     private String uri;  
  7.     private String description;  
  8.     private Permission permission;  
  9.   
  10.     public String getId() {  
  11.         return id;  
  12.     }  
  13.   
  14.     public void setId(String id) {  
  15.         this.id = id;  
  16.     }  
  17.   
  18.     public String getUri() {  
  19.         return uri;  
  20.     }  
  21.   
  22.     public void setUri(String uri) {  
  23.         this.uri = uri;  
  24.     }  
  25.   
  26.     public String getDescription() {  
  27.         return description;  
  28.     }  
  29.   
  30.     public void setDescription(String description) {  
  31.         this.description = description;  
  32.     }  
  33.   
  34.     public Permission getPermission() {  
  35.         return permission;  
  36.     }  
  37.   
  38.     public void setPermission(Permission permission) {  
  39.         this.permission = permission;  
  40.     }  
  41. }  

[java] view plain copy


 print?

  1. package cn.dk.domain;  
  2.   
  3. import java.util.HashSet;  
  4. import java.util.Set;  
  5.   
  6. public class Role {  
  7.   
  8.     public Role() {  
  9.         super();  
  10.         this.permissions = new HashSet<Permission>();  
  11.     }  
  12.   
  13.     private String id;  
  14.     private String name;  
  15.     private String description;  
  16.     private Set<Permission> permissions;  
  17.   
  18.     public String getId() {  
  19.         return id;  
  20.     }  
  21.   
  22.     public void setId(String id) {  
  23.         this.id = id;  
  24.     }  
  25.   
  26.     public String getName() {  
  27.         return name;  
  28.     }  
  29.   
  30.     public void setName(String name) {  
  31.         this.name = name;  
  32.     }  
  33.   
  34.     public String getDescription() {  
  35.         return description;  
  36.     }  
  37.   
  38.     public void setDescription(String description) {  
  39.         this.description = description;  
  40.     }  
  41.   
  42.     public Set<Permission> getPermissions() {  
  43.         return permissions;  
  44.     }  
  45.   
  46.     public void setPermissions(Set<Permission> permissions) {  
  47.         this.permissions = permissions;  
  48.     }  
  49. }  

[java] view plain copy


 print?

  1. package cn.dk.domain;  
  2.   
  3. import java.util.HashSet;  
  4. import java.util.Set;  
  5.   
  6. public class User {  
  7.       
  8.     public User(){  
  9.         super();  
  10.         this.roles = new HashSet<Role>();  
  11.     }  
  12.   
  13.     private String id;  
  14.     private String username;  
  15.     private String password;  
  16.     private Set<Role> roles;  
  17.   
  18.     public String getId() {  
  19.         return id;  
  20.     }  
  21.   
  22.     public void setId(String id) {  
  23.         this.id = id;  
  24.     }  
  25.   
  26.     public String getUsername() {  
  27.         return username;  
  28.     }  
  29.   
  30.     public void setUsername(String username) {  
  31.         this.username = username;  
  32.     }  
  33.   
  34.     public String getPassword() {  
  35.         return password;  
  36.     }  
  37.   
  38.     public void setPassword(String password) {  
  39.         this.password = password;  
  40.     }  
  41.   
  42.     public Set<Role> getRoles() {  
  43.         return roles;  
  44.     }  
  45.   
  46.     public void setRoles(Set<Role> roles) {  
  47.         this.roles = roles;  
  48.     }  
  49. }  

[java] view plain copy


 print?

  1. package cn.dk.dao;  
  2.   
  3. import java.util.List;  
  4.   
  5. import cn.dk.domain.Permission;  
  6.   
  7. public interface IPermissionDao {  
  8.   
  9.     // 插入新权限  
  10.     void insertPermission(Permission permission);  
  11.   
  12.     // 删除权限  
  13.     void deletePermission(String id);  
  14.   
  15.     // 根据id查找权限  
  16.     Permission findPermissionById(String id);  
  17.   
  18.     // 查找所有权限  
  19.     @SuppressWarnings("unchecked")  
  20.     List<Permission> findAllPermission();  
  21.   
  22. }  

[java] view plain copy


 print?

  1. package cn.dk.dao;  
  2.   
  3. import java.util.List;  
  4.   
  5. import cn.dk.domain.Resource;  
  6.   
  7. public interface IResourceDao {  
  8.   
  9.     // 增加资源  
  10.     void insertResource(Resource resource);  
  11.   
  12.     // 修改资源  
  13.     void updateResource(Resource resource);  
  14.   
  15.     // 查找所有资源  
  16.     @SuppressWarnings("unchecked")  
  17.     List<Resource> findAllResource();  
  18.   
  19.     // 根据uri查找资源  
  20.     Resource findResourceByURI(String uri);  
  21.   
  22.     // 根据id查找资源  
  23.     Resource findResourceById(String id);  
  24.   
  25.     // 删除资源  
  26.     void deleteResource(String id);  
  27.   
  28. }  

[java] view plain copy


 print?

  1. package cn.dk.dao;  
  2.   
  3. import java.util.List;  
  4. import cn.dk.domain.Role;  
  5.   
  6. public interface IRoleDao {  
  7.   
  8.     // 新增角色  
  9.     void insertRole(Role role);  
  10.   
  11.     // 更新角色  
  12.     void updateRole(Role role);  
  13.   
  14.     // 删除角色  
  15.     void deleteRole(String id);  
  16.   
  17.     // 根据id查找角色  
  18.     @SuppressWarnings("unchecked")  
  19.     Role findRoleById(String id);  
  20.   
  21.     // 查找所有角色  
  22.     @SuppressWarnings("unchecked")  
  23.     List<Role> fineAllRole();  
  24.   
  25. }  

[java] view plain copy


 print?

  1. package cn.dk.dao;  
  2.   
  3. import java.util.List;  
  4. import cn.dk.domain.User;  
  5.   
  6. public interface IUserDao {  
  7.   
  8.     // 插入用户  
  9.     void insertUser(User user);  
  10.   
  11.     // 更新用户  
  12.     void updateUser(User user);  
  13.   
  14.     // 删除用户  
  15.     void deleteUser(String id);  
  16.   
  17.     // 根据id查找用户  
  18.     @SuppressWarnings("unchecked")  
  19.     User findUserById(String id);  
  20.   
  21.     // 查找所有用户  
  22.     @SuppressWarnings("unchecked")  
  23.     List<User> findAllUser();  
  24.       
  25.     User login(String username, String password);  
  26. }  

[java] view plain copy


 print?

  1. package cn.dk.dao.impl;  
  2.   
  3. import java.sql.SQLException;  
  4. import java.util.List;  
  5. import org.apache.commons.dbutils.QueryRunner;  
  6. import org.apache.commons.dbutils.handlers.BeanHandler;  
  7. import org.apache.commons.dbutils.handlers.BeanListHandler;  
  8. import cn.dk.dao.IPermissionDao;  
  9. import cn.dk.domain.Permission;  
  10. import cn.dk.utils.DBUtils;  
  11.   
  12. public class PermissionDaoImpl implements IPermissionDao {  
  13.   
  14.     // 插入新权限  
  15.     public void insertPermission(Permission permission) {  
  16.         QueryRunner runner = new QueryRunner(DBUtils.getDataSource());  
  17.         String sql = "insert into permission (id,name,description) values(?,?,?)";  
  18.         Object[] params = { permission.getId(), permission.getName(),  
  19.                 permission.getDescription() };  
  20.         try {  
  21.             runner.update(sql, params);  
  22.         } catch (SQLException e) {  
  23.             throw new RuntimeException(e);  
  24.         }  
  25.     }  
  26.   
  27.     // 删除权限  
  28.     public void deletePermission(String id) {  
  29.         QueryRunner runer = new QueryRunner(DBUtils.getDataSource());  
  30.         String sql = "update resource set permission_id=null where permission_id=?";  
  31.         try {  
  32.             runer.update(sql, id);  
  33.             sql = "delete from permission where id=?";  
  34.             runer.update(sql, id);  
  35.         } catch (SQLException e) {  
  36.             throw new RuntimeException(e);  
  37.         }  
  38.     }  
  39.   
  40.     // 根据id查找权限  
  41.     public Permission findPermissionById(String id) {  
  42.         QueryRunner runer = new QueryRunner(DBUtils.getDataSource());  
  43.         String sql = "select id,name,description from permission where id=?";  
  44.         Object[] params = { id };  
  45.         try {  
  46.             return (Permission) runer.query(sql, new BeanHandler(  
  47.                     Permission.class), params);  
  48.         } catch (SQLException e) {  
  49.             throw new RuntimeException(e);  
  50.         }  
  51.     }  
  52.   
  53.     // 查找所有权限  
  54.     @SuppressWarnings("unchecked")  
  55.     public List<Permission> findAllPermission() {  
  56.         List<Permission> list = null;  
  57.         QueryRunner runer = new QueryRunner(DBUtils.getDataSource());  
  58.         String sql = "select id,name,description from permission";  
  59.         try {  
  60.             list = (List<Permission>) runer.query(sql, new BeanListHandler(  
  61.                     Permission.class));  
  62.         } catch (SQLException e) {  
  63.             throw new RuntimeException(e);  
  64.         }  
  65.         return list;  
  66.     }  
  67. }  

[java] view plain copy


 print?

  1. package cn.dk.dao.impl;  
  2.   
  3. import java.sql.SQLException;  
  4. import java.util.List;  
  5. import org.apache.commons.dbutils.QueryRunner;  
  6. import org.apache.commons.dbutils.handlers.BeanHandler;  
  7. import org.apache.commons.dbutils.handlers.BeanListHandler;  
  8. import cn.dk.dao.IResourceDao;  
  9. import cn.dk.domain.Permission;  
  10. import cn.dk.domain.Resource;  
  11. import cn.dk.utils.DBUtils;  
  12.   
  13. public class ResourceDaoImpl implements IResourceDao {  
  14.   
  15.     // 增加资源  
  16.     public void insertResource(Resource resource) {  
  17.         QueryRunner runner = new QueryRunner(DBUtils.getDataSource());  
  18.         String sql = "insert into resource (id,uri,description,permission_id) values(?,?,?,?)";  
  19.         Object[] params = { resource.getId(), resource.getUri(),  
  20.                 resource.getDescription(), resource.getPermission().getId() };  
  21.         try {  
  22.             runner.update(sql, params);  
  23.         } catch (SQLException e) {  
  24.             throw new RuntimeException(e);  
  25.         }  
  26.     }  
  27.   
  28.     // 修改资源  
  29.     public void updateResource(Resource resource) {  
  30.         QueryRunner runner = new QueryRunner(DBUtils.getDataSource());  
  31.         String sql = "update resource set uri=?,description=?,permission_id=? where id=?";  
  32.         Object[] params = { resource.getUri(), resource.getDescription(),  
  33.                 resource.getPermission().getId(), resource.getId() };  
  34.         try {  
  35.             runner.update(sql, params);  
  36.         } catch (SQLException e) {  
  37.             throw new RuntimeException(e);  
  38.         }  
  39.     }  
  40.   
  41.     // 查找所有资源  
  42.     @SuppressWarnings("unchecked")  
  43.     public List<Resource> findAllResource() {  
  44.         List<Resource> list = null;  
  45.         QueryRunner runner = new QueryRunner(DBUtils.getDataSource());  
  46.         String sql = "select id,uri,description from resource";  
  47.         try {  
  48.             list = (List<Resource>) runner.query(sql, new BeanListHandler(  
  49.                     Resource.class));  
  50.             for (Resource resource : list) {  
  51.                 sql = "select p.id,p.name,p.description from permission p,resource r where r.permission_id=p.id and r.id=?";  
  52.                 Object[] params = { resource.getId() };  
  53.                 Permission permission = (Permission) runner.query(sql,  
  54.                         new BeanHandler(Permission.class), params);  
  55.                 resource.setPermission(permission);  
  56.             }  
  57.         } catch (SQLException e) {  
  58.             throw new RuntimeException(e);  
  59.         }  
  60.         return list;  
  61.     }  
  62.   
  63.     // 根据uri查找资源  
  64.     public Resource findResourceByURI(String uri) {  
  65.         QueryRunner runner = new QueryRunner(DBUtils.getDataSource());  
  66.         String sql = "select id,uri,description from resource where uri=?";  
  67.         Object[] params = { uri };  
  68.         try {  
  69.             Resource resource = (Resource) runner.query(sql, new BeanHandler(  
  70.                     Resource.class), params);  
  71.             if (resource == null)  
  72.                 return null;  
  73.             sql = "select p.id,p.name,p.description from permission p,resource r where r.permission_id=p.id and r.id=?";  
  74.             params = new Object[] { resource.getId() };  
  75.             Permission permission = (Permission) runner.query(sql,  
  76.                     new BeanHandler(Permission.class), params);  
  77.             resource.setPermission(permission);  
  78.             return resource;  
  79.         } catch (SQLException e) {  
  80.             throw new RuntimeException(e);  
  81.         }  
  82.     }  
  83.   
  84.     // 根据id查找资源  
  85.     public Resource findResourceById(String id) {  
  86.         QueryRunner runner = new QueryRunner(DBUtils.getDataSource());  
  87.         String sql = "select id,uri,description from resource where id=?";  
  88.         Object[] params = { id };  
  89.         try {  
  90.             Resource resource = (Resource) runner.query(sql, new BeanHandler(  
  91.                     Resource.class), params);  
  92.             sql = "select p.id,p.name,p.description from permission p,resource r where r.permission_id=p.id and r.id=?";  
  93.             params = new Object[] { resource.getId() };  
  94.             Permission permission = (Permission) runner.query(sql,  
  95.                     new BeanHandler(Permission.class), params);  
  96.             resource.setPermission(permission);  
  97.             return resource;  
  98.         } catch (SQLException e) {  
  99.             throw new RuntimeException(e);  
  100.         }  
  101.     }  
  102.   
  103.     // 删除资源  
  104.     public void deleteResource(String id) {  
  105.         QueryRunner runner = new QueryRunner(DBUtils.getDataSource());  
  106.         String sql = "delete from resource where id=?";  
  107.         Object[] params = { id };  
  108.         try {  
  109.             runner.update(sql, params);  
  110.         } catch (SQLException e) {  
  111.             throw new RuntimeException(e);  
  112.         }  
  113.     }  
  114. }  

[java] view plain copy


 print?

  1. package cn.dk.dao.impl;  
  2.   
  3. import java.sql.SQLException;  
  4. import java.util.HashSet;  
  5. import java.util.List;  
  6. import java.util.Set;  
  7. import org.apache.commons.dbutils.QueryRunner;  
  8. import org.apache.commons.dbutils.handlers.BeanHandler;  
  9. import org.apache.commons.dbutils.handlers.BeanListHandler;  
  10. import cn.dk.dao.IRoleDao;  
  11. import cn.dk.domain.Permission;  
  12. import cn.dk.domain.Role;  
  13. import cn.dk.utils.DBUtils;  
  14.   
  15. public class RoleDaoImpl implements IRoleDao {  
  16.   
  17.     // 新增角色  
  18.     public void insertRole(Role role) {  
  19.         QueryRunner runner = new QueryRunner(DBUtils.getDataSource());  
  20.         String sql = "insert into role (id,name,description) values(?,?,?)";  
  21.         Object[] params = { role.getId(), role.getName(), role.getDescription() };  
  22.         try {  
  23.             runner.update(sql, params);  
  24.             sql = "insert into permission_role (permission_id,role_id) values(?,?)";  
  25.             Set<Permission> set = role.getPermissions();  
  26.             for (Permission permission : set) {  
  27.                 params = new Object[] { permission.getId(), role.getId() };  
  28.                 runner.update(sql, params);  
  29.             }  
  30.         } catch (SQLException e) {  
  31.             throw new RuntimeException(e);  
  32.         }  
  33.     }  
  34.   
  35.     // 更新角色  
  36.     public void updateRole(Role role) {  
  37.         QueryRunner runner = new QueryRunner(DBUtils.getDataSource());  
  38.         Set<Permission> set = role.getPermissions();  
  39.         String sql = "delete from permission_role where role_id=?";  
  40.         try {  
  41.             runner.update(sql, role.getId());  
  42.             sql = "update role set name=?,description=? where id=?";  
  43.             Object[] params = { role.getName(), role.getDescription(),  
  44.                     role.getId() };  
  45.             runner.update(sql, params);  
  46.             sql = "insert into permission_role (permission_id,role_id) values(?,?)";  
  47.             for (Permission permission : set) {  
  48.                 params = new Object[] { permission.getId(), role.getId() };  
  49.                 runner.update(sql, params);  
  50.             }  
  51.         } catch (SQLException e) {  
  52.             throw new RuntimeException(e);  
  53.         }  
  54.     }  
  55.   
  56.     // 删除角色  
  57.     public void deleteRole(String id) {  
  58.         QueryRunner runner = new QueryRunner(DBUtils.getDataSource());  
  59.         String sql = "delete from permission_role where role_id=?";  
  60.         try {  
  61.             runner.update(sql, id);  
  62.             sql = "delete from role where id=?";  
  63.             runner.update(sql, id);  
  64.         } catch (SQLException e) {  
  65.             throw new RuntimeException(e);  
  66.         }  
  67.     }  
  68.   
  69.     // 根据id查找角色  
  70.     @SuppressWarnings("unchecked")  
  71.     public Role findRoleById(String id) {  
  72.         QueryRunner runner = new QueryRunner(DBUtils.getDataSource());  
  73.         String sql = "select id,name,description from role where id=?";  
  74.         Object[] params = { id };  
  75.         try {  
  76.             Role role = (Role) runner.query(sql, new BeanHandler(Role.class),  
  77.                     params);  
  78.             sql = "select p.id,p.name,p.description from permission p,permission_role pr where p.id=pr.permission_id and pr.role_id=?";  
  79.             params = new Object[] { id };  
  80.             Set<Permission> set = new HashSet<Permission>();  
  81.             set.addAll((List<Permission>) runner.query(sql,  
  82.                     new BeanListHandler(Permission.class), params));  
  83.             role.setPermissions(set);  
  84.             return role;  
  85.         } catch (SQLException e) {  
  86.             throw new RuntimeException(e);  
  87.         }  
  88.     }  
  89.   
  90.     // 查找所有角色  
  91.     @SuppressWarnings("unchecked")  
  92.     public List<Role> fineAllRole() {  
  93.         List<Role> list = null;  
  94.         QueryRunner runner = new QueryRunner(DBUtils.getDataSource());  
  95.         String sql = "select id,name,description from role";  
  96.         try {  
  97.             list = (List<Role>) runner.query(sql, new BeanListHandler(  
  98.                     Role.class));  
  99.             sql = "select p.id,p.name,p.description from permission p,permission_role pr where p.id=pr.permission_id and pr.role_id=?";  
  100.             for (Role role : list) {  
  101.                 Object[] params = new Object[] { role.getId() };  
  102.                 Set<Permission> set = new HashSet<Permission>();  
  103.                 set.addAll((List<Permission>) runner.query(sql,  
  104.                         new BeanListHandler(Permission.class), params));  
  105.                 role.setPermissions(set);  
  106.             }  
  107.         } catch (SQLException e) {  
  108.             throw new RuntimeException(e);  
  109.         }  
  110.         return list;  
  111.     }  
  112. }  

[java] view plain copy


 print?

  1. package cn.dk.dao.impl;  
  2.   
  3. import java.sql.SQLException;  
  4. import java.util.HashSet;  
  5. import java.util.List;  
  6. import java.util.Set;  
  7. import org.apache.commons.dbutils.QueryRunner;  
  8. import org.apache.commons.dbutils.handlers.BeanHandler;  
  9. import org.apache.commons.dbutils.handlers.BeanListHandler;  
  10. import cn.dk.dao.IUserDao;  
  11. import cn.dk.domain.Role;  
  12. import cn.dk.domain.User;  
  13. import cn.dk.utils.DBUtils;  
  14.   
  15. public class UserDaoImpl implements IUserDao {  
  16.   
  17.     // 插入用户  
  18.     public void insertUser(User user) {  
  19.         QueryRunner runner = new QueryRunner(DBUtils.getDataSource());  
  20.         String sql = "insert into user (id,username,password) values(?,?,?)";  
  21.         Object[] params = { user.getId(), user.getUsername(),  
  22.                 user.getPassword() };  
  23.         try {  
  24.             runner.update(sql, params);  
  25.             Set<Role> roles = user.getRoles();  
  26.             sql = "insert into user_role (user_id,role_id) values(?,?)";  
  27.             for (Role role : roles) {  
  28.                 params = new Object[] { user.getId(), role.getId() };  
  29.                 runner.update(sql, params);  
  30.             }  
  31.         } catch (SQLException e) {  
  32.             throw new RuntimeException(e);  
  33.         }  
  34.     }  
  35.   
  36.     // 更新用户  
  37.     public void updateUser(User user) {  
  38.         QueryRunner runner = new QueryRunner(DBUtils.getDataSource());  
  39.         String sql = "delete from user_role where user_id=?";  
  40.         try {  
  41.             runner.update(sql, user.getId());  
  42.             sql = "update user set username=?,password=? where id=?";  
  43.             Object[] params = { user.getUsername(), user.getPassword(),  
  44.                     user.getId() };  
  45.             runner.update(sql, params);  
  46.             sql = "insert into user_role (user_id,role_id) values(?,?)";  
  47.             Set<Role> roles = user.getRoles();  
  48.             for (Role role : roles) {  
  49.                 params = new Object[] { user.getId(), role.getId() };  
  50.                 runner.update(sql, params);  
  51.             }  
  52.         } catch (SQLException e) {  
  53.             throw new RuntimeException(e);  
  54.         }  
  55.     }  
  56.   
  57.     // 删除用户  
  58.     public void deleteUser(String id) {  
  59.         QueryRunner runner = new QueryRunner(DBUtils.getDataSource());  
  60.         String sql = "delete from user_role where user_id=?";  
  61.         try {  
  62.             runner.update(sql, id);  
  63.             sql = "delete from user where id=?";  
  64.             runner.update(sql, id);  
  65.         } catch (SQLException e) {  
  66.             throw new RuntimeException(e);  
  67.         }  
  68.     }  
  69.   
  70.     // 根据id查找用户  
  71.     @SuppressWarnings("unchecked")  
  72.     public User findUserById(String id) {  
  73.         QueryRunner runner = new QueryRunner(DBUtils.getDataSource());  
  74.         String sql = "select id,username,password from user where id=?";  
  75.         Object[] params = { id };  
  76.         try {  
  77.             User user = (User) runner.query(sql, new BeanHandler(User.class),  
  78.                     params);  
  79.             sql = "select r.id,r.name,r.description from role r,user_role ur where r.id=ur.role_id and ur.user_id=?";  
  80.             params = new Object[] { id };  
  81.             List<Role> list = (List<Role>) runner.query(sql,  
  82.                     new BeanListHandler(Role.class), params);  
  83.             Set<Role> set = new HashSet<Role>();  
  84.             set.addAll(list);  
  85.             user.setRoles(set);  
  86.             return user;  
  87.         } catch (SQLException e) {  
  88.             throw new RuntimeException(e);  
  89.         }  
  90.     }  
  91.   
  92.     // 查找所有用户  
  93.     @SuppressWarnings("unchecked")  
  94.     public List<User> findAllUser() {  
  95.         List<User> list = null;  
  96.         QueryRunner runner = new QueryRunner(DBUtils.getDataSource());  
  97.         String sql = "select id,username,password from user";  
  98.         try {  
  99.             list = (List<User>) runner.query(sql, new BeanListHandler(  
  100.                     User.class));  
  101.             sql = "select r.id,r.name,r.description from role r,user_role ur where r.id=ur.role_id and ur.user_id=?";  
  102.             for (User user : list) {  
  103.                 Object[] params = new Object[] { user.getId() };  
  104.                 Set<Role> set = new HashSet<Role>();  
  105.                 set.addAll((List<Role>) runner.query(sql, new BeanListHandler(  
  106.                         Role.class), params));  
  107.                 user.setRoles(set);  
  108.             }  
  109.         } catch (SQLException e) {  
  110.             throw new RuntimeException(e);  
  111.         }  
  112.         return list;  
  113.     }  
  114.   
  115.     // 用户登录  
  116.     @SuppressWarnings("unchecked")  
  117.     public User login(String username, String password) {  
  118.         User user = null;  
  119.         QueryRunner runner = new QueryRunner(DBUtils.getDataSource());  
  120.         String sql = "select id,username,password from user where username=? and password=?";  
  121.         Object[] params = { username, password };  
  122.         try {  
  123.             user = (User) runner  
  124.                     .query(sql, new BeanHandler(User.class), params);  
  125.             if (user != null) {  
  126.                 sql = "select r.id,r.name,r.description from role r, user_role ur where r.id=ur.role_id and ur.user_id=?";  
  127.                 params = new Object[] { user.getId() };  
  128.                 Set<Role> set = new HashSet<Role>();  
  129.                 set.addAll((List<Role>) runner.query(sql, new BeanListHandler(  
  130.                         Role.class), params));  
  131.                 user.setRoles(set);  
  132.             }  
  133.         } catch (SQLException e) {  
  134.             throw new RuntimeException(e);  
  135.         }  
  136.         return user;  
  137.     }  
  138. }  

[java] view plain copy


 print?

  1. package cn.dk.factory;  
  2.   
  3. import java.io.IOException;  
  4. import java.io.InputStream;  
  5. import java.util.Properties;  
  6.   
  7. public class DaoFactory {  
  8.   
  9.     private static DaoFactory factory = new DaoFactory();  
  10.     private static Properties properties;  
  11.   
  12.     private DaoFactory() {  
  13.         InputStream inputStream = DaoFactory.class.getClassLoader()  
  14.                 .getResourceAsStream("daoFactory.properties");  
  15.         try {  
  16.             properties = new Properties();  
  17.             properties.load(inputStream);  
  18.         } catch (IOException e) {  
  19.             throw new ExceptionInInitializerError(e);  
  20.         }  
  21.     }  
  22.   
  23.     public static DaoFactory newInstance() {  
  24.         return factory;  
  25.     }  
  26.   
  27.     @SuppressWarnings("unchecked")  
  28.     public <T> T getDao(Class<T> clazz) {  
  29.         String simpleName = clazz.getSimpleName();  
  30.         String className = properties.getProperty(simpleName);  
  31.         try {  
  32.             return (T) Class.forName(className).newInstance();  
  33.         } catch (Exception e) {  
  34.             throw new RuntimeException(e);  
  35.         }  
  36.     }  
  37. }  

[java] view plain copy


 print?

  1. package cn.dk.service;  
  2.   
  3. import java.io.BufferedReader;  
  4. import java.io.InputStream;  
  5. import java.io.InputStreamReader;  
  6.   
  7. public class InitialService {  
  8.   
  9.     // 系统初始化  
  10.     public String initial() throws Exception {  
  11.         String filePath = InitialService.class.getClassLoader().getResource(  
  12.                 "init.sql").getPath();  
  13.         filePath = filePath.substring(1);  
  14.         String command = "cmd /c mysql -uroot -proot<" + filePath;  
  15.         Process process = Runtime.getRuntime().exec(command);  
  16.         InputStream errorStream = process.getErrorStream();  
  17.         BufferedReader br = new BufferedReader(new InputStreamReader(  
  18.                 errorStream));  
  19.         char[] chars = new char[1024];  
  20.         int len = 0;  
  21.         StringBuffer sb = new StringBuffer();  
  22.         while ((len = br.read(chars)) != -1) {  
  23.             sb.append(chars, 0, len);  
  24.         }  
  25.         if (sb.length() > 0)  
  26.             return sb.insert(0, "初始化失败,原因:").toString();  
  27.         else  
  28.             return "初始化成功";  
  29.     }  
  30. }  

[java] view plain copy


 print?

  1. package cn.dk.service;  
  2.   
  3. import java.util.ArrayList;  
  4. import java.util.HashSet;  
  5. import java.util.List;  
  6. import java.util.Set;  
  7. import java.util.UUID;  
  8. import cn.dk.dao.IPermissionDao;  
  9. import cn.dk.dao.IResourceDao;  
  10. import cn.dk.dao.IRoleDao;  
  11. import cn.dk.dao.IUserDao;  
  12. import cn.dk.domain.Permission;  
  13. import cn.dk.domain.Resource;  
  14. import cn.dk.domain.Role;  
  15. import cn.dk.domain.User;  
  16. import cn.dk.factory.DaoFactory;  
  17.   
  18. public class Service {  
  19.   
  20.     private DaoFactory factory = DaoFactory.newInstance();  
  21.     private IPermissionDao permissionDao = factory.getDao(IPermissionDao.class);  
  22.     private IResourceDao resourceDao = factory.getDao(IResourceDao.class);  
  23.     private IRoleDao roleDao = factory.getDao(IRoleDao.class);  
  24.     private IUserDao userDao = factory.getDao(IUserDao.class);  
  25.   
  26.     // 权限  
  27.     public void insertPermission(Permission permission) {  
  28.         permission.setId(UUID.randomUUID().toString());  
  29.         permissionDao.insertPermission(permission);  
  30.     }  
  31.   
  32.     public void deletePermission(String id) {  
  33.         permissionDao.deletePermission(id);  
  34.     }  
  35.   
  36.     public Permission findPermissionById(String id) {  
  37.         return permissionDao.findPermissionById(id);  
  38.     }  
  39.   
  40.     public List<Permission> findAllPermission() {  
  41.         return permissionDao.findAllPermission();  
  42.     }  
  43.   
  44.     // 资源  
  45.     public void insertResource(Resource resource, String permissionId) {  
  46.         Permission permission = findPermissionById(permissionId);  
  47.         resource.setPermission(permission);  
  48.         resource.setId(UUID.randomUUID().toString());  
  49.         resourceDao.insertResource(resource);  
  50.     }  
  51.   
  52.     public void updateResource(Resource resource, String permissionId) {  
  53.         Permission permission = findPermissionById(permissionId);  
  54.         resource.setPermission(permission);  
  55.         resourceDao.updateResource(resource);  
  56.     }  
  57.   
  58.     public List<Resource> findAllResource() {  
  59.         return resourceDao.findAllResource();  
  60.     }  
  61.   
  62.     public Resource findResourceByURI(String uri) {  
  63.         return resourceDao.findResourceByURI(uri);  
  64.     }  
  65.   
  66.     public Resource findResourceById(String id) {  
  67.         return resourceDao.findResourceById(id);  
  68.     }  
  69.   
  70.     public void deleteResource(String id) {  
  71.         resourceDao.deleteResource(id);  
  72.     }  
  73.   
  74.     // 角色  
  75.     public void insertRole(Role role, String[] permissionId) {  
  76.         Set<Permission> permissions = new HashSet<Permission>();  
  77.         for (int i = 0; permissionId != null && i < permissionId.length; i++) {  
  78.             Permission permission = findPermissionById(permissionId[i]);  
  79.             permissions.add(permission);  
  80.         }  
  81.         role.setPermissions(permissions);  
  82.         role.setId(UUID.randomUUID().toString());  
  83.         roleDao.insertRole(role);  
  84.     }  
  85.   
  86.     public void updateRole(Role role, String[] permissionId) {  
  87.         Set<Permission> permissions = new HashSet<Permission>();  
  88.         for (int i = 0; permissionId != null && i < permissionId.length; i++) {  
  89.             Permission permission = findPermissionById(permissionId[i]);  
  90.             permissions.add(permission);  
  91.         }  
  92.         role.setPermissions(permissions);  
  93.         roleDao.updateRole(role);  
  94.     }  
  95.   
  96.     public void deleteRole(String id) {  
  97.         roleDao.deleteRole(id);  
  98.     }  
  99.   
  100.     public Role findRoleById(String id) {  
  101.         return roleDao.findRoleById(id);  
  102.     }  
  103.   
  104.     public List<Role> fineAllRole() {  
  105.         return roleDao.fineAllRole();  
  106.     }  
  107.   
  108.     // 用户  
  109.     public void insertUser(User user, String[] roleId) {  
  110.         Set<Role> roles = new HashSet<Role>();  
  111.         for (int i = 0; roleId != null && i < roleId.length; i++) {  
  112.             Role role = roleDao.findRoleById(roleId[i]);  
  113.             roles.add(role);  
  114.         }  
  115.         user.setRoles(roles);  
  116.         user.setId(UUID.randomUUID().toString());  
  117.         userDao.insertUser(user);  
  118.     }  
  119.   
  120.     public void updateUser(User user, String[] roleId) {  
  121.         user.setUsername(findUserById(user.getId()).getUsername());  
  122.         user.setPassword(findUserById(user.getId()).getPassword());  
  123.         Set<Role> roles = new HashSet<Role>();  
  124.         for (int i = 0; roleId != null && i < roleId.length; i++) {  
  125.             Role role = roleDao.findRoleById(roleId[i]);  
  126.             roles.add(role);  
  127.         }  
  128.         user.setRoles(roles);  
  129.         userDao.updateUser(user);  
  130.     }  
  131.   
  132.     public void deleteUser(String id) {  
  133.         userDao.deleteUser(id);  
  134.     }  
  135.   
  136.     public User findUserById(String id) {  
  137.         return userDao.findUserById(id);  
  138.     }  
  139.   
  140.     public List<User> findAllUser() {  
  141.         return userDao.findAllUser();  
  142.     }  
  143.   
  144.     public User login(String username, String password) {  
  145.         return userDao.login(username, password);  
  146.     }  
  147.   
  148.     public List<Permission> getUserPermission(User user) {  
  149.         List<Permission> list = new ArrayList<Permission>();  
  150.         Set<Role> roles = user.getRoles();  
  151.         for (Role role : roles) {  
  152.             list.addAll(findRoleById(role.getId()).getPermissions());  
  153.         }  
  154.         return list;  
  155.     }  
  156. }  

[java] view plain copy


 print?

  1. package cn.dk.utils;  
  2.   
  3. import java.util.Map;  
  4. import org.apache.commons.beanutils.BeanUtils;  
  5.   
  6. public class CopyBean {  
  7.   
  8.     public static void Copy(Object bean, Map<String, String> properties){  
  9.         try {  
  10.             BeanUtils.populate(bean, properties);  
  11.         } catch (Exception e) {  
  12.             throw new RuntimeException(e);  
  13.         }  
  14.     }  
  15. }  

[java] view plain copy


 print?

  1. package cn.dk.utils;  
  2.   
  3. import com.mchange.v2.c3p0.ComboPooledDataSource;  
  4.   
  5. public class DBUtils {  
  6.   
  7.     private static ComboPooledDataSource source;  
  8.   
  9.     static {  
  10.         source = new ComboPooledDataSource("mysql");  
  11.     }  
  12.   
  13.     public static ComboPooledDataSource getDataSource() {  
  14.         return source;  
  15.     }  
  16. }  

[java] view plain copy


 print?

  1. package cn.dk.web.manager;  
  2.   
  3. import java.io.IOException;  
  4. import javax.servlet.ServletException;  
  5. import javax.servlet.http.HttpServlet;  
  6. import javax.servlet.http.HttpServletRequest;  
  7. import javax.servlet.http.HttpServletResponse;  
  8.   
  9. @SuppressWarnings("serial")  
  10. public class ManagerServlet extends HttpServlet {  
  11.   
  12.     public void doGet(HttpServletRequest request, HttpServletResponse response)  
  13.             throws ServletException, IOException {  
  14.         request.getRequestDispatcher("/WEB-INF/manager/manager.jsp").forward(  
  15.                 request, response);  
  16.     }  
  17.   
  18.     public void doPost(HttpServletRequest request, HttpServletResponse response)  
  19.             throws ServletException, IOException {  
  20.         doGet(request, response);  
  21.     }  
  22. }  

[java] view plain copy


 print?

  1. package cn.dk.web.manager;  
  2.   
  3. import java.io.IOException;  
  4. import java.util.List;  
  5. import javax.servlet.ServletException;  
  6. import javax.servlet.http.HttpServlet;  
  7. import javax.servlet.http.HttpServletRequest;  
  8. import javax.servlet.http.HttpServletResponse;  
  9. import cn.dk.domain.Permission;  
  10. import cn.dk.service.Service;  
  11. import cn.dk.utils.CopyBean;  
  12.   
  13. @SuppressWarnings("serial")  
  14. public class PermissionServlet extends HttpServlet {  
  15.   
  16.     private Service service = new Service();  
  17.   
  18.     public void doGet(HttpServletRequest request, HttpServletResponse response)  
  19.             throws ServletException, IOException {  
  20.         String method = request.getParameter("method");  
  21.         if (method.equals("showAllpermissoin"))  
  22.             showAllpermissoin(request, response);  
  23.         else if (method.equals("showInsertPermission"))  
  24.             showInsertPermission(request, response);  
  25.         else if (method.equals("insertPsermission"))  
  26.             insertPsermission(request, response);  
  27.         else if (method.equals("deletePermission"))  
  28.             deletePermission(request, response);  
  29.     }  
  30.   
  31.     private void deletePermission(HttpServletRequest request,  
  32.             HttpServletResponse response) throws ServletException, IOException {  
  33.         String permissionId = request.getParameter("id");  
  34.         try {  
  35.             service.deletePermission(permissionId);  
  36.             request.setAttribute("message", "删除权限成功");  
  37.         } catch (RuntimeException e) {  
  38.             request.setAttribute("message", "删除权限失败");  
  39.         }  
  40.         request.getRequestDispatcher("/WEB-INF/message/message.jsp").forward(  
  41.                 request, response);  
  42.     }  
  43.   
  44.     @SuppressWarnings("unchecked")  
  45.     private void insertPsermission(HttpServletRequest request,  
  46.             HttpServletResponse response) throws ServletException, IOException {  
  47.         Permission permission = new Permission();  
  48.         try {  
  49.             CopyBean.Copy(permission, request.getParameterMap());  
  50.             service.insertPermission(permission);  
  51.             request.setAttribute("message", "添加权限成功");  
  52.         } catch (RuntimeException e) {  
  53.             request.setAttribute("message", "添加权限失败");  
  54.         }  
  55.         request.getRequestDispatcher("/WEB-INF/message/message.jsp").forward(  
  56.                 request, response);  
  57.     }  
  58.   
  59.     private void showInsertPermission(HttpServletRequest request,  
  60.             HttpServletResponse response) throws ServletException, IOException {  
  61.         request.getRequestDispatcher("/WEB-INF/manager/addPermission.jsp")  
  62.                 .forward(request, response);  
  63.     }  
  64.   
  65.     private void showAllpermissoin(HttpServletRequest request,  
  66.             HttpServletResponse response) throws ServletException, IOException {  
  67.         List<Permission> permission = service.findAllPermission();  
  68.         request.setAttribute("permission", permission);  
  69.         request.getRequestDispatcher("/WEB-INF/manager/permissionlist.jsp")  
  70.                 .forward(request, response);  
  71.     }  
  72.   
  73.     public void doPost(HttpServletRequest request, HttpServletResponse response)  
  74.             throws ServletException, IOException {  
  75.         doGet(request, response);  
  76.     }  
  77.   
  78. }  

[java] view plain copy


 print?

  1. package cn.dk.web.manager;  
  2.   
  3. import java.io.IOException;  
  4. import java.util.List;  
  5. import javax.servlet.ServletException;  
  6. import javax.servlet.http.HttpServlet;  
  7. import javax.servlet.http.HttpServletRequest;  
  8. import javax.servlet.http.HttpServletResponse;  
  9. import cn.dk.domain.Permission;  
  10. import cn.dk.domain.Resource;  
  11. import cn.dk.service.Service;  
  12. import cn.dk.utils.CopyBean;  
  13.   
  14. @SuppressWarnings("serial")  
  15. public class ResourceServlet extends HttpServlet {  
  16.   
  17.     private Service service = new Service();  
  18.   
  19.     public void doGet(HttpServletRequest request, HttpServletResponse response)  
  20.             throws ServletException, IOException {  
  21.         String method = request.getParameter("method");  
  22.         if (method.equals("showAllresource"))  
  23.             showAllresource(request, response);  
  24.         else if (method.equals("showInsertResource"))  
  25.             showInsertResource(request, response);  
  26.         else if (method.equals("insertResource"))  
  27.             insertResource(request, response);  
  28.         else if (method.equals("showUpdateResource"))  
  29.             showUpdateResource(request, response);  
  30.         else if (method.equals("updateResource"))  
  31.             updateResource(request, response);  
  32.         else if (method.equals("deleteResource"))  
  33.             deleteResource(request, response);  
  34.     }  
  35.   
  36.     private void deleteResource(HttpServletRequest request,  
  37.             HttpServletResponse response) throws ServletException, IOException {  
  38.         String id = request.getParameter("id");  
  39.         try {  
  40.             service.deleteResource(id);  
  41.             request.setAttribute("message", "删除资源成功");  
  42.         } catch (RuntimeException e) {  
  43.             request.setAttribute("message", "删除资源失败");  
  44.         }  
  45.         request.getRequestDispatcher("/WEB-INF/message/message.jsp").forward(  
  46.                 request, response);  
  47.     }  
  48.   
  49.     @SuppressWarnings("unchecked")  
  50.     private void updateResource(HttpServletRequest request,  
  51.             HttpServletResponse response) throws ServletException, IOException {  
  52.         Resource resource = new Resource();  
  53.         try {  
  54.             CopyBean.Copy(resource, request.getParameterMap());  
  55.             String permissionId = request.getParameter("pid");  
  56.             service.updateResource(resource, permissionId);  
  57.             request.setAttribute("message", "修改资源成功");  
  58.         } catch (RuntimeException e) {  
  59.             request.setAttribute("message", "修改资源失败,原因:" + e.getMessage());  
  60.         }  
  61.         request.getRequestDispatcher("/WEB-INF/message/message.jsp").forward(  
  62.                 request, response);  
  63.     }  
  64.   
  65.     private void showUpdateResource(HttpServletRequest request,  
  66.             HttpServletResponse response) throws ServletException, IOException {  
  67.         List<Permission> permission = service.findAllPermission();  
  68.         String resourceId = request.getParameter("id");  
  69.         Resource resource = service.findResourceById(resourceId);  
  70.         request.setAttribute("permission", permission);  
  71.         request.setAttribute("resource", resource);  
  72.         request.getRequestDispatcher("/WEB-INF/manager/updateResource.jsp")  
  73.                 .forward(request, response);  
  74.     }  
  75.   
  76.     @SuppressWarnings("unchecked")  
  77.     private void insertResource(HttpServletRequest request,  
  78.             HttpServletResponse response) throws ServletException, IOException {  
  79.         try {  
  80.             Resource resource = new Resource();  
  81.             CopyBean.Copy(resource, request.getParameterMap());  
  82.             String permissionId = request.getParameter("pid");  
  83.             service.insertResource(resource, permissionId);  
  84.             request.setAttribute("message", "添加资源成功");  
  85.         } catch (RuntimeException e) {  
  86.             request.setAttribute("message", "添加资源失败");  
  87.         }  
  88.         request.getRequestDispatcher("/WEB-INF/message/message.jsp").forward(  
  89.                 request, response);  
  90.     }  
  91.   
  92.     private void showInsertResource(HttpServletRequest request,  
  93.             HttpServletResponse response) throws ServletException, IOException {  
  94.         List<Permission> permission = service.findAllPermission();  
  95.         request.setAttribute("permission", permission);  
  96.         request.getRequestDispatcher("/WEB-INF/manager/addResource.jsp")  
  97.                 .forward(request, response);  
  98.     }  
  99.   
  100.     private void showAllresource(HttpServletRequest request,  
  101.             HttpServletResponse response) throws ServletException, IOException {  
  102.         List<Resource> resources = service.findAllResource();  
  103.         request.setAttribute("resources", resources);  
  104.         request.getRequestDispatcher("/WEB-INF/manager/resourcelist.jsp")  
  105.                 .forward(request, response);  
  106.     }  
  107.   
  108.     public void doPost(HttpServletRequest request, HttpServletResponse response)  
  109.             throws ServletException, IOException {  
  110.         doGet(request, response);  
  111.     }  
  112.   
  113. }  

[java] view plain copy


 print?

  1. package cn.dk.web.manager;  
  2.   
  3. import java.io.IOException;  
  4. import java.util.List;  
  5. import javax.servlet.ServletException;  
  6. import javax.servlet.http.HttpServlet;  
  7. import javax.servlet.http.HttpServletRequest;  
  8. import javax.servlet.http.HttpServletResponse;  
  9. import cn.dk.domain.Permission;  
  10. import cn.dk.domain.Role;  
  11. import cn.dk.service.Service;  
  12. import cn.dk.utils.CopyBean;  
  13.   
  14. @SuppressWarnings("serial")  
  15. public class RoleServlet extends HttpServlet {  
  16.   
  17.     private Service service = new Service();  
  18.   
  19.     public void doGet(HttpServletRequest request, HttpServletResponse response)  
  20.             throws ServletException, IOException {  
  21.         String method = request.getParameter("method");  
  22.         if (method.equals("showAllRole"))  
  23.             showAllRole(request, response);  
  24.         else if (method.equals("showInsertRole"))  
  25.             showInsertRole(request, response);  
  26.         else if (method.equals("insertRole"))  
  27.             insertRole(request, response);  
  28.         else if (method.equals("showUpdateRole"))  
  29.             showUpdateRole(request, response);  
  30.         else if (method.equals("updateRole"))  
  31.             updateRole(request, response);  
  32.         else if (method.equals("deleteRole"))  
  33.             deleteRole(request, response);  
  34.     }  
  35.   
  36.     private void deleteRole(HttpServletRequest request,  
  37.             HttpServletResponse response) throws ServletException, IOException {  
  38.         String roleId = request.getParameter("id");  
  39.         try {  
  40.             service.deleteRole(roleId);  
  41.             request.setAttribute("message", "删除角色成功");  
  42.         } catch (RuntimeException e) {  
  43.             request.setAttribute("message", "删除角色失败,原因:" + e.getMessage());  
  44.         }  
  45.         request.getRequestDispatcher("/WEB-INF/message/message.jsp").forward(  
  46.                 request, response);  
  47.     }  
  48.   
  49.     @SuppressWarnings("unchecked")  
  50.     private void updateRole(HttpServletRequest request,  
  51.             HttpServletResponse response) throws ServletException, IOException {  
  52.         Role role = new Role();  
  53.         try {  
  54.             CopyBean.Copy(role, request.getParameterMap());  
  55.             String[] permissionId = request.getParameterValues("pid");  
  56.             service.updateRole(role, permissionId);  
  57.             request.setAttribute("message", "修改角色成功");  
  58.         } catch (RuntimeException e) {  
  59.             request.setAttribute("message", "修改角色失败,原因:" + e.getMessage());  
  60.         }  
  61.         request.getRequestDispatcher("/WEB-INF/message/message.jsp").forward(  
  62.                 request, response);  
  63.     }  
  64.   
  65.     private void showUpdateRole(HttpServletRequest request,  
  66.             HttpServletResponse response) throws ServletException, IOException {  
  67.         String roleId = request.getParameter("id");  
  68.         Role role = service.findRoleById(roleId);  
  69.         List<Permission> permission = service.findAllPermission();  
  70.         request.setAttribute("role", role);  
  71.         request.setAttribute("permission", permission);  
  72.         request.getRequestDispatcher("/WEB-INF/manager/updateRole.jsp")  
  73.                 .forward(request, response);  
  74.     }  
  75.   
  76.     @SuppressWarnings("unchecked")  
  77.     private void insertRole(HttpServletRequest request,  
  78.             HttpServletResponse response) throws ServletException, IOException {  
  79.         Role role = new Role();  
  80.         try {  
  81.             CopyBean.Copy(role, request.getParameterMap());  
  82.             service.insertRole(role, null);  
  83.             request.setAttribute("message", "添加角色成功");  
  84.         } catch (RuntimeException e) {  
  85.             request.setAttribute("message", "添加角色失败,原因:" + e.getMessage());  
  86.         }  
  87.         request.getRequestDispatcher("/WEB-INF/message/message.jsp").forward(  
  88.                 request, response);  
  89.     }  
  90.   
  91.     private void showInsertRole(HttpServletRequest request,  
  92.             HttpServletResponse response) throws ServletException, IOException {  
  93.         request.getRequestDispatcher("/WEB-INF/manager/addRole.jsp").forward(  
  94.                 request, response);  
  95.     }  
  96.   
  97.     private void showAllRole(HttpServletRequest request,  
  98.             HttpServletResponse response) throws ServletException, IOException {  
  99.         List<Role> role = service.fineAllRole();  
  100.         request.setAttribute("role", role);  
  101.         request.getRequestDispatcher("/WEB-INF/manager/rolelist.jsp").forward(  
  102.                 request, response);  
  103.     }  
  104.   
  105.     public void doPost(HttpServletRequest request, HttpServletResponse response)  
  106.             throws ServletException, IOException {  
  107.         doGet(request, response);  
  108.     }  
  109. }  

[java] view plain copy


 print?

  1. package cn.dk.web.manager;  
  2.   
  3. import java.io.IOException;  
  4. import java.util.List;  
  5. import javax.servlet.ServletException;  
  6. import javax.servlet.http.HttpServlet;  
  7. import javax.servlet.http.HttpServletRequest;  
  8. import javax.servlet.http.HttpServletResponse;  
  9. import cn.dk.domain.Role;  
  10. import cn.dk.domain.User;  
  11. import cn.dk.service.Service;  
  12. import cn.dk.utils.CopyBean;  
  13.   
  14. @SuppressWarnings("serial")  
  15. public class UserServlet extends HttpServlet {  
  16.   
  17.     private Service service = new Service();  
  18.   
  19.     public void doGet(HttpServletRequest request, HttpServletResponse response)  
  20.             throws ServletException, IOException {  
  21.         String method = request.getParameter("method");  
  22.         if (method.equals("showAllUser"))  
  23.             showAllUser(request, response);  
  24.         else if (method.equals("showInsertUser"))  
  25.             showInsertUser(request, response);  
  26.         else if (method.equals("addUser"))  
  27.             addUser(request, response);  
  28.         else if (method.equals("showUpdateUser"))  
  29.             showUpdateUser(request, response);  
  30.         else if (method.equals("updateUser"))  
  31.             updateUser(request, response);  
  32.         else if (method.equals("deleteUser"))  
  33.             deleteUser(request, response);  
  34.     }  
  35.   
  36.     private void deleteUser(HttpServletRequest request,  
  37.             HttpServletResponse response) throws ServletException, IOException {  
  38.         String userId = request.getParameter("id");  
  39.         try {  
  40.             service.deleteUser(userId);  
  41.             request.setAttribute("message", "删除用户成功");  
  42.         } catch (RuntimeException e) {  
  43.             request.setAttribute("message", "删除用户失败");  
  44.         }  
  45.         request.getRequestDispatcher("/WEB-INF/message/message.jsp").forward(  
  46.                 request, response);  
  47.     }  
  48.   
  49.     @SuppressWarnings("unchecked")  
  50.     private void updateUser(HttpServletRequest request,  
  51.             HttpServletResponse response) throws ServletException, IOException {  
  52.         User user = new User();  
  53.         try {  
  54.             CopyBean.Copy(user, request.getParameterMap());  
  55.             String[] roleId = request.getParameterValues("rid");  
  56.             service.updateUser(user, roleId);  
  57.             request.setAttribute("message", "修改用户成功");  
  58.         } catch (RuntimeException e) {  
  59.             request.setAttribute("message", "修改用户失败,原因:" + e.getMessage());  
  60.         }  
  61.         request.getRequestDispatcher("/WEB-INF/message/message.jsp").forward(  
  62.                 request, response);  
  63.     }  
  64.   
  65.     private void showUpdateUser(HttpServletRequest request,  
  66.             HttpServletResponse response) throws ServletException, IOException {  
  67.         String userId = request.getParameter("id");  
  68.         User user = service.findUserById(userId);  
  69.         List<Role> role = service.fineAllRole();  
  70.         request.setAttribute("user", user);  
  71.         request.setAttribute("role", role);  
  72.         request.getRequestDispatcher("/WEB-INF/manager/updateUser.jsp")  
  73.                 .forward(request, response);  
  74.     }  
  75.   
  76.     @SuppressWarnings("unchecked")  
  77.     private void addUser(HttpServletRequest request,  
  78.             HttpServletResponse response) throws ServletException, IOException {  
  79.         User user = new User();  
  80.         try {  
  81.             CopyBean.Copy(user, request.getParameterMap());  
  82.             service.insertUser(user, null);  
  83.             request.setAttribute("message", "添加用户成功");  
  84.         } catch (RuntimeException e) {  
  85.             request.setAttribute("message", "添加用户失败,原因:" + e.getMessage());  
  86.         }  
  87.         request.getRequestDispatcher("/WEB-INF/message/message.jsp").forward(  
  88.                 request, response);  
  89.     }  
  90.   
  91.     private void showInsertUser(HttpServletRequest request,  
  92.             HttpServletResponse response) throws ServletException, IOException {  
  93.         request.getRequestDispatcher("/WEB-INF/manager/addUser.jsp").forward(  
  94.                 request, response);  
  95.     }  
  96.   
  97.     private void showAllUser(HttpServletRequest request,  
  98.             HttpServletResponse response) throws ServletException, IOException {  
  99.         List<User> user = service.findAllUser();  
  100.         request.setAttribute("user", user);  
  101.         request.getRequestDispatcher("/WEB-INF/manager/userlist.jsp").forward(  
  102.                 request, response);  
  103.     }  
  104.   
  105.     public void doPost(HttpServletRequest request, HttpServletResponse response)  
  106.             throws ServletException, IOException {  
  107.         doGet(request, response);  
  108.     }  
  109.   
  110. }  

[java] view plain copy


 print?

  1. package cn.dk.web;  
  2.   
  3. import java.io.IOException;  
  4. import javax.servlet.ServletException;  
  5. import javax.servlet.http.HttpServlet;  
  6. import javax.servlet.http.HttpServletRequest;  
  7. import javax.servlet.http.HttpServletResponse;  
  8. import cn.dk.service.InitialService;  
  9.   
  10. @SuppressWarnings("serial")  
  11. public class InitialServlet extends HttpServlet {  
  12.   
  13.     public void doGet(HttpServletRequest request, HttpServletResponse response)  
  14.             throws ServletException, IOException {  
  15.         InitialService iniService = new InitialService();  
  16.         String message = null;  
  17.         try {  
  18.             message = iniService.initial();  
  19.             request.setAttribute("message", message);  
  20.         } catch (Exception e) {  
  21.             request.setAttribute("message", message);  
  22.         }  
  23.         request.getRequestDispatcher("/WEB-INF/message/message.jsp").forward(  
  24.                 request, response);  
  25.     }  
  26.   
  27.     public void doPost(HttpServletRequest request, HttpServletResponse response)  
  28.             throws ServletException, IOException {  
  29.         doGet(request, response);  
  30.     }  
  31. }  

[java] view plain copy


 print?

  1. package cn.dk.web;  
  2.   
  3. import java.io.IOException;  
  4. import javax.servlet.ServletException;  
  5. import javax.servlet.http.HttpServlet;  
  6. import javax.servlet.http.HttpServletRequest;  
  7. import javax.servlet.http.HttpServletResponse;  
  8. import cn.dk.domain.User;  
  9. import cn.dk.service.Service;  
  10.   
  11. @SuppressWarnings("serial")  
  12. public class Welcome extends HttpServlet {  
  13.   
  14.     public void doGet(HttpServletRequest request, HttpServletResponse response)  
  15.             throws ServletException, IOException {  
  16.         request.getRequestDispatcher("/login/login.jsp").forward(request,  
  17.                 response);  
  18.     }  
  19.   
  20.     public void doPost(HttpServletRequest request, HttpServletResponse response)  
  21.             throws ServletException, IOException {  
  22.         Service service = new Service();  
  23.         String username = request.getParameter("username");  
  24.         String password = request.getParameter("password");  
  25.         User user = service.login(username, password);  
  26.         if (user != null) {  
  27.             request.getSession().setAttribute("user", user);  
  28.             response.sendRedirect(request.getContextPath() + "/index.jsp");  
  29.         } else {  
  30.             request.setAttribute("message", "用户名密码错误");  
  31.             request.getRequestDispatcher("/WEB-INF/message/message.jsp")  
  32.                     .forward(request, response);  
  33.         }  
  34.     }  
  35. }  

[html] view plain copy


 print?

  1. <%@ page language="java" pageEncoding="UTF-8"%>  
  2. <%@taglib uri="http://www.opensymphony.com/sitemesh/decorator" prefix="sitemesh-decorator"%>  
  3.   
  4. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">  
  5. <html>  
  6.     <head>  
  7.         <title><sitemesh-decorator:title /></title>  
  8.           
  9.         <style type="text/css">  
  10.             body{  
  11.                 margin: 0px;  
  12.                 padding: 0px;  
  13.                 text-align: center;  
  14.             }  
  15.             #container{  
  16.                     width: 980px;  
  17.                     border: 1px solid gray;  
  18.             }  
  19.             #top{  
  20.                 border-bottom: 1px solid gray;  
  21.             }  
  22.             #left{  
  23.                 float: left;  
  24.                 width: 150px;  
  25.                 border-right: 1px solid gray;  
  26.             }  
  27.             #main{  
  28.                 float: left;  
  29.                 padding: 40px 0px 0px 40px;  
  30.             }  
  31.          </style>  
  32.     </head>  
  33.   
  34.     <body>  
  35.         <br/><br/><br/>  
  36.         <div id="container">  
  37.             <div id="top">  
  38.                 <h2>中浩集团网站后台管理系统</h2>  
  39.             </div>  
  40.             <div id="left">  
  41.                 <br/><br/><br/>  
  42.                 <a href="${pageContext.request.contextPath }/servlet/manager/ResourceServlet?method=showAllresource">资源管理</a><br/><br/><br/>  
  43.                 <a href="${pageContext.request.contextPath }/servlet/manager/PermissionServlet?method=showAllpermissoin">权限管理</a><br/><br/><br/>  
  44.                 <a href="${pageContext.request.contextPath }/servlet/manager/RoleServlet?method=showAllRole">角色管理</a><br/><br/><br/>  
  45.                 <a href="${pageContext.request.contextPath }/servlet/manager/UserServlet?method=showAllUser">用户管理</a><br/><br/><br/>  
  46.             </div>  
  47.             <div id="main">  
  48.                 <sitemesh-decorator:body></sitemesh-decorator:body>  
  49.             </div>  
  50.         </div>  
  51.     </body>  
  52. </html>  

[html] view plain copy


 print?

  1. <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>  
  2.   
  3. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">  
  4. <html>  
  5.   <head>  
  6.     <title>登录页面</title>  
  7.   </head>  
  8.     
  9.   <body>  
  10.     <form action="${pageContext.request.contextPath }/Welcome" method="post">  
  11.         用户名:<input type="text" name="username"><br>  
  12.         密码:<input type="password" name="password"><br>  
  13.         <input type="submit" value="登录">  
  14.     </form>  
  15.   </body>  
  16. </html>  

[html] view plain copy


 print?

  1. <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>  
  2.   
  3. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">  
  4. <html>  
  5.   <head>  
  6.     <title>添加权限</title>  
  7.   </head>  
  8.     
  9.   <body>  
  10.     <form action="${pageContext.request.contextPath }/servlet/manager/PermissionServlet?method=insertPsermission" method="post">  
  11.     <table>  
  12.         <tr>  
  13.             <td>权限名称</td>  
  14.             <td>  
  15.                 <input type="text" name="name">  
  16.             </td>  
  17.         </tr>  
  18.           
  19.         <tr>  
  20.             <td>权限描述</td>  
  21.             <td>  
  22.                 <textarea rows="3" cols="50" name="description"></textarea>  
  23.             </td>  
  24.         </tr>  
  25.           
  26.         <tr>  
  27.             <td></td>  
  28.             <td>  
  29.                 <input type="submit" value="添加权限">  
  30.             </td>  
  31.         </tr>  
  32.     </table>  
  33.     </form>  
  34.   </body>  
  35. </html>  

[html] view plain copy


 print?

  1. <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>  
  2. <%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>  
  3.   
  4. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">  
  5. <html>  
  6.   <head>  
  7.     <title>添加资额</title>  
  8.   </head>  
  9.     
  10.   <body>  
  11.     <form action="${pageContext.request.contextPath }/servlet/manager/ResourceServlet?method=insertResource" method="post">  
  12.     <table>  
  13.         <tr>  
  14.             <td>资源uri</td>  
  15.             <td>  
  16.                 <input type="text" name="uri">  
  17.             </td>  
  18.         </tr>  
  19.         <tr>  
  20.             <td>资源描述</td>  
  21.             <td>  
  22.                 <textarea rows="3" cols="50" name="description"></textarea>  
  23.             </td>  
  24.         </tr>  
  25.         <tr>  
  26.             <td>资源控制权限</td>  
  27.             <td>  
  28.                 <c:forEach var="p" items="${requestScope.permission}">  
  29.                     <input type="radio" name="pid" value="${p.id }">${p.name }    
  30.                 </c:forEach>  
  31.             </td>  
  32.         </tr>  
  33.         <tr>  
  34.             <td></td>  
  35.             <td>  
  36.                 <input type="submit" value="添加资源">  
  37.             </td>  
  38.         </tr>  
  39.     </table>  
  40.     </form>  
  41.   </body>  
  42. </html>  

[html] view plain copy


 print?

  1. <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>  
  2. <%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>  
  3.   
  4. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">  
  5. <html>  
  6.   <head>  
  7.     <title>添加角色</title>  
  8.   </head>  
  9.     
  10.   <body>  
  11.     <form action="${pageContext.request.contextPath }/servlet/manager/RoleServlet?method=insertRole" method="post">  
  12.     <table>  
  13.         <tr>  
  14.             <td>角色名称</td>  
  15.             <td>  
  16.                 <input type="text" name="name">  
  17.             </td>  
  18.         </tr>  
  19.         <tr>  
  20.             <td>角色描述</td>  
  21.             <td>  
  22.                 <textarea rows="3" cols="50" name="description"></textarea>  
  23.             </td>  
  24.         </tr>  
  25.         <tr>  
  26.             <td></td>  
  27.             <td>  
  28.                 <input type="submit" value="添加角色">  
  29.             </td>  
  30.         </tr>  
  31.     </table>  
  32.     </form>  
  33.   </body>  
  34. </html>  

[html] view plain copy


 print?

  1. <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>  
  2.   
  3. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">  
  4. <html>  
  5.   <head>  
  6.     <title>添加用户</title>  
  7.   </head>  
  8.     
  9.   <body>  
  10.      <form action="${pageContext.request.contextPath }/servlet/manager/UserServlet?method=addUser" method="post">  
  11.     <table>  
  12.         <tr>  
  13.             <td>用户名称</td>  
  14.             <td>  
  15.                 <input type="text" name="username">  
  16.             </td>  
  17.         </tr>  
  18.         <tr>  
  19.             <td>用户密码</td>  
  20.             <td>  
  21.                 <input type="password" name="password">  
  22.             </td>  
  23.         </tr>  
  24.         <tr>  
  25.             <td></td>  
  26.             <td>  
  27.                 <input type="submit" value="添加用户">  
  28.             </td>  
  29.         </tr>  
  30.     </table>  
  31.     </form>  
  32.   </body>  
  33. </html>  

[html] view plain copy


 print?

  1. <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>  
  2. <%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>  
  3.   
  4. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">  
  5. <html>  
  6.   <head>  
  7.     <title>权限列表</title>  
  8.   </head>  
  9.     
  10.   <body>  
  11.      <table width="90%">  
  12.         <tr>  
  13.             <td align="right">  
  14.                 <a href="${pageContext.request.contextPath }/servlet/manager/PermissionServlet?method=showInsertPermission">添加权限</a>  
  15.             </td>  
  16.         </tr>  
  17.     </table>  
  18.       
  19.     <table frame="border" width="90%">  
  20.         <tr>  
  21.             <td>权限名称</td>  
  22.             <td>权限描述</td>  
  23.             <td>操作</td>  
  24.         </tr>  
  25.           
  26.         <c:forEach var="p" items="${requestScope.permission}">  
  27.             <tr>  
  28.                 <td>${p.name }</td>  
  29.                 <td>${p.description }</td>  
  30.                 <td>  
  31.                     <a href="${pageContext.request.contextPath }/servlet/manager/PermissionServlet?method=deletePermission&id=${p.id }">删除</a>  
  32.                 </td>  
  33.             </tr>  
  34.         </c:forEach>  
  35.       
  36.     </table>  
  37.   </body>  
  38. </html>  

[html] view plain copy


 print?

  1. <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>  
  2. <%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>  
  3.   
  4. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">  
  5. <html>  
  6.   <head>  
  7.     <title>资源管理</title>  
  8.   </head>  
  9.     
  10.   <body>  
  11.      <table width="90%">  
  12.         <tr>  
  13.             <td align="right">  
  14.                 <a href="${pageContext.request.contextPath }/servlet/manager/ResourceServlet?method=showInsertResource">添加资源</a>  
  15.             </td>  
  16.         </tr>  
  17.     </table>  
  18.     <table frame="border" width="90%">  
  19.         <tr>  
  20.             <td>资源URI</td>  
  21.             <td>资源描述</td>  
  22.             <td>管理资源的权限</td>  
  23.             <td>操作</td>  
  24.         </tr>  
  25.         <c:forEach var="resource" items="${requestScope.resources}">  
  26.             <tr>  
  27.                 <td>${resource.uri }</td>  
  28.                 <td>${resource.description }</td>  
  29.                 <td>${resource.permission.name }</td>  
  30.                 <td>  
  31.                     <a href="${pageContext.request.contextPath }/servlet/manager/ResourceServlet?method=showUpdateResource&id=${resource.id }">分配权限</a>  
  32.                     <a href="${pageContext.request.contextPath }/servlet/manager/ResourceServlet?method=deleteResource&id=${resource.id }">删除</a>  
  33.                 </td>  
  34.             </tr>  
  35.         </c:forEach>  
  36.     </table>  
  37.   </body>  
  38. </html>  

[html] view plain copy


 print?

  1. <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>  
  2. <%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>  
  3.   
  4. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">  
  5. <html>  
  6.   <head>  
  7.     <title>My JSP 'rolelist.jsp' starting page</title>  
  8.   </head>  
  9.     
  10.   <body>  
  11.       <table width="90%">  
  12.         <tr>  
  13.             <td align="right">  
  14.                 <a href="${pageContext.request.contextPath }/servlet/manager/RoleServlet?method=showInsertRole">添加角色</a>  
  15.             </td>  
  16.         </tr>  
  17.     </table>  
  18.       
  19.     <table frame="border" width="90%">  
  20.         <tr>  
  21.             <td>角色名称</td>  
  22.             <td>角色描述</td>  
  23.             <td>角色拥有的权限</td>  
  24.             <td>操作</td>  
  25.         </tr>  
  26.         <c:forEach var="r" items="${role}">  
  27.             <tr>  
  28.                 <td>${r.name }</td>  
  29.                 <td>${r.description }</td>  
  30.                 <td>  
  31.                     <c:forEach var="p" items="${r.permissions}">  
  32.                         ${p.name }  
  33.                     </c:forEach>  
  34.                 </td>  
  35.                 <td>  
  36.                     <a href="${pageContext.request.contextPath }/servlet/manager/RoleServlet?method=showUpdateRole&id=${r.id }">分配权限</a>  
  37.                     <a href="${pageContext.request.contextPath }/servlet/manager/RoleServlet?method=deleteRole&id=${r.id }">删除</a>  
  38.                 </td>  
  39.             </tr>  
  40.         </c:forEach>  
  41.       
  42.     </table>  
  43.   </body>  
  44. </html>  

[html] view plain copy


 print?

  1. <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>  
  2. <%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>  
  3.   
  4. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">  
  5. <html>  
  6.   <head>  
  7.     <title>分配权限</title>  
  8.   </head>  
  9.     
  10.   <body>  
  11.     <form action="${pageContext.request.contextPath }/servlet/manager/ResourceServlet?method=updateResource" method="post">  
  12.     <table>  
  13.         <tr>  
  14.             <td>资源uri</td>  
  15.             <td>  
  16.                 <input type="text" name="uri" value="${requestScope.resource.uri }">  
  17.             </td>  
  18.         </tr>  
  19.         <tr>  
  20.             <td>资源描述</td>  
  21.             <td>  
  22.                 <textarea rows="3" cols="50" name="description">${requestScope.resource.description }</textarea>  
  23.             </td>  
  24.         </tr>  
  25.         <tr>  
  26.             <td>资源控制权限</td>  
  27.             <td>  
  28.                 <c:forEach var="p" items="${requestScope.permission}">  
  29.                     <input type="radio" name="pid" value="${p.id }" ${p.id==requestScope.resource.permission.id?'checked':'' }>${p.name }   
  30.                 </c:forEach>  
  31.             </td>  
  32.         </tr>  
  33.         <tr>  
  34.             <td><input type="hidden" value="${requestScope.resource.id }" name="id"></td>  
  35.             <td>  
  36.                 <input type="submit" value="添加资源">  
  37.             </td>  
  38.         </tr>  
  39.     </table>  
  40.     </form>  
  41.   </body>  
  42. </html>  

[html] view plain copy


 print?

  1. <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>  
  2. <%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>  
  3.   
  4. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">  
  5. <html>  
  6.   <head>  
  7.     <title>分配权限</title>  
  8.   </head>  
  9.     
  10.   <body>  
  11.      <form action="${pageContext.request.contextPath }/servlet/manager/RoleServlet?method=updateRole" method="post">  
  12.     <input type="hidden" name="id" value="${requestScope.role.id }">  
  13.     <input type="hidden" name="name" value="${requestScope.role.name }">  
  14.     <input type="hidden" name="description" value="${requestScope.role.description }">  
  15.     <table frame="border" width="80%">  
  16.         <tr>  
  17.             <td>角色名称</td>  
  18.             <td>${requestScope.role.name }</td>  
  19.         </tr>  
  20.           
  21.         <tr>  
  22.             <td>角色描述</td>  
  23.             <td>${requestScope.role.description }</td>  
  24.         </tr>  
  25.           
  26.         <tr>  
  27.             <td>拥有的权限</td>  
  28.             <td>  
  29.                 <c:forEach var="p" items="${requestScope.permission}">  
  30.                     <c:forEach var="rp" items="${requestScope.role.permissions}">  
  31.                         <c:if test="${p.id==rp.id}"><c:set var="choice" value="true" /></c:if>  
  32.                     </c:forEach>  
  33.                     <input type="checkbox" value="${p.id }" name="pid" ${choice=='true'?'checked':'' } />${p.name }  
  34.                     <c:remove var="choice" />  
  35.                 </c:forEach>  
  36.             </td>  
  37.         </tr>  
  38.         <tr>  
  39.             <td></td>  
  40.             <td><input type="submit" value="更新角色"></td>  
  41.         </tr>  
  42.     </table>  
  43.     </form>  
  44.   </body>  
  45. </html>  

[html] view plain copy


 print?

  1. <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>  
  2. <%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>  
  3.   
  4. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">  
  5. <html>  
  6.     <head>  
  7.         <title>分配角色</title>  
  8.     </head>  
  9.   
  10.     <body>  
  11.         <form action="${pageContext.request.contextPath }/servlet/manager/UserServlet?method=updateUser" method="post">  
  12.             <input type="hidden" name="id" value="${requestScope.user.id }" >  
  13.             <table frame="border" width="80%">  
  14.                 <tr>  
  15.                     <td>用户名称</td>  
  16.                     <td>${requestScope.user.username }</td>  
  17.                 </tr>  
  18.                 <tr>  
  19.                     <td>角色信息</td>  
  20.                     <td>  
  21.                         <c:forEach var="r" items="${requestScope.role}">  
  22.                             <c:forEach var="ur" items="${requestScope.user.roles}">  
  23.                                 <c:if test="${r.id==ur.id}"><c:set var="choice" value="true" /></c:if>  
  24.                             </c:forEach>  
  25.                             <input type="checkbox" value="${r.id }" name="rid" ${choice=='true'?'checked':'' } />${r.name }  
  26.                             <c:remove var="choice" />  
  27.                         </c:forEach>  
  28.                     </td>  
  29.                 </tr>  
  30.                 <tr>  
  31.                     <td></td>  
  32.                     <td><input type="submit" value="更新用户"></td>  
  33.                 </tr>  
  34.             </table>  
  35.         </form>  
  36.     </body>  
  37. </html>  

[html] view plain copy


 print?

  1. <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>  
  2. <%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>  
  3.   
  4. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">  
  5. <html>  
  6.   <head>  
  7.     <title>用户列表</title>  
  8.   </head>  
  9.     
  10.   <body>  
  11.      <table width="90%">  
  12.         <tr>  
  13.             <td align="right">  
  14.                 <a href="${pageContext.request.contextPath }/servlet/manager/UserServlet?method=showInsertUser">添加用户</a>  
  15.             </td>  
  16.         </tr>  
  17.     </table>  
  18.       
  19.     <table frame="border" width="90%">  
  20.         <tr>  
  21.             <td>用户名称</td>  
  22.             <td>用户拥有的角色</td>  
  23.             <td>操作</td>  
  24.         </tr>  
  25.         <c:forEach var="u" items="${requestScope.user}">  
  26.             <tr>  
  27.                 <td>${u.username }</td>  
  28.                 <td>  
  29.                     <c:forEach var="r" items="${u.roles}">  
  30.                         ${r.name }  
  31.                     </c:forEach>  
  32.                 </td>  
  33.                 <td>  
  34.                     <a href="${pageContext.request.contextPath }/servlet/manager/UserServlet?method=showUpdateUser&id=${u.id }">分配角色</a>  
  35.                     <a href="${pageContext.request.contextPath }/servlet/manager/UserServlet?method=deleteUser&id=${u.id }">删除</a>  
  36.                 </td>  
  37.             </tr>  
  38.         </c:forEach>  
  39.     </table>  
  40.   </body>  
  41. </html>  

[java] view plain copy


 print?

  1. package cn.dk.filter;  
  2.   
  3. import java.io.IOException;  
  4. import java.lang.reflect.InvocationHandler;  
  5. import java.lang.reflect.Method;  
  6. import java.lang.reflect.Proxy;  
  7. import java.util.HashMap;  
  8. import java.util.Map;  
  9. import javax.servlet.Filter;  
  10. import javax.servlet.FilterChain;  
  11. import javax.servlet.FilterConfig;  
  12. import javax.servlet.ServletException;  
  13. import javax.servlet.ServletRequest;  
  14. import javax.servlet.ServletResponse;  
  15. import javax.servlet.http.HttpServletRequest;  
  16. import javax.servlet.http.HttpServletResponse;  
  17.   
  18. public class CharacterFilter implements Filter {  
  19.   
  20.     public void destroy() {  
  21.     }  
  22.   
  23.     public void doFilter(ServletRequest r, ServletResponse re, FilterChain chain)  
  24.             throws IOException, ServletException {  
  25.         final HttpServletRequest request = (HttpServletRequest) r;  
  26.         HttpServletResponse response = (HttpServletResponse) re;  
  27.         response.setCharacterEncoding("utf-8");  
  28.         chain.doFilter((ServletRequest) Proxy.newProxyInstance(  
  29.                 CharacterFilter.class.getClassLoader(), request.getClass()  
  30.                         .getInterfaces(), new InvocationHandler() {  
  31.                     @SuppressWarnings("unchecked")  
  32.                     public Object invoke(Object proxy, Method method,  
  33.                             Object[] args) throws Throwable {  
  34.                         if (method.getName().equals("getParameter")) {  
  35.                             String value = (String) method  
  36.                                     .invoke(request, args);  
  37.                             String newValue = new String(value  
  38.                                     .getBytes("iso8859-1"), "utf-8");  
  39.                             return newValue;  
  40.                         } else if (method.getName().equals("getParameterMap")) {  
  41.                             Map<String, String[]> values = (Map<String, String[]>) method  
  42.                                     .invoke(request, args);  
  43.                             Map<String, String[]> newValues = new HashMap<String, String[]>();  
  44.                             for (Map.Entry<String, String[]> entry : values  
  45.                                     .entrySet()) {  
  46.                                 String[] value = entry.getValue();  
  47.                                 String[] newValue = new String[value.length];  
  48.                                 for (int i = 0; i < value.length; i++) {  
  49.                                     newValue[i] = new String(value[i]  
  50.                                             .getBytes("iso8859-1"), "utf-8");  
  51.                                 }  
  52.                                 newValues.put(entry.getKey(), newValue);  
  53.                             }  
  54.                             return newValues;  
  55.                         } else if (method.getName()  
  56.                                 .equals("getParameterValues")) {  
  57.                             String[] values = (String[]) method.invoke(request,  
  58.                                     args);  
  59.                             if (values == null)  
  60.                                 return null;  
  61.                             String[] newValues = new String[values.length];  
  62.                             for (int i = 0; i < values.length; i++) {  
  63.                                 newValues[i] = new String(values[i]  
  64.                                         .getBytes("iso8859-1"), "utf-8");  
  65.                             }  
  66.                             return newValues;  
  67.                         }  
  68.                         return method.invoke(request, args);  
  69.                     }  
  70.                 }), response);  
  71.     }  
  72.   
  73.     public void init(FilterConfig filterConfig) throws ServletException {  
  74.     }  
  75. }  

[java] view plain copy


 print?

  1. package cn.dk.filter;  
  2.   
  3. import java.io.IOException;  
  4. import java.util.List;  
  5. import javax.servlet.Filter;  
  6. import javax.servlet.FilterChain;  
  7. import javax.servlet.FilterConfig;  
  8. import javax.servlet.ServletException;  
  9. import javax.servlet.ServletRequest;  
  10. import javax.servlet.ServletResponse;  
  11. import javax.servlet.http.HttpServletRequest;  
  12. import javax.servlet.http.HttpServletResponse;  
  13. import cn.dk.domain.Permission;  
  14. import cn.dk.domain.Resource;  
  15. import cn.dk.domain.User;  
  16. import cn.dk.service.Service;  
  17.   
  18. public class PermissionFilter implements Filter {  
  19.   
  20.     public void destroy() {  
  21.     }  
  22.   
  23.     public void doFilter(ServletRequest r, ServletResponse re, FilterChain chain)  
  24.             throws IOException, ServletException {  
  25.   
  26.         HttpServletRequest request = (HttpServletRequest) r;  
  27.         HttpServletResponse response = (HttpServletResponse) re;  
  28.         Service service = new Service();  
  29.   
  30.         // 判断要访问的资源是否需要权限  
  31.         String requestURI = request.getRequestURI();  
  32.         requestURI = requestURI.substring(1);  
  33.         Resource resource = service.findResourceByURI(requestURI);  
  34.         // 如果不需要权限放行  
  35.         if (resource == null) {  
  36.             chain.doFilter(request, response);  
  37.             return;  
  38.         }  
  39.         Permission permission = resource.getPermission();  
  40.         // 如果需要权限验证用户是否登陆  
  41.         Object attribute = request.getSession().getAttribute("user");  
  42.         // 如果没有登录则跳转登录页面  
  43.         if (attribute == null) {  
  44.             request.getRequestDispatcher("/login/login.jsp").forward(request,  
  45.                     response);  
  46.             return;  
  47.         }  
  48.         // 如果已经登录获取用户权限  
  49.         User user = (User) attribute;  
  50.         List<Permission> userPermission = service.getUserPermission(user);  
  51.         // 如果有权访问则放行  
  52.         if (userPermission.contains(permission)) {  
  53.             chain.doFilter(request, response);  
  54.             return;  
  55.         }  
  56.         // 如果没权访问则跳转消息显示页面  
  57.         request.setAttribute("message", "对不起您没有权限");  
  58.         request.getRequestDispatcher("/WEB-INF/message/message.jsp").forward(  
  59.                 request, response);  
  60.     }  
  61.   
  62.     public void init(FilterConfig filterConfig) throws ServletException {  
  63.     }  
  64. }  

1 0
原创粉丝点击