我不能把servlet的值放在JSP页面中

时间:2017-09-22 23:20:31

标签: java jsp servlets java-ee

我正在尝试验证用户的登录名和密码,如果没有输入登录字段,密码会在屏幕上显示一条消息"请填写登录名或密码字段"或者,如果用户输入错误的用户名或密码,则会出现"不正确的登录名或密码"屏幕消息,但它不显示消息。

为什么不在jsp页面上显示消息?

protected void doPost(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {

  String vazio="Por favor preencha os campos de login ou senha"; 
   String incorretos="Login ou senha incorretos"; 

   String login = request.getParameter("login");
  String senha = request.getParameter("senha");

    Cliente cli= new Cliente();
       LoginDAO login2= new  LoginDAO();


    Cliente login_validacao=login2.validacaoLogin(login,senha);


   if(login_validacao.getLogin()==null && login_validacao.getSenha()==null){
   request.setAttribute("vazio", vazio); 

   }
   else if(login_validacao.getLogin().equals(request.getParameter("login")) 
  & login_validacao.getSenha().equals((request.getParameter("senha")))){

 RequestDispatcher rd=request.getRequestDispatcher("/index.jsp");
 rd.forward(request, response);
 }
  else{
  request.setAttribute("incorreto", incorretos); 
  }

  }

  <html>
 <head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<script src="js/jquery-1.12.0.min.js" type="text/javascript"></script>
<script src="js/jquery.maskedinput.js" type="text/javascript"></script>
<script src="js/jquery.maskedinput.min.js" type="text/javascript">
</script>

<script src="bootstrap/bootstrap.min.js" type="text/javascript">
 </script>
<script src="bootstrap/bootstrap.js" type="text/javascript"></script>
<link rel="stylesheet" href="bootstrap/bootstrap.css">
<link rel="stylesheet" href="css/css.css" type="text/css">
<link rel="stylesheet" href="css/font-awesome.min.css" type="text/css"/>
<link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.2.0/css/font-
 awesome.min.css" rel="stylesheet">
<title>JSP Page</title>
</head>

<body>
<div class="login-form">

<div class="row">
<div class="col-6 col-md-4"></div>
 <div class="col-6 col-md-4">
 <h2 id="AcesseConta"><span>Acesse sua Conta</span></h2>
 <label for="vazio_resposta">${vazio}</label>
  <label for="validacao">${incorreto}</label>
 </div>
</div>

<div class="row">
 <div class="col-6 col-md-4"></div>   
     <div class="col-6 col-md-4">
 Login:<input type="text" id="login" name="login" ><br/><br/>
 Senha:<input type="text" id="senha" name="senha" ><br/>
 <a href="">Não é cadastrado?Cadastre-se</a><br/><br/>
 </div>

</div>

<div class="row">
 <div class="col-6 col-md-4"></div>   
     <div class="col-6 col-md-4">
          <div id="teste"></div>  
   <button type="button" onclick="login()" >Entrar</button>  <button 
  type="button" onclick="" >Esqueceu a Senha?</button> 
 </div>

</div>
 </div>
</body>
</html> 

1 个答案:

答案 0 :(得分:0)

而不是使用Controller / Servlet验证HTML表单您可以在html中使用“REQUIRED”标记,如下所示。

Login:<input type="text" id="login" name="login" Required><br/><br/>
 Senha:<input type="text" id="senha" name="senha" Required><br/>

在servlet上使用代码

显示JSP上的消息

for Servlet

        if(login_validacao.getLogin()==null && login_validacao.getSenha()==null)
    {
        response.sendRedirect("login.jsp?vazio=" + URLEncoder.encode(vazio, "UTF-8"));

    }
       else if(login_validacao.getLogin().equals(request.getParameter("login")) 
      & login_validacao.getSenha().equals((request.getParameter("senha"))))
   {

     RequestDispatcher rd=request.getRequestDispatcher("/index.jsp");
     rd.forward(request, response);
   }
      else
   {
      response.sendRedirect("login.jsp?incorretos=" + URLEncoder.encode(incorretos, "UTF-8"));
    }

FOR JSP

<c:if test="${!empty vazio}">
    <p  style="color:red;" align="center">${param.vazio}</p>
</c:if>