电信管理系统的操作思路

一、项目准备工作
1.导入数据库的驱动 jstl标签的两个驱动 jQuery 的驱动
2.在service.xml中可以改端口号  点击服务器可以clean 和clean 工作目录,清除原来的加快服务器的运行速度
3.定义一个属性文件 放置数据库的连接的驱动 
#以key=value 形式存储
jdbc_url=jdbc:mysql://localhost:3306/telecom?useUnicode=true&characterEncoding=utf-8
jdbc_driverClass=com.mysql.jdbc.Driver
jdbc_username=root
jdbc_password=123456
// 创建一个工具类 实现代码的复用  连接数据库,关闭连接 查询 增删改

二 登录校验
1.根据acname 和apwd 查询 admin 表 若是查到有结果集 则说明登录成功 若没查到登录失败
2.可以设置过滤器filter  (*.do)过滤路径为.do 结尾的 设置 request 和response 的编码 
request.setCharacterEncoding("utf-8")   response.setCharacterEncoding("utf-8")
3.在servlet 中获取 用户名和密码 传到service中 判断结果集不为空转到主页页面 为空转到失败页面
4.在jsp中 使用表单提交的方式将表单中的数据传给servlet中
5.    <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> 使用jstl的标签 <c:forEach>
6. 使用JQuery的前缀     <script type="text/javascript" src="${pageContext.request.contextPath}/js/jquery-3.6.0.js"></script>     $("#a").click .submit();
7.表单提交可以使用Jquery  页面加载时间$(function(){})

三 修改密码
1.旧密码从哪获取 在登录的时候可以把查到的用户信息封装在session 中 这样在一个会话范围里就可以获取封装在session中的值
2.旧密码可以从session中获取  也可以获取该用户的id 从而进行修改密码
3. 在servelt中 先使用 Admin admin = (Admin) session.getAttribute("admin");获取封装在session中的值、
4.从servelt中获取页面 的 旧密码 新密码 重复密码
5.判断 若旧密码的输入和session 中的旧密码一样  可以修改密码 通过admin.id 修改密码  若是不一样 跳转到修改页面继续修改 提示旧密码输入错误  在修改的时候修改成功就条转登录页面重新登录 若修改失败 跳到修改页面提示修改失败  在修改之前还可以加判断 判断新密码和重复密码一致才能进行修改 不一样提示不一样 调到修改页面


四 退出功能
1. 退出到登录页面 重新登录所以需要清空session 重新获取登录用户的信息
HttpSession session = request.getSession();
        //清除session对象
        session.invalidate();
五 修改用户信息
1.把用户的信息显示到修改的页面上 可以直接从session中获取 admin的数据 然后显示在页面上使用el表达式
2.通过aid来修改用户的姓名 电话 和email 
3. aid可以通过隐藏域的方式获取 <input  type="hidden" name="id" value="${admin.id }"/>
也可以通过Admin admin1 = (Admin) session.getAttribute("admin") 来获取aid
4. 在修改完个人信息之后需要修改session中的数据 admin1.setAname 和 atel aemail 然后将其重新
封装在session中session.setAttribute("admin", admin1);


六 使用静态包含
1. 绝对路径 /view/login.jsp   或者${pageContext.request.contextPath}
2. 使用静态包含 <%@ include file="../../include/header.jsp" %>
3.用户名     用户名:<font color="blue"  id="reaname"><b>${admin.aname }</b></font>

七登录权限
1.一个管理员对应多个角色 一个角色对应多个权限 管理员和角色是多对多关系
2.通过 aid 查询角色select * from priv where pid in(select pid from role_priv where rid in(select rid from admin_role where aid =2)) 通过aid查询到的有哪些菜单权限 然后将其放入到该用户中 在主页和导航栏中可以动态的显示该用户所拥有的菜单权限 就可实现对该用户主页权限的控制。
3. 在service层进行判断 admin !=null 说明登录成功 登录成功需要查该用户有哪些权限 把查询到的权限set 到admin中 所以admin中有了所有的菜单权限
4.所以要在导航栏和主页动态的显示该用户拥有的菜单权限 有哪些菜单权限就显示哪些权限的页面
 <c:forEach items="${admin.pl}" var="priv">
                <li><a href="${pageContext.request.contextPath}${priv.purl}"  class="${priv.pclass}_off" ></a></li>
                </c:forEach>
5、把权限的所有内容已经放入admin中的 private List《Priv》 pl  所以使用jstl 的时候只需要调用admin.pl 就可以获取整个Priv的权限集合 class 是菜单的样式 
6.可以使用     $(".information_off").attr("class","information_on");  来控制样式 改变class的属性 有off——on

