Redirecionar página

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…

[code]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());
    }
}[/code]

— 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…

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.

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

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…

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…

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

[code]<%@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>
Bem Vindo(a) <%= nomeU %>

%>
</td>
</tr>[/code]

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.