Struts -must implement the Servlet interface (RESOLVIDO)

Prezados

Estou iniciando no Struts.

Fiz uma aplicação de teste simples com JSP e Servlets para ver se tudo estava OK referente às instalações que fiz (Eclipse + MyEclipse, com servidor Resin).

Tudo foi bem, fiz taglibs e tudo mais antes de instalar/configurar o Struts para ter certeza da integridade do ambiente.

Quando fui fazer um teste simples criando Servlets e direcionando para JSPs, começou a dar o erro:

500 Servlet Exception
All servlets must implement the Servlet interface.

Fiquei inseguro e criei um novo projeto usando um esquema pronto desse site (inclusive suas recomendações de instalação e configuração do Struts): http://www.allapplabs.com/struts/struts_example.htm
é bem simples, poucas linhas de código (está tudo lá) mas, o erro persistiu.

(no caso, o erro completo se refere ao primeiro arquivo configurado no web.xml:
[b]“WEB-INF/web.xml:33: `example.NameAction’ must implement javax.servlet.Servlet.
All servlets must implement the Servlet interface.”
[/b])

Agora não sei se o problema é da aplicação, da configuração ou do servidor.

Agradeço a atenção
abs

cara, manda pra gente seu web.xml e seu struts-config

aih vamos ver se conseguimos ajudar…

flw

Essa classe é um Servlet? Porque pelo nome, está parecendo uma Action do Struts, e isso deve ficar no struts-config.xml, não no web.xml.

Então, nenhum caminho deve ficar direto no web.xml, ele deve ter um “.do” para encaminhar para a Action do Struts q faz o redirecionamento (certo?!). Sendo assim, acho q este exemplo q achei está furado… vou procurar alguma outro mas, segue as partes alteradas dos XMLs como solicitado.
tks


web.xml

  <!-- Standard Action Servlet Configuration (with debugging) -->
  <servlet>
    <servlet-name>action</servlet-name>
    <servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
    <init-param>
      <param-name>config</param-name>
      <param-value>/WEB-INF/struts-config.xml</param-value>
    </init-param>
    <init-param>
      <param-name>debug</param-name>
      <param-value>2</param-value>
    </init-param>
    <init-param>
      <param-name>detail</param-name>
      <param-value>2</param-value>
    </init-param>
    <init-param>
      <param-name>application</param-name>
      <param-value>ApplicationResources</param-value>
    </init-param>    
    <load-on-startup>2</load-on-startup>
  </servlet>
  
  <servlet>
    <servlet-name>NameAction</servlet-name>
    <servlet-class>example.NameAction</servlet-class>
  </servlet>



  <!-- Standard Action Servlet Mapping -->
  <servlet-mapping>
    <servlet-name>action</servlet-name>
    <url-pattern>*.do</url-pattern>
  </servlet-mapping>

  <servlet-mapping>
    <servlet-name>NameAction</servlet-name>
    <url-pattern>/servlet/NameAction</url-pattern>
  </servlet-mapping>


struts-config

<form-bean name="nameForm" type="example.NameForm"/>

	<action path="/Name" type="example.NameAction" name="nameForm" input="/index.jsp">
	  	<forward name="success" path="/displayname.jsp"/>
	<forward name="failure" path="/index.jsp"/>

cara, vc nao tem q mapear suas Actions no Servlet…

arranca essa parte do seu web.xml

<servlet> <servlet-name>NameAction</servlet-name> <servlet-class>example.NameAction</servlet-class> </servlet>

isso aqui vc tb nao precisa

<servlet-mapping> <servlet-name>NameAction</servlet-name> <url-pattern>/servlet/NameAction</url-pattern> </servlet-mapping>

soh um detalhe…qual a url q vc ta tentando testar isso???

outra coisa, por vc estar tendo dificuldades com isso, vc nao deve ter experiencia com servlets/jsp, eh melhor vc ir mais simples antes de tentar utilizar o struts…

flw

então, eu tenho experiência com JSP, é q este exemplo me confundiu mas, entendi q o no web.xml é mapeado só os *.do para redirecionar aos mappings do struts-config

retirei as tags q vc falou e não deu mais erro :slight_smile:

recomecei uma nova aplicação de teste e agora estou tendo problemas com as taglibs de formulário… não tem mais “struts-form” na versão 1.2, estou pesquisando isso agora.

obrigado!!!

Alguns exemplos na net e em livros implementam o principal método da interface Action do struts como [i]perform[/i] sendo que [i]execute[/i] foi o que funcionou no meu caso (estou usando a versão 1.2).