Redirecionar página dentro do servlet

3 respostas
J

Amgios,… eu tenho um servlet de autenticação. Aí quando ele loga, ele deveria ir pra http://localhost:8084/Geca_new/professor/professor.jsp mas dá o seguinte erro :
HTTP Status 405 - HTTP method GET is not supported by this URL

meu servlet mapping :<servlet-mapping> <servlet-name>Logar</servlet-name> <url-pattern>/professor/*</url-pattern> </servlet-mapping>

meu strust-config <action input="/loginForm.jsp" name="NovoStrutsActionForm" path="/login" scope="request" type="com.myapp.struts.NovoStrutsAction"> <forward name="success" path="/loginSuccessful.jsp"/> <forward name="professor" path="/professor/professor.jsp" /> </action>

NA hora que o strust-config tenta acessar o /professor/professor.jsp o SERVLET verifica o usuário e tem um if q diz q se o usuário tiver no banco então vá p/ professor/professor.jsp

Aguardo ajudas

3 Respostas

bcartaxo

Usa um RequestDispatcher e delega teu processamento ao jsp q tu queres.

Dá uma sacada nessa interface na api JavaEE.

Através do método forward vc faz isso tranquilamente.

Como vc está fazendo para delegar o processamento?? Estranho essa erro de GET, até pq JSP´s dão origem a servlet um tanto qt diferentes dos servlets comuns, o método service ao invés de chamar o método correspondente do HTTP (doGet, doPost, etc) chama um outro método chmado _jspService, se n me engano eh isso. Mas mostra ai teu código q daí a gente tira as conclusões. Flw.

J
esqueci de colocar o codigo do servlet :
consulta = conexao.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,
                ResultSet.CONCUR_READ_ONLY);
                resultado = consulta.executeQuery("SELECT * FROM funcionario WHERE nome_login =\'" + nomeLogin + "\'");
            
            if( resultado.first() ){
                usuario = new NovoStrutsActionForm();
                //usuario.setNameLogin(resultado.getString("nome_login"));
                usuario.setSenha(resultado.getString("senha"));
                usuario.setTipo_funcionario(resultado.getInt("cod_tipo"));
            }
                
            if(usuario == null || !usuario.getSenhaLogin().equals(senhaLogin)){
                request.getSession().setAttribute("mensagem", "Login ou Senha incorretos !");
                response.sendRedirect("loginForm.jsp");
                //response.sendRedirect("loginForm.jsp");
            } else {
                request.getSession().setAttribute("usuario", usuario);
                forw = request.getRequestDispatcher("/professor/professor.jsp");
                if(forw != null)
                    forw.forward(request,response);
                response.sendRedirect("loginOut.jsp");
            }

eu acho o problema é q o STRUTS pega o form num ACTION... esse ACTION tb deveria ser o SERVLET de autenticação... ou 1 ou outro né ?

c/ o dispacher tb n foi ! mas acho q meu problema tá no mapeamento

seufagner

Eu aconselho usar um filtro para verificar se o usuário está logado ou não.

Assim, ao tentar acessar qualquer recurso dentro do domínio da tua aplicação ele primeiro autentica o cara.

Criado 12 de maio de 2007
Ultima resposta 13 de mai. de 2007
Respostas 3
Participantes 3