Redirecionar página

6 respostas
mleite

Bom dia!

Sou nova no desenvolvimento em java e preciso de uma ajuda com o Netbeans.

Estou desenvolvendo um aplicativo para web utilizando a ferramenta Netbeans e desenvolvi uma tela de login.
Criei uma classe para redireciobar a página só que não sei como chamalá ou fazer o sistema executar essa classe.

Segue minha classe para redirecionar:

Ela tem que ser executada depois do usuário clicar no botão Enviar do formulário de login...

public class redirecionaLogin extends HttpServlet {

    public void init(ServletConfig config) throws ServletException {
        super.init(config);
    }

    //Manipula o pedido Post   
    protected void doPost(HttpServletRequest req, HttpServletResponse res)
            throws ServletException, IOException {
        try {
            HttpSession session = req.getSession(true);

            if (session.isNew()) {
                String incomingURL = HttpUtils.getRequestURL(req).toString();
                String URLwithID = res.encodeURL(incomingURL);
            }

            res.setContentType("text/plain");
            String usuario = req.getParameter("txLogin"), senha = req.getParameter("txSenha");

            gedoo.conDataBase conn = new gedoo.conDataBase();
            //validar tipo de conexão
            String validaAcesso = conn.autenticaDB2(usuario, senha);

            if (!validaAcesso.isEmpty()) {
                res.sendRedirect("~/principal.jsp?usuario=" + validaAcesso + "&ativo=true");
            } else {
                res.sendRedirect("Login.jsp");
            }
        } catch (Exception e) {
            System.err.println("Msg: " + e.toString());
        }
    }

--- o txLogin e o txSenha são os campos de meu formulário que o usuário vai preencher, não sei se isso está correto dessa forma....

6 Respostas

L

Prezada MLeite,

você já aprendeu a configurar os servlets para serem acessados pelo usuário?
Quando você der uma lida nesse assunto, existe uma forma de mapear um servlet com caracteres coringa.
O que isso significa?

Que você pode criar um servlet que sempre será chamado antes de ser redirecionado para os outros servlets que você criou. Lembrando que se você não mapear o servlet no web.xml, ele não ficará visível. Logo, você pode utilizar esse poder para restringir o acesso as suas páginas.

Eu fui genérico, mas acho que o esforço de descobrir também faz parte do aprendizado, está dada a dica, se tiver mais dificuldades estamos ai.

abraços.

mleite

Olá,

Leonardo eu consegui fazer o redirecionamento usando os servlets!

A minha primeira tela se trata da tela de login, e caso o usuário consiga efetuar login vai para a tela principal. Eu coloquei uma validação na tela principal para que o usuário não acesse essa tela sem passar pela autenticação. Só que quando eu acesso a tela principal direto eu tenho o erro abaixo:

[color=darkred]SEVERE: Servlet.service() for servlet jsp threw exception

java.lang.NullPointerException

at org.apache.jsp.Principal_jsp._jspService(Principal_jsp.java:73)

at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)

at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)

at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:393)

at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:320)

at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:266)

at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)

at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)

at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)

at org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:390)

at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)

at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)

at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)

at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)

at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)

at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)

at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)

at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:263)

at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)

at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:584)

at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)

at java.lang.Thread.run(Thread.java:619)

04/05/2008 09:32:26 org.apache.catalina.core.StandardWrapperValve invoke

SEVERE: Servlet.service() for servlet jsp threw exception

java.lang.NullPointerException

at org.apache.jsp.Principal_jsp._jspService(Principal_jsp.java:73)

at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)

at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)

at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:393)

at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:320)

at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:266)

at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)

at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)

at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)

at org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:390)

at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)

at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)

at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)

at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)

at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)

at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)

at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)

at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:263)

at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)

at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:584)

at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)

at java.lang.Thread.run(Thread.java:619)[/color]

Alguém sabe o por que desse erro?

Obrigada,

Marcela

mleite

Uma outra dúvida:

Na barra de endereço aparece o link [color=blue]http://localhost:8084/redirectPrin [/color]- onde o redirectPrin é minha classe servlet - o correto seria aparecer [color=olive]http://localhost:8084/Principal.jsp [/color]- mas não sei como alterar isso…

L

java.lang.NullPointerException
at org.apache.jsp.Principal_jsp._jspService(Principal_jsp.java:73)

Esse erro eu só posso responder olhando o código. Mas a princípio, você está assumindo alguma coisa que existe e que não está lá.

Quanto ao nome que aparece, é porque provavelmente você está usando foward na pagina do redirectPRin, se você usar o sendRedirect isso vai mudar … mas particularmente não aconselho isso não…

mleite

segue código de minha página principal.jsp, não tem nada de mais:

<%@page import="javax.servlet.*"%>   
<%@page import="javax.servlet.http.*"%>   
<%@page import="java.util.ArrayList"%>   
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<jsp:useBean id="Login" class="gedoo.conDataBase" />
<%
            String user = request.getAttribute("usuario").toString();
            String pass = request.getAttribute("senha").toString();
            String tpAcesso = request.getAttribute("tpAcesso").toString();

            String valAcesso = Login.autenticaDB2(user, pass);
            if (valAcesso.isEmpty()) {
response.sendRedirect("index.jsp");
            }
            String nomeU = valAcesso;

%>

<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>Home</title>
    </head>
    <body>
        <table id="principal" border="0px">
            <tr>
                <td>
                    <b> Bem Vindo(a) &lt;%= nomeU %&gt; </b><br>
                                        %&gt;
                &lt;/td&gt;
            &lt;/tr&gt;
L

Bom o que ao meu ver está acontecendo é que você está usando

getAttribute que é um método de comunicação entre servlets quando deveria usar o
getParameter que pega o parâmetro vindo de um form html.

Fica mais fácil você pegar o erro real se você for lá no diretório work , dentro do tomcat e encontrar a pagina que disparou o erro.
Dái vc encontra a linha exata de onde ele lança a exception.

Além disso, você deveria pegar a senha de uma sessao , não do request. De qualquer forma, verifique o que eu comentei.

Criado 3 de maio de 2008
Ultima resposta 4 de mai. de 2008
Respostas 6
Participantes 2