Iniciante - Troca de dados entre Formulários

5 respostas
B

A minha dúvida é:
a interação do jsp e servlets, estou utilizando a ide netbeans e criei um servelt onde ficou dentro de webinf/classes
e criei um form jsp que ficou em exemplos/servlet
(os códigos estão abaixo), a questão é que eu não estou conseguindo referenciar o servlet através da página jsp no action do form
<FORM ACTION=“login” METHOD=“POST”> estou colocando login
que eh o nome que coloquei para o servlet preciso colocar alguma extensão a esse servlet como login.xxx ou será que tem algo errado com o meu código?

Obrigado!

servlet

package com.massa;

import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;


public class login extends HttpServlet &#123;
    
    private int NivelAcessoUsuario&#40;String p_login,String p_senha&#41;&#123;
        int l_nivelAcesso = -1;
        if&#40;&#40;p_login != null&#41;&amp;&amp;&#40;p_senha != null&#41;&#41;&#123;
            if &#40;&#40;p_login == "comun"&#41;&amp;&amp;&#40;p_senha=="comun"&#41;&#41;&#123;
               l_nivelAcesso = 2; 
            &#125; else if &#40;&#40;p_login == "adm"&#41;&amp;&amp;&#40;p_senha=="adm"&#41;&#41;&#123;
                       l_nivelAcesso = 1;
                   &#125;            
        &#125;
        return l_nivelAcesso;
    &#125;
    
   
    
    
    
   
    protected void doGet&#40;HttpServletRequest p_request, HttpServletResponse p_response&#41;
    throws ServletException, IOException &#123;
        // Definindo headers auxiliares para evitar cacheamento de página
        p_response.setHeader&#40;"Cache-Control", "no-cache, must-revalidate"&#41;;
        p_response.setHeader&#40;"Pragma", "no-cache"&#41;;
        p_response.setHeader&#40;"Expires", "Mon, 26 Jul 1997 05&#58;00&#58;00 GMT"&#41;;
        p_response.setDateHeader&#40;"Last-Modified",System.currentTimeMillis &#40;&#41;&#41;;
        // Fazendo autenticação do usuário e obtendo seu nível de acesso
        String l_login = p_request.getParameter&#40;"LOGIN"&#41;;
        String l_senha = p_request.getParameter&#40;"SENHA"&#41;;
        int i_nivelAcesso =  NivelAcessoUsuario&#40;l_login,l_senha&#41;;
        // Definindo atributos de sessão &#40;se o usuário for válido&#41;
        HttpSession l_sessao = p_request.getSession&#40;true&#41;;
        if&#40;i_nivelAcesso != -1&#41;&#123;
            l_sessao.setAttribute&#40;"LOGIN", l_login&#41;;
        &#125;
        else l_sessao.removeAttribute&#40;"LOGIN"&#41;;
        
        try &#123;
            if &#40;i_nivelAcesso == -1&#41;&#123;
                // Usuário não conseguiu se autenticar; existem duas possibilidades&#58;
                // login / senha incorretos ou usuário ainda não enviou os dados do
                // formulário &#40;simplesmente acessou a página&#41;; em ambos os casos,
                // fazemos um "forward" para a página JSP "FormLogin.jsp?
                p_request.setAttribute&#40;"Mensagem", ""&#41;;
                if&#40;&#40;l_login != null&#41;||&#40;l_senha != null&#41;&#41;
                    p_request.setAttribute&#40;"Mensagem", "Erro&#58; login e/ou senha inválido&#40;s&#41;!"&#41;;
                p_request.getRequestDispatcher&#40;"/FormLogin.jsp"&#41;.forward&#40;p_request,p_response&#41;;
                
            &#125;
            else &#123;
                  // Usuário conseguiu efetuar autenticação; apresentando a interface
                 // correspondente ao seu nível de acesso
                 p_request.setAttribute&#40;"Login",l_login&#41;;
                 if&#40;i_nivelAcesso == 1&#41; 
                     p_request.getRequestDispatcher
                    &#40;"/UsuarioComum.jsp"&#41;.forward&#40;p_request, p_response&#41;;
                    else p_request.getRequestDispatcher
                    &#40;"/Administrador.jsp"&#41;.forward&#40;p_request, p_response&#41;;
            &#125;
        &#125;catch &#40;ServletException p_e&#41; &#123;&#125;
    &#125;
    
    protected void doPost&#40;HttpServletRequest p_request, HttpServletResponse p_response&#41;
    throws ServletException, IOException &#123;
        doGet&#40;p_request, p_response&#41;;
    &#125;
    
    
&#125;

form.jsp

&lt;HTML&gt;
&lt;BODY&gt;
&lt;%= &#40;String&#41; request.getAttribute&#40;"Mensagem"&#41; %&gt;&lt;BR&gt;
&lt;FORM ACTION="login" METHOD="POST"&gt;
Login&#58; &lt;INPUT TYPE="TEXT" NAME="LOGIN"&gt;&lt;BR&gt;
Senha&#58; &lt;INPUT TYPE="PASSWORD" NAME="SENHA"&gt;&lt;BR&gt;
&lt;INPUT TYPE="SUBMIT" NAME="ENTRAR" VALUE="Entrar"&gt;&lt;BR&gt;
&lt;/FORM&gt;
&lt;/BODY&gt;&lt;/HTML&gt;

5 Respostas

D

de acordo com esta linha de codigo:

package com.massa;

o seu servlet deve estar dentro de um pacote.

assim o arquivo compilado precisa estar neste caminho:
WEb-INF\classes\com\massa\login.class

R

hum, o method não deve ser “login”? :?:

D

colocando o arquivo compilado do servlet onde disse anteriormente

eh preciso configurar o mapeamento do servlet no arquivo
WEB-INF\web.xml

pesquise sobre como fazer esse mapeamento… pq eh baseado nisso q voce faz os ‘action’ dos formularios

N

“denis_arruda”:
colocando o arquivo compilado do servlet onde disse anteriormente

eh preciso configurar o mapeamento do servlet no arquivo
WEB-INF\web.xml

pesquise sobre como fazer esse mapeamento… pq eh baseado nisso q voce faz os ‘action’ dos formularios

Isso mesmo.

E também tem um jeito diferente de chamar servlet, pelo menos no tomcat. Por exemplo :
Se o endereço do seu contexto é “teste”, pra chamar um servlet chamado “login.class” você deveria fazer : teste/servlet/login

M

Salve,

Veja só, se você estiver utilizando o Tomcat 5.x você deve incluir seu servlet na descritiva, veja só:

&lt;servlet&gt;
    &lt;servlet-name&gt;login&lt;/servlet-name&gt;
    &lt;servlet-class&gt;com.massa.login&lt;/servlet-class&gt;
&lt;/servlet&gt;

&lt;servlet-mapping&gt;                                  
  &lt;servlet-name&gt;login&lt;/servlet-name&gt;     
  &lt;url-pattern&gt;/servlet/login&lt;/url-pattern&gt;
&lt;/servlet-mapping&gt;

agora o action=’/servlet/login’ … :idea: Por convenção tuas classes devem ser nomeadas com letras iniciais maiúsculas…

:arrow: :?: :!: :twisted: :roll:

Criado 5 de fevereiro de 2005
Ultima resposta 6 de fev. de 2005
Respostas 5
Participantes 5