=====================================================================
一、在admin中显示admin用户的信息和它拥有的角色
1.从dao层list《admin》查询所有的用户的信息 select * from admin
2. 根据aid获list《role》取用户角色的信息 select * from role where rid =(select rid from admin_role where aid=?)
3.在service层把 把获取的角色信息添加到 admin中 遍历 admin集合把aid传过去让查询语句 然后把获取的role set的集合 admin.setRole()   这admin中就有了角色的信息
//获取管理员的基本信息
          List<Admin> list = admindao.selectAllAdmin();
          //遍历用户所有的信息,包括aid
          for(Admin admin : list) {
         List<Role> listro = roledao.selectRoleByAid(admin.getId());
        //把获取到的角色信息添加到admin中
                     admin.setRole(listro);
          }
4.由于admin.jsp 中直接显示的话是没有数据的,必须从servelt中获取数据,将数据传输到jsp 中,jsp 才会数据。取出的不过是登录的信息。一般只把登录信息存在session中,其他信息存在request中,所以这里使用请求转发到jsp 中
5. 在jsp中显示从servlet中获取的数据 
6.在获取角色信息的时候课使用小技巧 在admin实体类中定义一个String的变量 来将 集合中的角色名拼接成一个字符串
7. 通过修改该String变量的get方法
private String roles
根据lr属性获取把该管理员所有拥有的所有角色名拼接在一起成为一个字符串属性 就可以直接调用这个变量的get方法就可以获取所有的角色名了
    public String getRoles() {
        String roles ="";
        if(role !=null) {
        for(Role rl : role) {
        roles += rl.getRname()+" ";
        }
        }
        return roles;
    }


二、显示角色信息
1.在添加管理员的角色中的数据是动态的因此需要从数据库中取出role表中管理员有哪些角色,select * from role
b.servelt将数据放在四大范围中,请求转发到添加页面
c.在管理员主jsp中的 添加 的链接地址改为servlet 的地址,就可以获取servlet中的数据,然后请求转发到添加也面这样数据就显示出来了。
d.使用 jstl的foreach 将数据动态的显示角色这一栏


三、 向admin中添加信息 和 向admin_role 中添加信息
1.向管理admin表中添加 管理员的信息  insert into admin(acname,,apwd,atel,aemail,createuser,createtime) values(?,?,?,?,?)
2.向admin_role 表中添加 aid 与之对应的rid 和rnname 涉及到多选  需要使用批量插入  aid 与rid是一对多的关系
insert into student(1,'张三',28),(2,'李四',27)
3.insert into admin_role(aid,rid,createuser,createtime) values
涉及到sql语句的拼接
for(Role role :rl) {
sql +="("+admin.getId()+","+role.getRid()+",'"+admin.getCreateuser()+"',STR_TO_DATE('"+admin.getCreatetime()+"' ,'%Y-%m-%d')"+"),";
        }
4. 也可以使用循环 通过循环 rid有多个 就插入多少个
for(Role role:rl){
Object[] params = {admin.getId(),role.getRid(),admin.getCreateuser(),admin.getCreatetime()};
JDBCUtil.save(sql, params);
count++;
}
5. 在service层将两个添加一起判断,也就是执行事务 由于aid是自增的 所以还需要通过acname 来查询它的aid是多少
然后把获取的aid admin.setId(aid)  
6.在servelt 层进行获取表单的数据,给封装的admin中调用set方法进行传值

7.对于复选框的操作 admin中有role的集合  所以获取的string的数组 需要先进行遍历 获取rid 把rid 封装到role对象中
在把role对象加入到role集合中 把role集合admin.setRole() 中
String[] rid = request.getParameterValues("rid");
//把获取的值加入到admin中的role集合中
List<Role> role = new ArrayList<Role>();
//遍历数组
for(String rids :rid) {
Role role1 = new Role();
//把rid添加到role 中
role1.setRid(Integer.parseInt(rids));
//在把role添加到admin中方便到获取
role.add(role1);
}
admin.setRole(role);
7. 在jsp层,涉及表单提交,action method  以及表单提交的方法,定义表单中字段的名字,方便selvelt层获取。

三(2)向admin_role 中添加数据
获取当前时间
admin.setCreatetime(new java.sql.Date(new java.util.Date().getTime()));
获取当前用户
从session中获取 
1、添加 aid,rid,createuser,createtime 这些值,由于aid与rid是一对多的关系所以要使用批量插入
insert into student(id,name,age) values(1,'张三',28),(2,'李四',27)
所以涉及sql的拼接 所以需要从admin 中角色集合中获取该角色所有的角色的id,getlr,需要遍历集合
2.由于admin 和admin_role 获取数据是同时进行的,因此可以在service进行处理 将两个添加一起判断,也就是执行事务i+j>=2;
3..从jsp 中获取复选按钮所获得值,因在页面上显示的是名字,我们只需他的值${role.id}
3..在servlet中处理数据,获取复选框的值 String【】 rid =request.getParmeterValues("rid")
然后遍历数据,把获取的rid 装到role对象中,再讲role对象添加到lr集合中,再将集合lr保存到admin中,使得
可以在dao 层中可以获取数据
4..由于aid 在存储的时候是自己增长的,所以我们需要查询admin 中刚添加管理的aid 在service层将其放入的adminsetId 中 确保 admin_role可以获取aid

