1. java
  2. android
  3. c#
  4. .net
  5. javascript
  6. php
  7. jquery
  8. html
  9. sql

Java-EE - Criando filtros para Servlet. HTTP Status 404

Bom pessoal eu tenho um formulário que quando passado do método doGet para o método doPost passa por um filtro nde é retirado os espaços no inicio e no final dos campos imput. O problema é que o meu formulário não aparece na tela. Eu acredito que o problema seja com o Web.XML pois o livro que estou estudando é de 2002.

Será que alguém aqui ainda se lembra de Servlets.

Obrigado.

Segue meu Filtro

package servlet;


import java.io.IOException;
import java.util.Enumeration;

import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.annotation.WebFilter;

public class TrimFilter implements Filter {
    private FilterConfig filterConfig = null;

    @Override
    public void destroy() {
        System.out.println( "Filter destroyed." );
        this.filterConfig = null;
    }

    @Override
    public void doFilter(ServletRequest request, ServletResponse response,
            FilterChain chain) throws IOException, ServletException {
        System.out.println( "Filter" );
        Enumeration enu = request.getParameterNames();
        while( enu.hasMoreElements() ) {
            String parameterName = ( String ) enu.nextElement();
            String parameterValue = request.getParameter( parameterName );
            request.setAttribute( parameterName, parameterValue.trim() );
        }
        chain.doFilter( request, response );
    }

    @Override
    public void init(FilterConfig filterConfig) throws ServletException {
        System.out.println( "Filter initialized" );
        this.filterConfig = filterConfig;
    }

}

Segue meu servlet

package servlet;


import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * Servlet implementation class DoublyFilteredServlet
 */
@WebServlet("/TrimFilteredServlet")
public class TrimFilteredServlet extends HttpServlet {
    private static final long serialVersionUID = 1L;

    /**
     * @see HttpServlet#HttpServlet()
     */
    public TrimFilteredServlet() {
        super();
    }    

    /**
     * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
     */    
    public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        response.setContentType( "text/html" );
        PrintWriter out = response.getWriter();

        out.println( "<html>" );
        out.println( "<head>" );
        out.println( "<title>Registration Page</title>" );
        out.println( "</head>" );
        out.println( "<body>" );
        out.println( "<center>" );
        out.println( "<br /><h2>Registration Page</h2>" );
        out.println( "<br />Please enter the user details." );
        out.println( "<br />" );
        out.println( "<br /><form method=post>" );
        out.println( "<table>" );
        out.println( "<tr>" );
        out.println( "<td>First Name</td>" );
        out.println( "<td><input type=text name=firstName /></td>" );
        out.println( "</tr>" );
        out.println( "<tr>" );
        out.println( "<td>Last Name</td>" );
        out.println( "<td><input type=text name=lastName /></td>" );
        out.println( "</tr>" );
        out.println( "<tr>" );
        out.println( "<td>User Name</td>" );
        out.println( "<td><input type=text name=userName /></td>" );
        out.println( "</tr>" );
        out.println( "<tr>" );
        out.println( "<td>Password</td>" );        
        out.println( "<td><input type=password name=password /></td>" );
        out.println( "</tr>" );
        out.println( "<tr>" );
        out.println( "<td align=right colspan=2><input type=submit value=Login /></td>" );
        out.println( "</tr>" );
        out.println( "</table>" );
        out.println( "</form>" );
        out.println( "<br />" );
        out.println( "<br />" );
        out.println( "</center>" );
        out.println( "</body>" );
        out.println( "</html>" );
    }

    /**
     * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
     */
    public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        String firstName = ( String ) request.getAttribute( "firstName" );
        String lastName = ( String ) request.getAttribute( "lastName" );
        String userName = ( String ) request.getAttribute( "userName" );
        String password = ( String ) request.getAttribute( "password" );

        response.setContentType( "text/html" );
        PrintWriter out = response.getWriter();

        out.println( "<html>" );
        out.println( "<head>" );
        out.println( "<title>Registration Page</title>" );
        out.println( "</head>" );
        out.println( "<body>" );
        out.println( "<center>" );
        out.println( "<table>" );
        out.println( "<tr>" );
        out.println( "<td>First Name</td>" );
        out.println( "<td>" + firstName + "</td>" );
        out.println( "</tr>" );
        out.println( "<tr>" );
        out.println( "<td>Last Name</td>" );
        out.println( "<td>" + lastName + "</td>" );
        out.println( "</tr>" );
        out.println( "<tr>" );
        out.println( "<td>User Name</td>" );
        out.println( "<td>" + userName + "</td>" );
        out.println( "</tr>" );
        out.println( "<tr>" );
        out.println( "<td>Password</td>" );        
        out.println( "<td>" + password + "</td>" );
        out.println( "</tr>" );
        out.println( "</table>" );        

        out.println( "</center>" );
        out.println( "</body>" );
        out.println( "</html>" );
    }

}

