普通用户登录后还是可以进行用户管理

普通用户登录后还是可以进行用户管理

<%@ page contentType="text/html;charset=UTF-8" language="java"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%
String basePath=request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+request.getContextPath()+"/";
%>
<!DOCTYPE html>
<html>
<head>
<base href="<%=basePath%>">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>登录页面</title>
<style type="text/css">
  .c1{
     width:300px;
     cursor:pointer;
  }
  .c2{
     width:300px;
     padding-left: 30px;
  }
</style>
</head>
<body>
<c:choose>
  <c:when test="${flag=='1'}"><!--如果flag==1,为超级管理员-->
     <div class="c1">
        <h3 onclick="show1()">用户管理</h3>
        <div class="c2" id="menu1" style="display:none;">
           <p><a href="<%=basePath%>jsp/addUser.jsp" target="main">添加管理员</a></p>
           <p><a href="<%=basePath%>selectUsersServlet" target="main">查询管理员</a></p>
        </div>
     </div>
  </c:when>
  <c:otherwise><!--否则为普通用户-->
     <h3>用户管理</h3>
  </c:otherwise>
</c:choose>
  <div class="c1">
     <h3 onclick="show2()">课程管理</h3>
     <div class="c2" id="menu2" style="display:none;">
        <p><a href="<%=basePath%>jsp/addCourse.jsp" target="main">课程添加</a></p>
        <p><a href="<%=basePath%>jsp/courseImport.jsp" target="main">课程批量导入(Excel)</a></p>
        <p><a href="<%=basePath%>ExportCourseServlet" target="main">课程导出</a></p>
        <p><a href="<%=basePath%>GetCourseServlet" target="main">课程查询</a></p>
     </div>
  </div>

  <script type="text/javascript">
     function show1(){
        var menu = document.getElementById("menu1");
        var displayStyle = menu.style.display;
        if(displayStyle=="none"){
           menu.style.display="block";
        }else{
           menu.style.display="none";
        }

     }
     function show2(){
        var menu = document.getElementById("menu2");
        var displayStyle = menu.style.display;
        if(displayStyle=="none"){
           menu.style.display="block";
        }else{
           menu.style.display="none";
        }
     }
  </script>
</body>
</html>


package com.vincent.course.servlet;

import com.vincent.course.data.CourseDaoImpl;
import com.vincent.course.data.Users;
import org.omg.PortableInterceptor.SYSTEM_EXCEPTION;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.List;
import java.util.Map;

public class LoginServlet extends HttpServlet {
   @Override
   protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
       doPost(req,resp);
   }

   @Override
   protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
       req.setCharacterEncoding("utf-8");
       resp.setCharacterEncoding("utf-8");
       //后台校验用户名、密码、验证码是否正确
       String username=req.getParameter("username");
       String password=req.getParameter("password");
       System.out.println("用户名:"+username+"\n"+"密码:"+password);
       boolean flag1=username.matches("[a-zA-Z_0-9]{3,12}");
       boolean flag2=password.matches("[a-zA-Z_0-9]{3,12}");
       if(flag1&&flag2){
           //获取用户输入的验证码
           String code1=req.getParameter("checkCode");
           //获取系统产生的验证码
           String code2= (String) req.getSession().getAttribute("kcode");
           System.out.println(code1+"==="+code2);
           if(code1!=null&&code2!=null){
               if(code1.equalsIgnoreCase(code2)){
                   //验证码正确,判断是普通用户还是超级用户
                   if(username.equals("imooc")){
                       if(password.equals("imooc")){
                           //超级用户登录成功
                           req.getSession().setAttribute("username",username);
                           req.getSession().setAttribute("flag","1");
                           resp.sendRedirect(req.getContextPath()+"/jsp/server.jsp");
                           System.out.println("超级用户登录成功!");
                           return;
                       }else{
                           //密码错误
                           req.getSession().setAttribute("msg","密码错误");
                           req.getRequestDispatcher("/jsp/index.jsp").forward(req,resp);
                           System.out.println("超级用户登录失败");
                       }
                   }else{
                       //普通用户
                       CourseDaoImpl cdi = new CourseDaoImpl();
                       int n= cdi.login(username,password);
                       if(n==0){
                           //登录成功
                           req.getSession().setAttribute("username",username);
                           resp.sendRedirect(req.getContextPath()+"/jsp/server.jsp");
                           System.out.println("普通用户登录成功");
                           return;
                       }else if(n==1){
                           //用户名或密码错误
                           req.getSession().setAttribute("msg","用户名或密码错误!");
                           req.getRequestDispatcher("/jsp/index.jsp").forward(req,resp);
                           System.out.println("普通用户登录失败!");
                       }else{
                           //用户不存在
                           req.getSession().setAttribute("msg","用户不存在!");
                           req.getRequestDispatcher("/jsp/index.jsp").forward(req,resp);
                           System.out.println("用户不存在!");
                       }
                   }
               }else{
                   //验证码错误
                   System.out.println("验证码错误!");
                   req.getSession().setAttribute("msg","验证码错误!");
                   req.getRequestDispatcher("/jsp/index.jsp").forward(req,resp);
               }
           }else {
                   //验证码为空
                   System.out.println("验证码为空!");
                   req.getSession().setAttribute("msg","请输入验证码!");
                   req.getRequestDispatcher("/jsp/index.jsp").forward(req,resp);
           }

       }else {
                   //后端验证失败
                   System.out.println("后端验证失败");
                   req.setAttribute("msg","请先登录!");
                   req.getRequestDispatcher("/jsp/index.jsp").forward(req,resp);
       }
   }
}

正在回答

登陆购买课程后可参与讨论,去登陆

1回答

同学你好,经测试,同学的代码应该是先登录的是普通用户时,并不能进行用户管理,当用超级用户登录后,再用普通用户登录,则就可以操作用户管理了。

原因是,当超级用户登录后,flag存在session中了,当再用普通用户登录时,还是会有flag=1.

所有,我们这里可以这样:

http://img1.sycdn.imooc.com//climg/5d1ef1f40001873507410225.jpg

普通用户登录时,我们给它设置成2或者其他值就可以了。这样每次请求都会重新覆盖之前的值。

如果我的回答解决了你的疑惑,请采纳!祝学习愉快!


问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
从网页搭建入门Java Web2018版
  • 参与学习           人
  • 提交作业       1088    份
  • 解答问题       10205    个

如果你有Java语言基础,又想以后从事Java Web开发,那么本路径是你的不二选择!本路径从网页搭建开始入手,通过大量案例来学习Java Web基础。定能助你完成Java Web小白的蜕变!

了解课程
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师