日志

事前准备

之前我们组已经写好了静态html页面,我当时被分配到的任务是写studio模块的内容。现在学了jsp,就要转换成jsp页面才可以跟进行动态交互。老师讲了servlet和过滤器之后,让我们先做从数据库读取用户信息进行登录验证。
我先把所有的html页面转化成了jsp页面,然后就先试着从数据库读取所有用户信息。findUserAll(),此函数返回一个User类型的列表。不知道为什么,我的代码就是运行不出来,后来找了组长帮我调试之后就可以了,他说我的代码没问题,只是把数据库那块的set方法删掉重写了一边就可以了。^^|||

用户登录

  • mysql数据库
    我为了查询速度提高点,传参少点,又重新写了findUserByno(String num)函数,该函数返回一个User型的一条数据。在这块数据库查询出了问题,我刚开始是这样写的
    PreparedStatement pstmt = null;
    pstmt = con.prepareStatement("select * from user where emp_no=num");
    rs = pstmt.executeQuery();

    这样写根本查询不出来,后来组长告诉我要用占位符,后来传进来的参数会替换该内容
    pstmt = con.prepareStatement("select * from user where emp_no=?");
    pstmt.setString(1, num);
    rs = pstmt.executeQuery();
  • 过滤器
    在这块我仿照老师给的例子对用户身份加了过滤器,用户是管理员(type=1)的话所有页面都可以访问,用户是普通员工(type=0)的话,不能访问到员工管理界面。所以我将登陆进去的页面写在了两个文件夹下,分别以0和1命名。在servlet里读出用户的类型,然后设置他们的权限。但是出了问题就是先以普通员工的身份登录,不能访问到员工管理界面,是正确的,然后再以管理员身份登录,都可以访问,也是正确的,但是,如果重启服务器,直接以管理员身份登录的话,0文件夹下面的页面也都不能访问。
    后来想到了在给1文件夹加过滤器的时候权限都设置为ok就可以了。
    还有就是用户在重新登录的时候应该把session清掉。之前我是在登录的servlet里清掉session,后来想到这样是不合理的,假如用户点击退出按钮

用户退出
并不进行再次登录,然后在地址栏输入网页地址,还是可以访问的,为了解决这个问题,应该在点击退出时就要清掉session,所以重新写了一个exitservlet清掉session。
至此,登录这块已经完成了,然后我就继续写演出厅模块了。

演出厅

  • 演出厅列表
    之前这块写静态页面时都是写死的,后来就要删掉从数据库中读取。我先做的是从DAO层读取数据到servlet,在servlet里获取到演出厅列表之后,把列表list写到request对象里,然后传到studio.jsp页面里,然后在jsp页面中用c:forEach语句把数据写到表格中显示。刚开始我不知道怎么写,问了平平才知道了
    <c:forEach items="${list }" var="stu" >
    <tr>
    <td>${stu.stu_id }</td>
    <td>${stu.name }</td>
    <td>${stu.introduction }</td>
    <td>
    <a class="btn btn-info btn-sm" href="info.html" role="button">详细</a>
    <a class="btn btn-warning btn-sm" href="stuchange.jsp" role="button"> 修改</a>
    <a class="btn btn-danger btn-sm" href="studio?method=delete" role="button" method="post">删除</a>
    </td>
    </tr>
    </c:forEach>

    这块的话后期再学习下jstl再回来写
  • 添加演出厅
    1. 在写正则表达式的时候演出厅名称那里忘记加上中文符号的判断,后来在网上搜了之后加上了。
    2. 在添加界面上用js验证每项输入数据是否正确,在点击提交按钮后还要再判断一下整个表单的数据填写是否正确,在这里出现了问题。
      function checkAll(){
      if(!checkname()|| !checkrow()|| !checkcol()|| !checktype())
      return false;
      else
      return true;
      }

      应该是有一项不正确就要返回false。
    3. 在验证改好之后,将表单数据在servlet里读取出来的时候出现了中文乱码的问题,组长告诉我说写一个过滤器,过滤这个项目所有文件就行了。
    4. 再后来就可以实现添加功能了,但它也只是单纯的添加,并没有考虑到重复性的问题。比如在添加演出厅时,演出厅名称不能重复,在这里应该就要用到Ajax。至于这些,我后期再慢慢做,先把基本的增、删、改、查功能实现再回来做。——–2017.12.2
  • 删除演出厅
    在删除这块没有遇到太大的问题,因为跟前期写添加的时候都差不多。就是我在删除的时候是要把演出厅的id传过去,根据id来删除,在这里我就自以为是的传过去了,但是并没有,以至于出现空指针异常。还是要学习下el表达式的有关内容。
    在修改好之后就可以进行删除操作了,在这里为了防止误操作,就要加上提示。加上一个js函数。
    function remove(id){
    if(confirm("确定要删除该演出厅")){
    window.location.href="studio?method=delete&stu_id="+id;
    }
    }

    在点击删除按钮后,执行remove函数,并且把选中演出厅的id传过去,在函数中调用servlet。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值