如下主要总结在实现系统过程当中遇到的问题和解决方法。html
1.系统的设计主要是数据库的设计。在写代码的过程当中,数据库更改了不少次,在设计某个功能的时候发现数据库不对,而后又改数据库,有的代码又要改,因此形成了实践 浪费了很多。在老师的最后一次修改意见中我才完全明白。在整个的实现中用了十二个表。首先是用户表,也就是用户登陆信息匹配的时候要用到的表,只有三个字段:学工号/密码/用户类型。在登陆的时候根据输入的用户名和密码在用户表中查询用户类型,若是查询成功,说明用户名和密码匹配,再再servlet中判断输入的用户类型和数据库中取出的用户类型是否匹配,若是相等,则说明用户信息正确,登陆成功。再根据用户类型到相应的类型表中,好比说学生表,根据用户名查询用户的姓名,放到Session中。再跳转到其它请求。java
在管理员添加用户信息的时候除了添加到用户信息表中,还要在servlet中设置用户类型,和用户密码和用户名放到用户表,即登陆表中。这样既成功添加了用户,又让用户能够登陆。数据库
<form class="form-horizontal" id="from" action="" method="post"> <h2>用户登陆</h2> <table> <tr> <td>学工号:</td> <td><input class="input-block-level" style="width:160px" type="text" name="userNumber"/></td> </tr> <tr> <td>密 码:</td> <td><input class="input-block-level" style="width:160px" type="password" name="password"/></td> </tr> <tr> <td>类 型:</td> <td style="width:160px"> <input type="radio" name="role" value="admin"/>管理员 <input type="radio" name="role" value="teacher"/>教师 <input type="radio" name="role" value="student"/>学生 </td> </tr> <tr> <td>验证码:</td> <td> <input class="input-block-level" type="text" id="input1" style="width:100px" /> <input type="button" id="checkCode" class="code" style="width:60px" onClick="createCode()" /> <a href="#" onClick="createCode()">点击刷新</a> </td> </tr> <tr> <td colspan="2" align="center"> <input class="btn btn-small btn-primary" type="submit" value="登陆" onclick="validate();" /> <input class="btn btn-small btn-primary" type="reset" value="重置"/> </td> </tr> </table> </form>
java Servlet代码:session
private void login(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException{ //获取页面表单中的数据 String userNumber = request.getParameter("userNumber"); String password = request.getParameter("password"); String role = request.getParameter("role"); //把数据传到service中,并把数据库的数据放在实体中 User user = ius.login(userNumber, password); //System.out.println(user.getRole()); //System.out.println(user.toString()); //若是user不为空,则说明用户名和密码正确,跳转到角色验证 //不然用户名和密码不匹配,则提示从新输入 if (user != null) { HttpSession session = request.getSession(); session.setAttribute("user", user); //把user放在session中 /* * //验证页面的角色和数据库的角色是否一致, * 若是页面的角色和数据库的角色一致,则登陆成功, * 若是不一致则提示用户类型错误,须要跳转到登陆页面从新输入 */ if(role.equals(user.getRole())&&role.equals("admin")){ request.getRequestDispatcher("findAllAdmin.admin").forward(request,response); }else if(role.equals(user.getRole())&&role.equals("teacher")){ request.getRequestDispatcher("teacherLogin.work").forward(request,response); }else if(role.equals(user.getRole())&&role.equals("student")){ request.getRequestDispatcher("findClassesBySNumber.work").forward(request,response); }else { response.sendRedirect("login.jsp"); } } else { response.sendRedirect("login.jsp"); } } }