Problema com mapeamento de Servlet

10 respostas
leandrosousas

Bom dia estou com um problema referente a a mapeamento de Servlet.

Para hospedagem na Locaweb eles me pediram para mapear minhas Servlet da seguinte forma.

<servlet-name>LoginServlet</servlet-name>
<url-pattern>/servlet/LoginServlet</url-pattern>

Mas dentro do Servlet

RequestDispatcher rd = request.getRequestDispatcher('menu.jsp');
rd.forward(request, response);

O servlet funcionou normalmente mas na hora de ir para pagina menu.jsp ele esta chamando assim /servlet/menu.jsp e com isso não acha minha pagina .

Alguem consegue me ajudar.??

10 Respostas

rdgms

Ué… estranho o negocio da local host…
mas de qualquer forma tenta mudar para

RequestDispatcher rd = request.getRequestDispatcher('/menu.jsp');  
rd.forward(request, response);
A

Qualquer coisa tenta com o response.sendRedirect("/pagina.jsp"); Mas embora
também pense que seja
“/” o problema.

leandrosousas

Putzzz não deu certo mesmo ele continua buscando minha JSP na pasta que a LOCAWEB pediu para eu mapear.

Existe outra forma de chamar essa JSP

Já tentei das seguintes formas.

response.sendRedirect(request.getContextPath() + '/menu.jsp');
// e assim tambem
response.sendRedirect(request.getContextPath() + 'www.laboratoriocdl.com.br/menu.jsp');

e não deu certo.

rdgms

Para qual URL ele esta redirecionando!??

marcelo.bellissimo

Tenta assim:

RequestDispatcher rd = request.getRequestDispatcher('../menu.jsp');
leandrosousas

HTTP Status 404 - /servlet/menu.jsp


type Status report

message /servlet/menu.jsp

description The requested resource (/servlet/menu.jsp) is not available.

rdgms

então é isso mesmo… é so colocar a barra que ele deveria voltar…

leandrosousas

é deveria mesmo mas não vai ainda vou colar o codigo inteiro

Web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
    <servlet>
        <servlet-name>LoginServlet</servlet-name>
        <servlet-class>desis.cdl.servlet.LoginServlet</servlet-class>
    </servlet>
    <servlet>
        <servlet-name>RelatorioServlet</servlet-name>
        <servlet-class>desis.cdl.servlet.RelatorioServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>LoginServlet</servlet-name>
        <url-pattern>/servlet/LoginServlet</url-pattern>
    </servlet-mapping>
    <servlet-mapping>
        <servlet-name>RelatorioServlet</servlet-name>
        <url-pattern>/servlet/RelatorioServlet</url-pattern>
    </servlet-mapping>
    <session-config>
        <session-timeout>
            90
        </session-timeout>
    </session-config>
    <welcome-file-list>
        <welcome-file>/index.jsp</welcome-file>
        </welcome-file-list>
    </web-app>

Servlet

public class LoginServlet extends HttpServlet {

        protected void consultarLogin(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
       response.setContentType("text/html;charset=UTF-8");
       PrintWriter out = response.getWriter();

            LoginDao dao = new LoginDao();
            String nome = request.getParameter("login");
            String senha = request.getParameter("senha");
            Login login ;
            login = dao.Logar(nome, senha);

            String pagina = "/../index.jsp" ;
            HttpSession s = request.getSession();
            s.setAttribute("login", login);

            if ( login == null ) // falho o select
               pagina = "/../naolog.jsp";
            else
               pagina = "/../menu.jsp";

       try {
           RequestDispatcher rd = request.getRequestDispatcher(pagina);
           rd.forward(request, response);
           
           }
        catch (Exception ex) {

            ex.printStackTrace();
        }
    }


    protected void doPost(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
         response.setContentType("text/html;charset=UTF-8");
        PrintWriter out = response.getWriter();
       String acao = request.getParameter("acao");


        if (acao.equals("logar")) {
           consultarLogin(request, response);
        }
      if (acao.equals("sair")) {
        //    sair(request, response);
        }
    }

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

Form do index.jsp

<form action="/servlet/LoginServlet?acao=logar" method="POST">
johnny_quest

Ok.

Você está confundindo com a URL absoluta e URL relativa.

Ao se fazer um Dispatcher para uma página e não usar Slash ‘/’, a barra,
então o Container pegará a URL da requisição, que nesse caso é /servlet/LoginServlet
e procurará a pagina menu.jsp no diretorio /servlet/.

Se você colocar a slash ‘/’ no Dispatcher, então o Container irá procurar a página no root de sua aplicação.
Se sua aplicação se chamar App então o Container irá procurar a sua página menu.jsp no diretorio
App/.

Para ter certeza, coloque como está organizado a sua aplicação, os diretorios, WEB-INF, os diretorios abaixo do root de
sua aplicação, toda a organização, que isso facilita descobrir a hierarquia e saber o porque não encontrou a sua página.

leandrosousas

Ok Obrigado a todos deu certo … na verdade so precisei mesmo por o ‘/’, oque estava acontecendo é que na locaweb a cada vez que subir o site é necessario parar o serviço TomCat via SSH para que alteresse minha aplicação !!

Flw

Criado 24 de novembro de 2010
Ultima resposta 25 de nov. de 2010
Respostas 10
Participantes 5