Erro no struts ajudaaaa!

24 respostas
alanclic

Erro:

HTTP Status 404 - Servlet action is not available

type Status report

message Servlet action is not available

description The requested resource (Servlet action is not available) is not available.

web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4" 
	xmlns="http://java.sun.com/xml/ns/j2ee" 
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
	xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee 
	http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">


	<servlet>
		
		<servlet-name>action</servlet-name>
		<servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
		
		<init-param>
			<param-name>application</param-name>
			<param-value>ApplicationResources</param-value>
		</init-param>
		<init-param>
			<param-name>config</param-name>
			<param-value>/WEB-INF/struts-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>
		
		<load-on-startup>2</load-on-startup>
		
	</servlet>
	
	<servlet-mapping>
		<servlet-name>action</servlet-name>
		<url-pattern>*.do</url-pattern>
	</servlet-mapping>

</web-app>

struts-config.xml

<?xml version="1.0" encoding="UTF-8"?>

< !DOCTYPE struts-config PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 1.1//EN"
"http://jakarta.apache.org/struts/dtds/struts-config_1_1.dtd" />

<struts-config>
	<form-beans>
		<form-bean name="funcionarioForm" type="org.jf.FuncionarioForm" />
	</form-beans>
	<action-mappings>
		<action type="org.jf.FuncionarioAction" 
				name="teste" 
				scope="request" 
				path="/cadastroFuncionario">
			<forward name="sucesso" path="/funcionarioForm.jsp"/>
		</action>
	</action-mappings>
</struts-config>

FuncionarioAction

package org.jf;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;

public class FuncionarioAction extends Action {
	
	public ActionForward execute(ActionMapping mapping,
								 ActionForm form,
								 HttpServletRequest request,
								 HttpServletResponse response)
								 throws Exception {
		
		return mapping.findForward("sucesso");
		
	}
	
}

FuncionarioForm

package org.jf;

import org.apache.struts.action.*;

public class FuncionarioForm extends ActionForm {
	
	private String nome;
	private String idade;
	
	public String getNome() { return this.nome; }
	public void setNome(String nome) { this.nome = nome; }
	
	public String getIdade() { return this.idade; }
	public void setIdade(String idade) { this.idade = idade; }
	
}

index.jsp //formulario

<html>
  <head>
    <title>teste</title>
  </head>
  <body>
  	<form action="cadastroFuncionario.do" method="post">
  		<input type="text" name="nome">
  		<input type="text" name="idade">
  		<input type="submit" name="submit">
  	</form>
  </body>
</html>

24 Respostas

Pedrosa

Coloque seu codigo com a tag Code, vc colocou todos jars da sua aplicação?

alanclic

sim… somente o struts.jar já que é uma app simples.

rodrigoallemand

Atente para o seu Struts config… há divergencias na tag name do action… deve ser o mesmo da declaração acima (form).

Pedrosa

Acho vc precisa desse também:

servlet-api.jar
alanclic

Fiz a alteração e continua o mesmo erro :frowning:

alanclic

servlet-api.jar esta no tomcat/commons/lib entao… nao eh isso :frowning:
ainda pra garantir tentei por no path e nda… mermo erro =/ …

Pedrosa

revise os nomes das classes e pacotes copie e cole por segurança, pode ser algum errinho de digitação.

alanclic

Eu mesmo achei um erro…
no struts-config.xml

la tah struts-xml.. troquei para struts-config.xml

porem… mesmo erro…

alanclic