segue meu web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
 <display-name>ServletFilterTrim</display-name>
 <welcome-file-list>
   <welcome-file>index.html</welcome-file>
   <welcome-file>index.htm</welcome-file>
   <welcome-file>index.jsp</welcome-file>
   <welcome-file>default.html</welcome-file>
   <welcome-file>default.htm</welcome-file>
   <welcome-file>default.jsp</welcome-file>
 </welcome-file-list>
  <filter>
      <filter-name>
          TrimFilter
      </filter-name>
      <filter-class>
          servlet.TrimFilter
      </filter-class>
  </filter>

  <filter-mapping>
     <filter-name>
         TrimFilter
     </filter-name>
     <servlet-name>
     /*
     </servlet-name>
  </filter-mapping>

</web-app>

A URL que devo acessar é: http://localhost:6846/ServletFilterTrim/TrimFilteredServlet, porém quando eu mapeio o servlet no Web.xml a msg que aparece no navegador: HTTP Status 404 - /ServletFilterTrim/servlet/servlet.TrimFilteredServlet No console percebe-se que a aplicação executou o filtro antes de enviar o controle para o método doPost do servlet, pois uma mensagem é mostrada na tela neste método do filtro.

  @Override
  public void init(FilterConfig filterConfig) throws ServletException {
    System.out.println( "Filter initialized" );
    this.filterConfig = filterConfig;
  }

O método destroy também é executado quando atualizo algo no código.

    @Override
    public void destroy() {
        System.out.println( "Filter destroyed." );
        this.filterConfig = null;
    }

Todos os exemplos do livro que trabalham com o arquivo web.xml não funciona e isso me leva a crer que os métodos do livro não são os mesmo usados na versão 7 do java. O livro é de 2002. Fala-se no Tomcat4 para baixo. Então pode ser que não compense trabalhar com ele muito a sério.

  • Será que ninguém consegue me ajudar não gente.

    Willian Rodrigues Andrade   29 de jan de 2015
  • No log do servidor web aparece alguma mensagem de erro?

    Roger75   29 de jan de 2015
  • Olá Roger75, não aparece nenhuma menssagem de erro. Mas o navegador fala que não encontrou o recurso. HTTP Status 404 - /ServletFilterTrim/servlet/servlet.TrimFilteredServlet No console percebe-se que a aplicação executou o recurso, pois uma mensagem é mostrada na tela neste método do filtro. @Override public void init(FilterConfig filterConfig) throws ServletException { System.out.println( "Filter initialized" ); this.filterConfig = filterConfig; }

    Willian Rodrigues Andrade   29 de jan de 2015
  • Roger75, alterei a pergunta, será que você consegue me ajudar ?

    Willian Rodrigues Andrade   29 de jan de 2015
  1. Você vai ver essas setas em qualquer página de pergunta. Com elas, você pode dizer se uma pergunta ou uma resposta foram relevantes ou não.
  2. Edite sua pergunta ou resposta caso queira alterar ou adicionar detalhes.
  3. Caso haja alguma dúvida sobre a pergunta, adicione um comentário. O espaço de respostas deve ser utilizado apenas para responder a pergunta.
  4. Se o autor da pergunta marcar uma resposta como solucionada, esta marca aparecerá.
  5. Clique aqui para mais detalhes sobre o funcionamento do GUJ!

1 resposta

Não é a resposta que estava procurando? Procure outras perguntas com as tags servlets java-ee ou faça a sua própria pergunta.