四.删除管理员的信息
1.通过aid删除admin中的记录,通过aid 删除admin_role中的数据
2.在service中合并为一,进行事务操作 i+j>=2
3. 在selvelt 中获取前面要删除的aid的值,将其传到service中,判断成功了跳转到admin页面
4.通过点击删除按钮,将点击删除按钮的那一${admin.id}传过去。
5.在jsp中处理,获取要删除的aid ${admin.id} 将它传到删除的方法里,通过location.href='删除的selvlet? aid='+aid;
location.href='${pageContext.request.contextPath}/admin/delectadmin.do?aid='+aid;


五、显示修改页面的内容
1.根据修改按钮获取要修改内容的aid 通过aid 从数据库中查询admin表中的信息select * from admin where id=?
οnclick="location.href='${pageContext.request.contextPath}/admin/showUpdateAdmin.do?aid='+${admin.id};"
2.查询所有角色的信息,和通过 aid查询该用户所拥有的角色 select * from role where rid in (select rid from admin_role where aid =?)
3. 在selvelt 把这获取的内容封装到request范围 角色信息,用户信息,用户拥有的角色信息
4.在jsp页面中 现在修改时间传参把id的值传到sevlrt 中 ,在角色栏将角色信息显示出来,通过判断将该用户的角色信息显示出来
e.首先遍历角色信息 然后遍历用户角色信息 判断角色信息和用户角色是否一致 一致checked 
 <c:forEach items="${role_all }" var="role">
<li><input type="checkbox" name="rid" value="${role.rid}" 
<c:forEach items="${role_admin }" var="role1">
<c:if test="${role.rid==role1.rid }">
  checked
 </c:if>
</c:forEach>
/>${role.rname}</li>
</c:forEach>
d.修改admin_role 先删除后修改 顺序执行就行

六.修改页面内容
1. 根据id修改admin表中的内容
2.根据aid先删除admin_role 的内容然后根据aid 向admin_role 中添加数据
3.在servlet中获取表单的数据,在jsp中设置一个隐藏域,原因在显示admin信息中有id
的值,所以直接把id的值传给servlet就可以了。
把id传过去可以使用隐藏域 更加方便

七、密码重置
1.在jsp页面是使用表单提交的方式可以获取 选着的复选框的aid 
2.在servelt中 遍历这的 获取的aid的数组 放在遍历中吧把aid传过去
for(String aids :aid) {
 new AdminServiceImpl().resetAdminApwdByAid(Integer.parseInt(aids));
}
3. 在dao 中直接根据aid修改用户的密码

八,条件查询
1.还是使用表单提交的方式把用户名传到servlet中
2. 然后就是和admin页面显示一样 通过acname进行查询
 模糊查询String sql ="select * from admin where aname like";
        sql += "'%"+aname+"%'";
3.通过用户名查到的内容覆盖掉之前页面的内容就行  进行判断若是用户名为“” 就是查询所有 不为“” 就是条件查询
4. 条件查询    request.setAttribute("admins",list);
    查询全部               request.setAttribute("admins",lista);
5.进去也面就是查询全部 使用条件查询就可以修改全部查询放在四大范围的值  就可以显示出条件查询的数据


九、下拉框显示
1.同一页面的显示就可以放在同一servelt 因为是从数据库中获取的路径

十.验证码
1.在selvelt中创建一个图片 验证码就是一个图片
BufferedInmage img = new Buuffered()
2.获取画笔 给图片设置背景色
Graphiics g = new img.getGra
g.setColor  g.fillRect
3.画干扰线
g.setcolor
for(int i =0;i<30;i++){
int x =new Random(.nextInt(width)0-68
g.drawLinr(
4.生成验证码
code=“ABHDFSDFHDSDJFHJ”
vcode 存储4位验证码 放入session
for(int i=0;i<4;i++){
char c = code.charAt(new Random.nextInt(code.length()-1)
g.drawString(c+",15*i,18)
vcode+=c
}
5、存入session中
6、设置返回格式的返回流
response.setContType("img/jsp")
7/把图片放入响应流
ImageIo,write(img,""jsp,repose.getOutputStream())

=================
1.角色管理页面显示
a.从dao层查询所有的角色的信息 select * from role
b. 根据rid获取角色的权限的信息 select * from priv where pid=(select pid from role_priv where rid=?)
c.在service层把 把获取的角色的权限信息添加到 role中
d.由于role.jsp 中直接显示的话是没有数据的,必须从servelt中获取数据,将数据传输到jsp 中,jsp 才会数据。取出的不过是登录的信息。一般只把登录信息存在session中,其他信息存在request中,所以这里使用请求转发到jsp 中
e. 在jsp中显示从servlet中获取的数据 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值