nao funcionaaa! :~(

Pedrosa

Eu uso meu struts-config assim:

<action path="/xxx" type="br.com.xx.struts.action.xx" name="xxx">

tenta usar assim, não sei se ordem interfere alguma coisa

Pedrosa

Acho que identifiquei o erro:

Olha o nome do seu form-bean:

<form-bean name="funcionarioForm" type="org.jf.FuncionarioForm" />

Olha o nome que vc esta usando na action

<action type="org.jf.FuncionarioAction" name="teste" 	scope="request" 
 				path="/cadastroFuncionario">

não é teste e sim o nome do form bean: funcionarioForm

alanclic

tentei… e nda =/

pedrosa vc poderia me mandar um exemplo vc usando struts… web.xml e um struts-config.xml ?!

pq to tentando fazer isso há uns 3 dias

alanclic

vo colar como esta o codigo novamente.

Pedrosa

viu o meu ultimo post?

alanclic

web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4" 
	xmlns="http://java.sun.com/xml/ns/j2ee" 
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
	xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee 
	http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">


	<servlet>
		
		<servlet-name>action</servlet-name>
		<servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
		
		<init-param>
			<param-name>application</param-name>
			<param-value>ApplicationResources</param-value>
		</init-param>
		<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>
		
		<load-on-startup>2</load-on-startup>
		
	</servlet>
	
	<servlet-mapping>
		<servlet-name>action</servlet-name>
		<url-pattern>*.do</url-pattern>
	</servlet-mapping>

</web-app>

struts-config.xml

<?xml version="1.0" encoding="ISO-8859-1" ?>

<!DOCTYPE struts-config PUBLIC
          "-//Apache Software Foundation//DTD Struts Configuration 1.2//EN"
          "http://jakarta.apache.org/struts/dtds/struts-config_1_2.dtd">

<struts-config>
	<form-beans>
		<form-bean type="org.jf.FuncionarioForm" name="funcionarioForm" />
	</form-beans>
	<action-mappings>
		<action path="/cadastroFuncionario" 
				type="org.jf.FuncionarioAction" 
				name="funcionarioForm"
				scope="request" 
				>
			<forward name="sucesso" path="/funcionarioForm.jsp"/>
		</action>
	</action-mappings>
</struts-config>

FuncionarioAction.java

package org.jf;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;

public final class FuncionarioAction extends Action {
	
	public ActionForward execute(ActionMapping mapping,
								 ActionForm form,
								 HttpServletRequest request,
								 HttpServletResponse response)
								 throws Exception {
		
		System.out.println("teste");
		return mapping.findForward("sucesso");
		
	}
	
}

FuncionarioForm.java

package org.jf;

import org.apache.struts.action.*;

public class FuncionarioForm extends ActionForm {
	
	private String nome;
	private String idade;
	
	public String getNome() { return this.nome; }
	public void setNome(String nome) { this.nome = nome; }
	
	public String getIdade() { return this.idade; }
	public void setIdade(String idade) { this.idade = idade; }
	
}

index.jsp

<html>
  <head>
    <title>teste</title>
  </head>
  <body>
  	<form action="cadastroFuncionario.do" method="post">
  		<input type="text" name="nome">
  		<input type="text" name="idade">
  		<input type="submit" name="submit">
  	</form>
  </body>
</html>
alanclic

vi pedrosa.
por favor vc poderia olhar como esta o codigo cm algumas alterações… porem o mesmo erro.

Pedrosa

manda esse projeto zipado vou olhar aqui.

alanclic

enviado…

alanclic

resolvido galera…
um amigo ajudou…
faltava uns jars… vlww pedrosaaa. vlww a todos :smiley:

Pedrosa

Aqui funcionou cara ao enviar formulario chama uma pagina com o texto sucesso, apenas coloquei o diretorio lib dentro de WEB-INF, vc precisa colocar todos os jars necessarios como eu desconfiava.

Estou mandando o diretorio lib completo, coloque dentro do seu WEB-INF e vai funcionar.

R

Quais as libs estavam faltando ? estou com o mesmo problema e nao existe mais o que procurar TODAS as configurações estão certas… valeu…

[]s,
Renato

S

caraca, eu estou enfretando o mesmo problema, e o pior de tudo antes estava funcionando que é uma beleza…vc conseguiram alguma solução???

joaosouza

Olá alanclic blz,

Tenta modificar no seu struts-config.xml, assim:

<struts-config>
 	<form-beans>
 		<form-bean name="funcionarioForm" type="org.jf.FuncionarioForm" />
 	</form-beans>
 	<action-mappings>
 		<action type="org.jf.FuncionarioAction" 
 				name="funcionarioForm" 
 				scope="request" 
 				path="/cadastroFuncionario">
 			<forward name="sucesso" path="/funcionarioForm.jsp"/>
 		</action>
 	</action-mappings>
 </struts-config>

Onde o atributo “name” o struts irá verificar qual o form bean a action utiliza.

Espero que tenha ajudado.

A

Pessoal, habilita o seu log4J que o struts, assim como varios frameworks, joga toda pilha de erro no aquivo de log. Fica muito mais facil vcs descobrirem o erro. Ele indica exatamente o que está acontecendo, nesse caso da falta dos jars ele rapidamente lançaria um ClassNotFoundException e vc saberia que a classe x do jar y não estava lá. Espero ter ajudado.

Alberto

Criado 30 de março de 2006
Ultima resposta 23 de mai. de 2007
Respostas 24
Participantes 7